Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
d33cbeeb
K
Kernel
项目概览
openeuler
/
Kernel
1 年多 前同步成功
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
d33cbeeb
编写于
8月 26, 2012
作者:
P
Patrick McHardy
提交者:
Pablo Neira Ayuso
8月 30, 2012
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
netfilter: nf_nat: support IPv6 in FTP NAT helper
Signed-off-by:
N
Patrick McHardy
<
kaber@trash.net
>
上级
ed72d9e2
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
27 addition
and
20 deletion
+27
-20
net/ipv4/netfilter/Kconfig
net/ipv4/netfilter/Kconfig
+0
-5
net/ipv4/netfilter/Makefile
net/ipv4/netfilter/Makefile
+0
-1
net/netfilter/Kconfig
net/netfilter/Kconfig
+5
-0
net/netfilter/Makefile
net/netfilter/Makefile
+3
-0
net/netfilter/nf_conntrack_ftp.c
net/netfilter/nf_conntrack_ftp.c
+1
-2
net/netfilter/nf_nat_ftp.c
net/netfilter/nf_nat_ftp.c
+18
-12
未找到文件。
net/ipv4/netfilter/Kconfig
浏览文件 @
d33cbeeb
...
...
@@ -221,11 +221,6 @@ config NF_NAT_PROTO_GRE
tristate
depends on NF_NAT_IPV4 && NF_CT_PROTO_GRE
config NF_NAT_FTP
tristate
depends on NF_CONNTRACK && NF_NAT_IPV4
default NF_NAT_IPV4 && NF_CONNTRACK_FTP
config NF_NAT_IRC
tristate
depends on NF_CONNTRACK && NF_NAT_IPV4
...
...
net/ipv4/netfilter/Makefile
浏览文件 @
d33cbeeb
...
...
@@ -21,7 +21,6 @@ obj-$(CONFIG_NF_DEFRAG_IPV4) += nf_defrag_ipv4.o
# NAT helpers (nf_conntrack)
obj-$(CONFIG_NF_NAT_AMANDA)
+=
nf_nat_amanda.o
obj-$(CONFIG_NF_NAT_FTP)
+=
nf_nat_ftp.o
obj-$(CONFIG_NF_NAT_H323)
+=
nf_nat_h323.o
obj-$(CONFIG_NF_NAT_IRC)
+=
nf_nat_irc.o
obj-$(CONFIG_NF_NAT_PPTP)
+=
nf_nat_pptp.o
...
...
net/netfilter/Kconfig
浏览文件 @
d33cbeeb
...
...
@@ -380,6 +380,11 @@ config NF_NAT_PROTO_SCTP
depends on NF_NAT && NF_CT_PROTO_SCTP
select LIBCRC32C
config NF_NAT_FTP
tristate
depends on NF_CONNTRACK && NF_NAT
default NF_NAT && NF_CONNTRACK_FTP
endif # NF_CONNTRACK
# transparent proxy support
...
...
net/netfilter/Makefile
浏览文件 @
d33cbeeb
...
...
@@ -54,6 +54,9 @@ obj-$(CONFIG_NF_NAT_PROTO_DCCP) += nf_nat_proto_dccp.o
obj-$(CONFIG_NF_NAT_PROTO_UDPLITE)
+=
nf_nat_proto_udplite.o
obj-$(CONFIG_NF_NAT_PROTO_SCTP)
+=
nf_nat_proto_sctp.o
# NAT helpers
obj-$(CONFIG_NF_NAT_FTP)
+=
nf_nat_ftp.o
# transparent proxy support
obj-$(CONFIG_NETFILTER_TPROXY)
+=
nf_tproxy_core.o
...
...
net/netfilter/nf_conntrack_ftp.c
浏览文件 @
d33cbeeb
...
...
@@ -488,8 +488,7 @@ static int help(struct sk_buff *skb,
/* Now, NAT might want to mangle the packet, and register the
* (possibly changed) expectation itself. */
nf_nat_ftp
=
rcu_dereference
(
nf_nat_ftp_hook
);
if
(
nf_nat_ftp
&&
nf_ct_l3num
(
ct
)
==
NFPROTO_IPV4
&&
ct
->
status
&
IPS_NAT_MASK
)
if
(
nf_nat_ftp
&&
ct
->
status
&
IPS_NAT_MASK
)
ret
=
nf_nat_ftp
(
skb
,
ctinfo
,
search
[
dir
][
i
].
ftptype
,
protoff
,
matchoff
,
matchlen
,
exp
);
else
{
...
...
net/
ipv4/
netfilter/nf_nat_ftp.c
→
net/netfilter/nf_nat_ftp.c
浏览文件 @
d33cbeeb
...
...
@@ -10,7 +10,7 @@
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/i
p
.h>
#include <linux/i
net
.h>
#include <linux/tcp.h>
#include <linux/netfilter_ipv4.h>
#include <net/netfilter/nf_nat.h>
...
...
@@ -26,22 +26,27 @@ MODULE_ALIAS("ip_nat_ftp");
/* FIXME: Time out? --RR */
static
int
nf_nat_ftp_fmt_cmd
(
enum
nf_ct_ftp_type
type
,
static
int
nf_nat_ftp_fmt_cmd
(
struct
nf_conn
*
ct
,
enum
nf_ct_ftp_type
type
,
char
*
buffer
,
size_t
buflen
,
__be32
addr
,
u16
port
)
union
nf_inet_addr
*
addr
,
u16
port
)
{
switch
(
type
)
{
case
NF_CT_FTP_PORT
:
case
NF_CT_FTP_PASV
:
return
snprintf
(
buffer
,
buflen
,
"%u,%u,%u,%u,%u,%u"
,
((
unsigned
char
*
)
&
addr
)[
0
],
((
unsigned
char
*
)
&
addr
)[
1
],
((
unsigned
char
*
)
&
addr
)[
2
],
((
unsigned
char
*
)
&
addr
)[
3
],
((
unsigned
char
*
)
&
addr
->
ip
)[
0
],
((
unsigned
char
*
)
&
addr
->
ip
)[
1
],
((
unsigned
char
*
)
&
addr
->
ip
)[
2
],
((
unsigned
char
*
)
&
addr
->
ip
)[
3
],
port
>>
8
,
port
&
0xFF
);
case
NF_CT_FTP_EPRT
:
return
snprintf
(
buffer
,
buflen
,
"|1|%pI4|%u|"
,
&
addr
,
port
);
if
(
nf_ct_l3num
(
ct
)
==
NFPROTO_IPV4
)
return
snprintf
(
buffer
,
buflen
,
"|1|%pI4|%u|"
,
&
addr
->
ip
,
port
);
else
return
snprintf
(
buffer
,
buflen
,
"|2|%pI6|%u|"
,
&
addr
->
ip6
,
port
);
case
NF_CT_FTP_EPSV
:
return
snprintf
(
buffer
,
buflen
,
"|||%u|"
,
port
);
}
...
...
@@ -59,17 +64,17 @@ static unsigned int nf_nat_ftp(struct sk_buff *skb,
unsigned
int
matchlen
,
struct
nf_conntrack_expect
*
exp
)
{
__be32
newip
;
union
nf_inet_addr
newaddr
;
u_int16_t
port
;
int
dir
=
CTINFO2DIR
(
ctinfo
);
struct
nf_conn
*
ct
=
exp
->
master
;
char
buffer
[
sizeof
(
"|1|
255.255.255.255|65535|"
)
];
char
buffer
[
sizeof
(
"|1|
|65535|"
)
+
INET6_ADDRSTRLEN
];
unsigned
int
buflen
;
pr_debug
(
"FTP_NAT: type %i, off %u len %u
\n
"
,
type
,
matchoff
,
matchlen
);
/* Connection will come from wherever this packet goes, hence !dir */
new
ip
=
ct
->
tuplehash
[
!
dir
].
tuple
.
dst
.
u3
.
ip
;
new
addr
=
ct
->
tuplehash
[
!
dir
].
tuple
.
dst
.
u3
;
exp
->
saved_proto
.
tcp
.
port
=
exp
->
tuple
.
dst
.
u
.
tcp
.
port
;
exp
->
dir
=
!
dir
;
...
...
@@ -94,7 +99,8 @@ static unsigned int nf_nat_ftp(struct sk_buff *skb,
if
(
port
==
0
)
return
NF_DROP
;
buflen
=
nf_nat_ftp_fmt_cmd
(
type
,
buffer
,
sizeof
(
buffer
),
newip
,
port
);
buflen
=
nf_nat_ftp_fmt_cmd
(
ct
,
type
,
buffer
,
sizeof
(
buffer
),
&
newaddr
,
port
);
if
(
!
buflen
)
goto
out
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录