Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
31b683b6
cloud-kernel
项目概览
openanolis
/
cloud-kernel
大约 1 年 前同步成功
通知
158
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
You need to sign in or sign up before continuing.
提交
31b683b6
编写于
1月 08, 2010
作者:
D
David S. Miller
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-2.6
上级
b7a9216c
dce766af
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
31 addition
and
25 deletion
+31
-25
net/bridge/netfilter/ebtables.c
net/bridge/netfilter/ebtables.c
+6
-0
net/netfilter/ipvs/Kconfig
net/netfilter/ipvs/Kconfig
+2
-1
net/netfilter/ipvs/ip_vs_ctl.c
net/netfilter/ipvs/ip_vs_ctl.c
+13
-1
net/netfilter/ipvs/ip_vs_wrr.c
net/netfilter/ipvs/ip_vs_wrr.c
+1
-14
net/netfilter/nf_conntrack_ftp.c
net/netfilter/nf_conntrack_ftp.c
+9
-9
未找到文件。
net/bridge/netfilter/ebtables.c
浏览文件 @
31b683b6
...
...
@@ -1406,6 +1406,9 @@ static int do_ebt_set_ctl(struct sock *sk,
{
int
ret
;
if
(
!
capable
(
CAP_NET_ADMIN
))
return
-
EPERM
;
switch
(
cmd
)
{
case
EBT_SO_SET_ENTRIES
:
ret
=
do_replace
(
sock_net
(
sk
),
user
,
len
);
...
...
@@ -1425,6 +1428,9 @@ static int do_ebt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len)
struct
ebt_replace
tmp
;
struct
ebt_table
*
t
;
if
(
!
capable
(
CAP_NET_ADMIN
))
return
-
EPERM
;
if
(
copy_from_user
(
&
tmp
,
user
,
sizeof
(
tmp
)))
return
-
EFAULT
;
...
...
net/netfilter/ipvs/Kconfig
浏览文件 @
31b683b6
...
...
@@ -112,7 +112,8 @@ config IP_VS_RR
module, choose M here. If unsure, say N.
config IP_VS_WRR
tristate "weighted round-robin scheduling"
tristate "weighted round-robin scheduling"
select GCD
---help---
The weighted robin-robin scheduling algorithm directs network
connections to different real servers based on server weights
...
...
net/netfilter/ipvs/ip_vs_ctl.c
浏览文件 @
31b683b6
...
...
@@ -2077,6 +2077,10 @@ do_ip_vs_set_ctl(struct sock *sk, int cmd, void __user *user, unsigned int len)
if
(
!
capable
(
CAP_NET_ADMIN
))
return
-
EPERM
;
if
(
cmd
<
IP_VS_BASE_CTL
||
cmd
>
IP_VS_SO_SET_MAX
)
return
-
EINVAL
;
if
(
len
<
0
||
len
>
MAX_ARG_LEN
)
return
-
EINVAL
;
if
(
len
!=
set_arglen
[
SET_CMDID
(
cmd
)])
{
pr_err
(
"set_ctl: len %u != %u
\n
"
,
len
,
set_arglen
[
SET_CMDID
(
cmd
)]);
...
...
@@ -2352,17 +2356,25 @@ do_ip_vs_get_ctl(struct sock *sk, int cmd, void __user *user, int *len)
{
unsigned
char
arg
[
128
];
int
ret
=
0
;
unsigned
int
copylen
;
if
(
!
capable
(
CAP_NET_ADMIN
))
return
-
EPERM
;
if
(
cmd
<
IP_VS_BASE_CTL
||
cmd
>
IP_VS_SO_GET_MAX
)
return
-
EINVAL
;
if
(
*
len
<
get_arglen
[
GET_CMDID
(
cmd
)])
{
pr_err
(
"get_ctl: len %u < %u
\n
"
,
*
len
,
get_arglen
[
GET_CMDID
(
cmd
)]);
return
-
EINVAL
;
}
if
(
copy_from_user
(
arg
,
user
,
get_arglen
[
GET_CMDID
(
cmd
)])
!=
0
)
copylen
=
get_arglen
[
GET_CMDID
(
cmd
)];
if
(
copylen
>
128
)
return
-
EINVAL
;
if
(
copy_from_user
(
arg
,
user
,
copylen
)
!=
0
)
return
-
EFAULT
;
if
(
mutex_lock_interruptible
(
&
__ip_vs_mutex
))
...
...
net/netfilter/ipvs/ip_vs_wrr.c
浏览文件 @
31b683b6
...
...
@@ -24,6 +24,7 @@
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/net.h>
#include <linux/gcd.h>
#include <net/ip_vs.h>
...
...
@@ -38,20 +39,6 @@ struct ip_vs_wrr_mark {
};
/*
* Get the gcd of server weights
*/
static
int
gcd
(
int
a
,
int
b
)
{
int
c
;
while
((
c
=
a
%
b
))
{
a
=
b
;
b
=
c
;
}
return
b
;
}
static
int
ip_vs_wrr_gcd_weight
(
struct
ip_vs_service
*
svc
)
{
struct
ip_vs_dest
*
dest
;
...
...
net/netfilter/nf_conntrack_ftp.c
浏览文件 @
31b683b6
...
...
@@ -323,24 +323,24 @@ static void update_nl_seq(struct nf_conn *ct, u32 nl_seq,
struct
nf_ct_ftp_master
*
info
,
int
dir
,
struct
sk_buff
*
skb
)
{
unsigned
int
i
,
oldest
=
NUM_SEQ_TO_REMEMBER
;
unsigned
int
i
,
oldest
;
/* Look for oldest: if we find exact match, we're done. */
for
(
i
=
0
;
i
<
info
->
seq_aft_nl_num
[
dir
];
i
++
)
{
if
(
info
->
seq_aft_nl
[
dir
][
i
]
==
nl_seq
)
return
;
if
(
oldest
==
info
->
seq_aft_nl_num
[
dir
]
||
before
(
info
->
seq_aft_nl
[
dir
][
i
],
info
->
seq_aft_nl
[
dir
][
oldest
]))
oldest
=
i
;
}
if
(
info
->
seq_aft_nl_num
[
dir
]
<
NUM_SEQ_TO_REMEMBER
)
{
info
->
seq_aft_nl
[
dir
][
info
->
seq_aft_nl_num
[
dir
]
++
]
=
nl_seq
;
}
else
if
(
oldest
!=
NUM_SEQ_TO_REMEMBER
&&
after
(
nl_seq
,
info
->
seq_aft_nl
[
dir
][
oldest
]))
{
info
->
seq_aft_nl
[
dir
][
oldest
]
=
nl_seq
;
}
else
{
if
(
before
(
info
->
seq_aft_nl
[
dir
][
0
],
info
->
seq_aft_nl
[
dir
][
1
]))
oldest
=
0
;
else
oldest
=
1
;
if
(
after
(
nl_seq
,
info
->
seq_aft_nl
[
dir
][
oldest
]))
info
->
seq_aft_nl
[
dir
][
oldest
]
=
nl_seq
;
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录