Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
1c491ba2
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
160
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看板
提交
1c491ba2
编写于
4月 03, 2015
作者:
D
David S. Miller
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
netfilter: Pass nf_hook_state through ipt_do_table().
Signed-off-by:
N
David S. Miller
<
davem@davemloft.net
>
上级
d7cf4081
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
17 addition
and
21 deletion
+17
-21
include/linux/netfilter_ipv4/ip_tables.h
include/linux/netfilter_ipv4/ip_tables.h
+1
-2
net/ipv4/netfilter/ip_tables.c
net/ipv4/netfilter/ip_tables.c
+6
-7
net/ipv4/netfilter/iptable_filter.c
net/ipv4/netfilter/iptable_filter.c
+1
-2
net/ipv4/netfilter/iptable_mangle.c
net/ipv4/netfilter/iptable_mangle.c
+6
-5
net/ipv4/netfilter/iptable_nat.c
net/ipv4/netfilter/iptable_nat.c
+1
-2
net/ipv4/netfilter/iptable_raw.c
net/ipv4/netfilter/iptable_raw.c
+1
-2
net/ipv4/netfilter/iptable_security.c
net/ipv4/netfilter/iptable_security.c
+1
-1
未找到文件。
include/linux/netfilter_ipv4/ip_tables.h
浏览文件 @
1c491ba2
...
...
@@ -65,8 +65,7 @@ struct ipt_error {
extern
void
*
ipt_alloc_initial_table
(
const
struct
xt_table
*
);
extern
unsigned
int
ipt_do_table
(
struct
sk_buff
*
skb
,
unsigned
int
hook
,
const
struct
net_device
*
in
,
const
struct
net_device
*
out
,
const
struct
nf_hook_state
*
state
,
struct
xt_table
*
table
);
#ifdef CONFIG_COMPAT
...
...
net/ipv4/netfilter/ip_tables.c
浏览文件 @
1c491ba2
...
...
@@ -288,8 +288,7 @@ struct ipt_entry *ipt_next_entry(const struct ipt_entry *entry)
unsigned
int
ipt_do_table
(
struct
sk_buff
*
skb
,
unsigned
int
hook
,
const
struct
net_device
*
in
,
const
struct
net_device
*
out
,
const
struct
nf_hook_state
*
state
,
struct
xt_table
*
table
)
{
static
const
char
nulldevname
[
IFNAMSIZ
]
__attribute__
((
aligned
(
sizeof
(
long
))));
...
...
@@ -306,8 +305,8 @@ ipt_do_table(struct sk_buff *skb,
/* Initialization */
ip
=
ip_hdr
(
skb
);
indev
=
in
?
in
->
name
:
nulldevname
;
outdev
=
out
?
out
->
name
:
nulldevname
;
indev
=
state
->
in
?
state
->
in
->
name
:
nulldevname
;
outdev
=
state
->
out
?
state
->
out
->
name
:
nulldevname
;
/* We handle fragments by dealing with the first fragment as
* if it was a normal packet. All other fragments are treated
* normally, except that they will NEVER match rules that ask
...
...
@@ -317,8 +316,8 @@ ipt_do_table(struct sk_buff *skb,
acpar
.
fragoff
=
ntohs
(
ip
->
frag_off
)
&
IP_OFFSET
;
acpar
.
thoff
=
ip_hdrlen
(
skb
);
acpar
.
hotdrop
=
false
;
acpar
.
in
=
in
;
acpar
.
out
=
out
;
acpar
.
in
=
state
->
in
;
acpar
.
out
=
state
->
out
;
acpar
.
family
=
NFPROTO_IPV4
;
acpar
.
hooknum
=
hook
;
...
...
@@ -370,7 +369,7 @@ ipt_do_table(struct sk_buff *skb,
#if IS_ENABLED(CONFIG_NETFILTER_XT_TARGET_TRACE)
/* The packet is traced: log it */
if
(
unlikely
(
skb
->
nf_trace
))
trace_packet
(
skb
,
hook
,
in
,
out
,
trace_packet
(
skb
,
hook
,
state
->
in
,
state
->
out
,
table
->
name
,
private
,
e
);
#endif
/* Standard target? */
...
...
net/ipv4/netfilter/iptable_filter.c
浏览文件 @
1c491ba2
...
...
@@ -45,8 +45,7 @@ iptable_filter_hook(const struct nf_hook_ops *ops, struct sk_buff *skb,
return
NF_ACCEPT
;
net
=
dev_net
(
state
->
in
?
state
->
in
:
state
->
out
);
return
ipt_do_table
(
skb
,
ops
->
hooknum
,
state
->
in
,
state
->
out
,
net
->
ipv4
.
iptable_filter
);
return
ipt_do_table
(
skb
,
ops
->
hooknum
,
state
,
net
->
ipv4
.
iptable_filter
);
}
static
struct
nf_hook_ops
*
filter_ops
__read_mostly
;
...
...
net/ipv4/netfilter/iptable_mangle.c
浏览文件 @
1c491ba2
...
...
@@ -37,8 +37,9 @@ static const struct xt_table packet_mangler = {
};
static
unsigned
int
ipt_mangle_out
(
struct
sk_buff
*
skb
,
const
struct
n
et_device
*
out
)
ipt_mangle_out
(
struct
sk_buff
*
skb
,
const
struct
n
f_hook_state
*
state
)
{
struct
net_device
*
out
=
state
->
out
;
unsigned
int
ret
;
const
struct
iphdr
*
iph
;
u_int8_t
tos
;
...
...
@@ -58,7 +59,7 @@ ipt_mangle_out(struct sk_buff *skb, const struct net_device *out)
daddr
=
iph
->
daddr
;
tos
=
iph
->
tos
;
ret
=
ipt_do_table
(
skb
,
NF_INET_LOCAL_OUT
,
NULL
,
out
,
ret
=
ipt_do_table
(
skb
,
NF_INET_LOCAL_OUT
,
state
,
dev_net
(
out
)
->
ipv4
.
iptable_mangle
);
/* Reroute for ANY change. */
if
(
ret
!=
NF_DROP
&&
ret
!=
NF_STOLEN
)
{
...
...
@@ -84,12 +85,12 @@ iptable_mangle_hook(const struct nf_hook_ops *ops,
const
struct
nf_hook_state
*
state
)
{
if
(
ops
->
hooknum
==
NF_INET_LOCAL_OUT
)
return
ipt_mangle_out
(
skb
,
state
->
out
);
return
ipt_mangle_out
(
skb
,
state
);
if
(
ops
->
hooknum
==
NF_INET_POST_ROUTING
)
return
ipt_do_table
(
skb
,
ops
->
hooknum
,
state
->
in
,
state
->
out
,
return
ipt_do_table
(
skb
,
ops
->
hooknum
,
state
,
dev_net
(
state
->
out
)
->
ipv4
.
iptable_mangle
);
/* PREROUTING/INPUT/FORWARD: */
return
ipt_do_table
(
skb
,
ops
->
hooknum
,
state
->
in
,
state
->
out
,
return
ipt_do_table
(
skb
,
ops
->
hooknum
,
state
,
dev_net
(
state
->
in
)
->
ipv4
.
iptable_mangle
);
}
...
...
net/ipv4/netfilter/iptable_nat.c
浏览文件 @
1c491ba2
...
...
@@ -35,8 +35,7 @@ static unsigned int iptable_nat_do_chain(const struct nf_hook_ops *ops,
{
struct
net
*
net
=
nf_ct_net
(
ct
);
return
ipt_do_table
(
skb
,
ops
->
hooknum
,
state
->
in
,
state
->
out
,
net
->
ipv4
.
nat_table
);
return
ipt_do_table
(
skb
,
ops
->
hooknum
,
state
,
net
->
ipv4
.
nat_table
);
}
static
unsigned
int
iptable_nat_ipv4_fn
(
const
struct
nf_hook_ops
*
ops
,
...
...
net/ipv4/netfilter/iptable_raw.c
浏览文件 @
1c491ba2
...
...
@@ -32,8 +32,7 @@ iptable_raw_hook(const struct nf_hook_ops *ops, struct sk_buff *skb,
return
NF_ACCEPT
;
net
=
dev_net
(
state
->
in
?
state
->
in
:
state
->
out
);
return
ipt_do_table
(
skb
,
ops
->
hooknum
,
state
->
in
,
state
->
out
,
net
->
ipv4
.
iptable_raw
);
return
ipt_do_table
(
skb
,
ops
->
hooknum
,
state
,
net
->
ipv4
.
iptable_raw
);
}
static
struct
nf_hook_ops
*
rawtable_ops
__read_mostly
;
...
...
net/ipv4/netfilter/iptable_security.c
浏览文件 @
1c491ba2
...
...
@@ -49,7 +49,7 @@ iptable_security_hook(const struct nf_hook_ops *ops, struct sk_buff *skb,
return
NF_ACCEPT
;
net
=
dev_net
(
state
->
in
?
state
->
in
:
state
->
out
);
return
ipt_do_table
(
skb
,
ops
->
hooknum
,
state
->
in
,
state
->
out
,
return
ipt_do_table
(
skb
,
ops
->
hooknum
,
state
,
net
->
ipv4
.
iptable_security
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录