提交 000efe1d 编写于 作者: G Gary Wayne Smith 提交者: David S. Miller

[NETFILTER]: Make NETMAP target usable in OUTPUT

Signed-off-by: NGary Wayne Smith <gary.w.smith@primeexalia.com>
Signed-off-by: NPatrick McHardy <kaber@trash.net>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 9baa5c67
...@@ -46,7 +46,8 @@ check(const char *tablename, ...@@ -46,7 +46,8 @@ check(const char *tablename,
DEBUGP(MODULENAME":check: size %u.\n", targinfosize); DEBUGP(MODULENAME":check: size %u.\n", targinfosize);
return 0; return 0;
} }
if (hook_mask & ~((1 << NF_IP_PRE_ROUTING) | (1 << NF_IP_POST_ROUTING))) { if (hook_mask & ~((1 << NF_IP_PRE_ROUTING) | (1 << NF_IP_POST_ROUTING) |
(1 << NF_IP_LOCAL_OUT))) {
DEBUGP(MODULENAME":check: bad hooks %x.\n", hook_mask); DEBUGP(MODULENAME":check: bad hooks %x.\n", hook_mask);
return 0; return 0;
} }
...@@ -76,12 +77,13 @@ target(struct sk_buff **pskb, ...@@ -76,12 +77,13 @@ target(struct sk_buff **pskb,
struct ip_nat_range newrange; struct ip_nat_range newrange;
IP_NF_ASSERT(hooknum == NF_IP_PRE_ROUTING IP_NF_ASSERT(hooknum == NF_IP_PRE_ROUTING
|| hooknum == NF_IP_POST_ROUTING); || hooknum == NF_IP_POST_ROUTING
|| hooknum == NF_IP_LOCAL_OUT);
ct = ip_conntrack_get(*pskb, &ctinfo); ct = ip_conntrack_get(*pskb, &ctinfo);
netmask = ~(mr->range[0].min_ip ^ mr->range[0].max_ip); netmask = ~(mr->range[0].min_ip ^ mr->range[0].max_ip);
if (hooknum == NF_IP_PRE_ROUTING) if (hooknum == NF_IP_PRE_ROUTING || hooknum == NF_IP_LOCAL_OUT)
new_ip = (*pskb)->nh.iph->daddr & ~netmask; new_ip = (*pskb)->nh.iph->daddr & ~netmask;
else else
new_ip = (*pskb)->nh.iph->saddr & ~netmask; new_ip = (*pskb)->nh.iph->saddr & ~netmask;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册