[NETFILTER]: Introduce NF_INET_ hook values
The IPv4 and IPv6 hook values are identical, yet some code tries to figure out the "correct" value by looking at the address family. Introduce NF_INET_* values for both IPv4 and IPv6. The old values are kept in a #ifndef __KERNEL__ section for userspace compatibility. Signed-off-by: Patrick McHardy <kaber@trash.net> Acked-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
1bf06cd2e3
commit
6e23ae2a48
@@ -134,7 +134,8 @@ int ipv6_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt
|
||||
|
||||
rcu_read_unlock();
|
||||
|
||||
return NF_HOOK(PF_INET6,NF_IP6_PRE_ROUTING, skb, dev, NULL, ip6_rcv_finish);
|
||||
return NF_HOOK(PF_INET6, NF_INET_PRE_ROUTING, skb, dev, NULL,
|
||||
ip6_rcv_finish);
|
||||
err:
|
||||
IP6_INC_STATS_BH(idev, IPSTATS_MIB_INHDRERRORS);
|
||||
drop:
|
||||
@@ -229,7 +230,8 @@ discard:
|
||||
|
||||
int ip6_input(struct sk_buff *skb)
|
||||
{
|
||||
return NF_HOOK(PF_INET6,NF_IP6_LOCAL_IN, skb, skb->dev, NULL, ip6_input_finish);
|
||||
return NF_HOOK(PF_INET6, NF_INET_LOCAL_IN, skb, skb->dev, NULL,
|
||||
ip6_input_finish);
|
||||
}
|
||||
|
||||
int ip6_mc_input(struct sk_buff *skb)
|
||||
|
||||
@@ -79,7 +79,7 @@ int __ip6_local_out(struct sk_buff *skb)
|
||||
len = 0;
|
||||
ipv6_hdr(skb)->payload_len = htons(len);
|
||||
|
||||
return nf_hook(PF_INET6, NF_IP6_LOCAL_OUT, skb, NULL, skb->dst->dev,
|
||||
return nf_hook(PF_INET6, NF_INET_LOCAL_OUT, skb, NULL, skb->dst->dev,
|
||||
dst_output);
|
||||
}
|
||||
|
||||
@@ -145,8 +145,8 @@ static int ip6_output2(struct sk_buff *skb)
|
||||
is not supported in any case.
|
||||
*/
|
||||
if (newskb)
|
||||
NF_HOOK(PF_INET6, NF_IP6_POST_ROUTING, newskb, NULL,
|
||||
newskb->dev,
|
||||
NF_HOOK(PF_INET6, NF_INET_POST_ROUTING, newskb,
|
||||
NULL, newskb->dev,
|
||||
ip6_dev_loopback_xmit);
|
||||
|
||||
if (ipv6_hdr(skb)->hop_limit == 0) {
|
||||
@@ -159,7 +159,8 @@ static int ip6_output2(struct sk_buff *skb)
|
||||
IP6_INC_STATS(idev, IPSTATS_MIB_OUTMCASTPKTS);
|
||||
}
|
||||
|
||||
return NF_HOOK(PF_INET6, NF_IP6_POST_ROUTING, skb,NULL, skb->dev,ip6_output_finish);
|
||||
return NF_HOOK(PF_INET6, NF_INET_POST_ROUTING, skb, NULL, skb->dev,
|
||||
ip6_output_finish);
|
||||
}
|
||||
|
||||
static inline int ip6_skb_dst_mtu(struct sk_buff *skb)
|
||||
@@ -261,7 +262,7 @@ int ip6_xmit(struct sock *sk, struct sk_buff *skb, struct flowi *fl,
|
||||
if ((skb->len <= mtu) || ipfragok || skb_is_gso(skb)) {
|
||||
IP6_INC_STATS(ip6_dst_idev(skb->dst),
|
||||
IPSTATS_MIB_OUTREQUESTS);
|
||||
return NF_HOOK(PF_INET6, NF_IP6_LOCAL_OUT, skb, NULL, dst->dev,
|
||||
return NF_HOOK(PF_INET6, NF_INET_LOCAL_OUT, skb, NULL, dst->dev,
|
||||
dst_output);
|
||||
}
|
||||
|
||||
@@ -525,7 +526,8 @@ int ip6_forward(struct sk_buff *skb)
|
||||
hdr->hop_limit--;
|
||||
|
||||
IP6_INC_STATS_BH(ip6_dst_idev(dst), IPSTATS_MIB_OUTFORWDATAGRAMS);
|
||||
return NF_HOOK(PF_INET6,NF_IP6_FORWARD, skb, skb->dev, dst->dev, ip6_forward_finish);
|
||||
return NF_HOOK(PF_INET6, NF_INET_FORWARD, skb, skb->dev, dst->dev,
|
||||
ip6_forward_finish);
|
||||
|
||||
error:
|
||||
IP6_INC_STATS_BH(ip6_dst_idev(dst), IPSTATS_MIB_INADDRERRORS);
|
||||
|
||||
@@ -1448,7 +1448,7 @@ static inline int mld_dev_queue_xmit2(struct sk_buff *skb)
|
||||
|
||||
static inline int mld_dev_queue_xmit(struct sk_buff *skb)
|
||||
{
|
||||
return NF_HOOK(PF_INET6, NF_IP6_POST_ROUTING, skb, NULL, skb->dev,
|
||||
return NF_HOOK(PF_INET6, NF_INET_POST_ROUTING, skb, NULL, skb->dev,
|
||||
mld_dev_queue_xmit2);
|
||||
}
|
||||
|
||||
@@ -1469,7 +1469,7 @@ static void mld_sendpack(struct sk_buff *skb)
|
||||
pmr->csum = csum_ipv6_magic(&pip6->saddr, &pip6->daddr, mldlen,
|
||||
IPPROTO_ICMPV6, csum_partial(skb_transport_header(skb),
|
||||
mldlen, 0));
|
||||
err = NF_HOOK(PF_INET6, NF_IP6_LOCAL_OUT, skb, NULL, skb->dev,
|
||||
err = NF_HOOK(PF_INET6, NF_INET_LOCAL_OUT, skb, NULL, skb->dev,
|
||||
mld_dev_queue_xmit);
|
||||
if (!err) {
|
||||
ICMP6MSGOUT_INC_STATS_BH(idev, ICMPV6_MLD2_REPORT);
|
||||
@@ -1813,7 +1813,7 @@ static void igmp6_send(struct in6_addr *addr, struct net_device *dev, int type)
|
||||
|
||||
idev = in6_dev_get(skb->dev);
|
||||
|
||||
err = NF_HOOK(PF_INET6, NF_IP6_LOCAL_OUT, skb, NULL, skb->dev,
|
||||
err = NF_HOOK(PF_INET6, NF_INET_LOCAL_OUT, skb, NULL, skb->dev,
|
||||
mld_dev_queue_xmit);
|
||||
if (!err) {
|
||||
ICMP6MSGOUT_INC_STATS(idev, type);
|
||||
|
||||
@@ -533,7 +533,8 @@ static void __ndisc_send(struct net_device *dev,
|
||||
idev = in6_dev_get(dst->dev);
|
||||
IP6_INC_STATS(idev, IPSTATS_MIB_OUTREQUESTS);
|
||||
|
||||
err = NF_HOOK(PF_INET6, NF_IP6_LOCAL_OUT, skb, NULL, dst->dev, dst_output);
|
||||
err = NF_HOOK(PF_INET6, NF_INET_LOCAL_OUT, skb, NULL, dst->dev,
|
||||
dst_output);
|
||||
if (!err) {
|
||||
ICMP6MSGOUT_INC_STATS(idev, type);
|
||||
ICMP6_INC_STATS(idev, ICMP6_MIB_OUTMSGS);
|
||||
@@ -1538,7 +1539,8 @@ void ndisc_send_redirect(struct sk_buff *skb, struct neighbour *neigh,
|
||||
buff->dst = dst;
|
||||
idev = in6_dev_get(dst->dev);
|
||||
IP6_INC_STATS(idev, IPSTATS_MIB_OUTREQUESTS);
|
||||
err = NF_HOOK(PF_INET6, NF_IP6_LOCAL_OUT, buff, NULL, dst->dev, dst_output);
|
||||
err = NF_HOOK(PF_INET6, NF_INET_LOCAL_OUT, buff, NULL, dst->dev,
|
||||
dst_output);
|
||||
if (!err) {
|
||||
ICMP6MSGOUT_INC_STATS(idev, NDISC_REDIRECT);
|
||||
ICMP6_INC_STATS(idev, ICMP6_MIB_OUTMSGS);
|
||||
|
||||
@@ -60,7 +60,7 @@ static void nf_ip6_saveroute(const struct sk_buff *skb, struct nf_info *info)
|
||||
{
|
||||
struct ip6_rt_info *rt_info = nf_info_reroute(info);
|
||||
|
||||
if (info->hook == NF_IP6_LOCAL_OUT) {
|
||||
if (info->hook == NF_INET_LOCAL_OUT) {
|
||||
struct ipv6hdr *iph = ipv6_hdr(skb);
|
||||
|
||||
rt_info->daddr = iph->daddr;
|
||||
@@ -72,7 +72,7 @@ static int nf_ip6_reroute(struct sk_buff *skb, const struct nf_info *info)
|
||||
{
|
||||
struct ip6_rt_info *rt_info = nf_info_reroute(info);
|
||||
|
||||
if (info->hook == NF_IP6_LOCAL_OUT) {
|
||||
if (info->hook == NF_INET_LOCAL_OUT) {
|
||||
struct ipv6hdr *iph = ipv6_hdr(skb);
|
||||
if (!ipv6_addr_equal(&iph->daddr, &rt_info->daddr) ||
|
||||
!ipv6_addr_equal(&iph->saddr, &rt_info->saddr))
|
||||
@@ -89,7 +89,7 @@ __sum16 nf_ip6_checksum(struct sk_buff *skb, unsigned int hook,
|
||||
|
||||
switch (skb->ip_summed) {
|
||||
case CHECKSUM_COMPLETE:
|
||||
if (hook != NF_IP6_PRE_ROUTING && hook != NF_IP6_LOCAL_IN)
|
||||
if (hook != NF_INET_PRE_ROUTING && hook != NF_INET_LOCAL_IN)
|
||||
break;
|
||||
if (!csum_ipv6_magic(&ip6h->saddr, &ip6h->daddr,
|
||||
skb->len - dataoff, protocol,
|
||||
|
||||
@@ -258,11 +258,11 @@ unconditional(const struct ip6t_ip6 *ipv6)
|
||||
defined(CONFIG_NETFILTER_XT_TARGET_TRACE_MODULE)
|
||||
/* This cries for unification! */
|
||||
static const char *hooknames[] = {
|
||||
[NF_IP6_PRE_ROUTING] = "PREROUTING",
|
||||
[NF_IP6_LOCAL_IN] = "INPUT",
|
||||
[NF_IP6_FORWARD] = "FORWARD",
|
||||
[NF_IP6_LOCAL_OUT] = "OUTPUT",
|
||||
[NF_IP6_POST_ROUTING] = "POSTROUTING",
|
||||
[NF_INET_PRE_ROUTING] = "PREROUTING",
|
||||
[NF_INET_LOCAL_IN] = "INPUT",
|
||||
[NF_INET_FORWARD] = "FORWARD",
|
||||
[NF_INET_LOCAL_OUT] = "OUTPUT",
|
||||
[NF_INET_POST_ROUTING] = "POSTROUTING",
|
||||
};
|
||||
|
||||
enum nf_ip_trace_comments {
|
||||
@@ -502,7 +502,7 @@ mark_source_chains(struct xt_table_info *newinfo,
|
||||
|
||||
/* No recursion; use packet counter to save back ptrs (reset
|
||||
to 0 as we leave), and comefrom to save source hook bitmask */
|
||||
for (hook = 0; hook < NF_IP6_NUMHOOKS; hook++) {
|
||||
for (hook = 0; hook < NF_INET_NUMHOOKS; hook++) {
|
||||
unsigned int pos = newinfo->hook_entry[hook];
|
||||
struct ip6t_entry *e
|
||||
= (struct ip6t_entry *)(entry0 + pos);
|
||||
@@ -518,13 +518,13 @@ mark_source_chains(struct xt_table_info *newinfo,
|
||||
struct ip6t_standard_target *t
|
||||
= (void *)ip6t_get_target(e);
|
||||
|
||||
if (e->comefrom & (1 << NF_IP6_NUMHOOKS)) {
|
||||
if (e->comefrom & (1 << NF_INET_NUMHOOKS)) {
|
||||
printk("iptables: loop hook %u pos %u %08X.\n",
|
||||
hook, pos, e->comefrom);
|
||||
return 0;
|
||||
}
|
||||
e->comefrom
|
||||
|= ((1 << hook) | (1 << NF_IP6_NUMHOOKS));
|
||||
|= ((1 << hook) | (1 << NF_INET_NUMHOOKS));
|
||||
|
||||
/* Unconditional return/END. */
|
||||
if ((e->target_offset == sizeof(struct ip6t_entry)
|
||||
@@ -544,10 +544,10 @@ mark_source_chains(struct xt_table_info *newinfo,
|
||||
/* Return: backtrack through the last
|
||||
big jump. */
|
||||
do {
|
||||
e->comefrom ^= (1<<NF_IP6_NUMHOOKS);
|
||||
e->comefrom ^= (1<<NF_INET_NUMHOOKS);
|
||||
#ifdef DEBUG_IP_FIREWALL_USER
|
||||
if (e->comefrom
|
||||
& (1 << NF_IP6_NUMHOOKS)) {
|
||||
& (1 << NF_INET_NUMHOOKS)) {
|
||||
duprintf("Back unset "
|
||||
"on hook %u "
|
||||
"rule %u\n",
|
||||
@@ -746,7 +746,7 @@ check_entry_size_and_hooks(struct ip6t_entry *e,
|
||||
}
|
||||
|
||||
/* Check hooks & underflows */
|
||||
for (h = 0; h < NF_IP6_NUMHOOKS; h++) {
|
||||
for (h = 0; h < NF_INET_NUMHOOKS; h++) {
|
||||
if ((unsigned char *)e - base == hook_entries[h])
|
||||
newinfo->hook_entry[h] = hook_entries[h];
|
||||
if ((unsigned char *)e - base == underflows[h])
|
||||
@@ -800,7 +800,7 @@ translate_table(const char *name,
|
||||
newinfo->number = number;
|
||||
|
||||
/* Init all hooks to impossible value. */
|
||||
for (i = 0; i < NF_IP6_NUMHOOKS; i++) {
|
||||
for (i = 0; i < NF_INET_NUMHOOKS; i++) {
|
||||
newinfo->hook_entry[i] = 0xFFFFFFFF;
|
||||
newinfo->underflow[i] = 0xFFFFFFFF;
|
||||
}
|
||||
@@ -824,7 +824,7 @@ translate_table(const char *name,
|
||||
}
|
||||
|
||||
/* Check hooks all assigned */
|
||||
for (i = 0; i < NF_IP6_NUMHOOKS; i++) {
|
||||
for (i = 0; i < NF_INET_NUMHOOKS; i++) {
|
||||
/* Only hooks which are valid */
|
||||
if (!(valid_hooks & (1 << i)))
|
||||
continue;
|
||||
|
||||
@@ -164,7 +164,7 @@ static void send_reset(struct sk_buff *oldskb)
|
||||
static inline void
|
||||
send_unreach(struct sk_buff *skb_in, unsigned char code, unsigned int hooknum)
|
||||
{
|
||||
if (hooknum == NF_IP6_LOCAL_OUT && skb_in->dev == NULL)
|
||||
if (hooknum == NF_INET_LOCAL_OUT && skb_in->dev == NULL)
|
||||
skb_in->dev = init_net.loopback_dev;
|
||||
|
||||
icmpv6_send(skb_in, ICMPV6_DEST_UNREACH, code, 0, NULL);
|
||||
@@ -243,8 +243,8 @@ static struct xt_target ip6t_reject_reg __read_mostly = {
|
||||
.target = reject6_target,
|
||||
.targetsize = sizeof(struct ip6t_reject_info),
|
||||
.table = "filter",
|
||||
.hooks = (1 << NF_IP6_LOCAL_IN) | (1 << NF_IP6_FORWARD) |
|
||||
(1 << NF_IP6_LOCAL_OUT),
|
||||
.hooks = (1 << NF_INET_LOCAL_IN) | (1 << NF_INET_FORWARD) |
|
||||
(1 << NF_INET_LOCAL_OUT),
|
||||
.checkentry = check,
|
||||
.me = THIS_MODULE
|
||||
};
|
||||
|
||||
@@ -67,8 +67,8 @@ static struct xt_match eui64_match __read_mostly = {
|
||||
.family = AF_INET6,
|
||||
.match = match,
|
||||
.matchsize = sizeof(int),
|
||||
.hooks = (1 << NF_IP6_PRE_ROUTING) | (1 << NF_IP6_LOCAL_IN) |
|
||||
(1 << NF_IP6_FORWARD),
|
||||
.hooks = (1 << NF_INET_PRE_ROUTING) | (1 << NF_INET_LOCAL_IN) |
|
||||
(1 << NF_INET_FORWARD),
|
||||
.me = THIS_MODULE,
|
||||
};
|
||||
|
||||
|
||||
@@ -73,7 +73,8 @@ static struct xt_match owner_match __read_mostly = {
|
||||
.family = AF_INET6,
|
||||
.match = match,
|
||||
.matchsize = sizeof(struct ip6t_owner_info),
|
||||
.hooks = (1 << NF_IP6_LOCAL_OUT) | (1 << NF_IP6_POST_ROUTING),
|
||||
.hooks = (1 << NF_INET_LOCAL_OUT) |
|
||||
(1 << NF_INET_POST_ROUTING),
|
||||
.checkentry = checkentry,
|
||||
.me = THIS_MODULE,
|
||||
};
|
||||
|
||||
@@ -17,7 +17,9 @@ MODULE_LICENSE("GPL");
|
||||
MODULE_AUTHOR("Netfilter Core Team <coreteam@netfilter.org>");
|
||||
MODULE_DESCRIPTION("ip6tables filter table");
|
||||
|
||||
#define FILTER_VALID_HOOKS ((1 << NF_IP6_LOCAL_IN) | (1 << NF_IP6_FORWARD) | (1 << NF_IP6_LOCAL_OUT))
|
||||
#define FILTER_VALID_HOOKS ((1 << NF_INET_LOCAL_IN) | \
|
||||
(1 << NF_INET_FORWARD) | \
|
||||
(1 << NF_INET_LOCAL_OUT))
|
||||
|
||||
static struct
|
||||
{
|
||||
@@ -31,14 +33,14 @@ static struct
|
||||
.num_entries = 4,
|
||||
.size = sizeof(struct ip6t_standard) * 3 + sizeof(struct ip6t_error),
|
||||
.hook_entry = {
|
||||
[NF_IP6_LOCAL_IN] = 0,
|
||||
[NF_IP6_FORWARD] = sizeof(struct ip6t_standard),
|
||||
[NF_IP6_LOCAL_OUT] = sizeof(struct ip6t_standard) * 2
|
||||
[NF_INET_LOCAL_IN] = 0,
|
||||
[NF_INET_FORWARD] = sizeof(struct ip6t_standard),
|
||||
[NF_INET_LOCAL_OUT] = sizeof(struct ip6t_standard) * 2
|
||||
},
|
||||
.underflow = {
|
||||
[NF_IP6_LOCAL_IN] = 0,
|
||||
[NF_IP6_FORWARD] = sizeof(struct ip6t_standard),
|
||||
[NF_IP6_LOCAL_OUT] = sizeof(struct ip6t_standard) * 2
|
||||
[NF_INET_LOCAL_IN] = 0,
|
||||
[NF_INET_FORWARD] = sizeof(struct ip6t_standard),
|
||||
[NF_INET_LOCAL_OUT] = sizeof(struct ip6t_standard) * 2
|
||||
},
|
||||
},
|
||||
.entries = {
|
||||
@@ -93,21 +95,21 @@ static struct nf_hook_ops ip6t_ops[] = {
|
||||
.hook = ip6t_hook,
|
||||
.owner = THIS_MODULE,
|
||||
.pf = PF_INET6,
|
||||
.hooknum = NF_IP6_LOCAL_IN,
|
||||
.hooknum = NF_INET_LOCAL_IN,
|
||||
.priority = NF_IP6_PRI_FILTER,
|
||||
},
|
||||
{
|
||||
.hook = ip6t_hook,
|
||||
.owner = THIS_MODULE,
|
||||
.pf = PF_INET6,
|
||||
.hooknum = NF_IP6_FORWARD,
|
||||
.hooknum = NF_INET_FORWARD,
|
||||
.priority = NF_IP6_PRI_FILTER,
|
||||
},
|
||||
{
|
||||
.hook = ip6t_local_out_hook,
|
||||
.owner = THIS_MODULE,
|
||||
.pf = PF_INET6,
|
||||
.hooknum = NF_IP6_LOCAL_OUT,
|
||||
.hooknum = NF_INET_LOCAL_OUT,
|
||||
.priority = NF_IP6_PRI_FILTER,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -15,11 +15,11 @@ MODULE_LICENSE("GPL");
|
||||
MODULE_AUTHOR("Netfilter Core Team <coreteam@netfilter.org>");
|
||||
MODULE_DESCRIPTION("ip6tables mangle table");
|
||||
|
||||
#define MANGLE_VALID_HOOKS ((1 << NF_IP6_PRE_ROUTING) | \
|
||||
(1 << NF_IP6_LOCAL_IN) | \
|
||||
(1 << NF_IP6_FORWARD) | \
|
||||
(1 << NF_IP6_LOCAL_OUT) | \
|
||||
(1 << NF_IP6_POST_ROUTING))
|
||||
#define MANGLE_VALID_HOOKS ((1 << NF_INET_PRE_ROUTING) | \
|
||||
(1 << NF_INET_LOCAL_IN) | \
|
||||
(1 << NF_INET_FORWARD) | \
|
||||
(1 << NF_INET_LOCAL_OUT) | \
|
||||
(1 << NF_INET_POST_ROUTING))
|
||||
|
||||
static struct
|
||||
{
|
||||
@@ -33,18 +33,18 @@ static struct
|
||||
.num_entries = 6,
|
||||
.size = sizeof(struct ip6t_standard) * 5 + sizeof(struct ip6t_error),
|
||||
.hook_entry = {
|
||||
[NF_IP6_PRE_ROUTING] = 0,
|
||||
[NF_IP6_LOCAL_IN] = sizeof(struct ip6t_standard),
|
||||
[NF_IP6_FORWARD] = sizeof(struct ip6t_standard) * 2,
|
||||
[NF_IP6_LOCAL_OUT] = sizeof(struct ip6t_standard) * 3,
|
||||
[NF_IP6_POST_ROUTING] = sizeof(struct ip6t_standard) * 4,
|
||||
[NF_INET_PRE_ROUTING] = 0,
|
||||
[NF_INET_LOCAL_IN] = sizeof(struct ip6t_standard),
|
||||
[NF_INET_FORWARD] = sizeof(struct ip6t_standard) * 2,
|
||||
[NF_INET_LOCAL_OUT] = sizeof(struct ip6t_standard) * 3,
|
||||
[NF_INET_POST_ROUTING] = sizeof(struct ip6t_standard) * 4,
|
||||
},
|
||||
.underflow = {
|
||||
[NF_IP6_PRE_ROUTING] = 0,
|
||||
[NF_IP6_LOCAL_IN] = sizeof(struct ip6t_standard),
|
||||
[NF_IP6_FORWARD] = sizeof(struct ip6t_standard) * 2,
|
||||
[NF_IP6_LOCAL_OUT] = sizeof(struct ip6t_standard) * 3,
|
||||
[NF_IP6_POST_ROUTING] = sizeof(struct ip6t_standard) * 4,
|
||||
[NF_INET_PRE_ROUTING] = 0,
|
||||
[NF_INET_LOCAL_IN] = sizeof(struct ip6t_standard),
|
||||
[NF_INET_FORWARD] = sizeof(struct ip6t_standard) * 2,
|
||||
[NF_INET_LOCAL_OUT] = sizeof(struct ip6t_standard) * 3,
|
||||
[NF_INET_POST_ROUTING] = sizeof(struct ip6t_standard) * 4,
|
||||
},
|
||||
},
|
||||
.entries = {
|
||||
@@ -125,35 +125,35 @@ static struct nf_hook_ops ip6t_ops[] = {
|
||||
.hook = ip6t_route_hook,
|
||||
.owner = THIS_MODULE,
|
||||
.pf = PF_INET6,
|
||||
.hooknum = NF_IP6_PRE_ROUTING,
|
||||
.hooknum = NF_INET_PRE_ROUTING,
|
||||
.priority = NF_IP6_PRI_MANGLE,
|
||||
},
|
||||
{
|
||||
.hook = ip6t_local_hook,
|
||||
.owner = THIS_MODULE,
|
||||
.pf = PF_INET6,
|
||||
.hooknum = NF_IP6_LOCAL_IN,
|
||||
.hooknum = NF_INET_LOCAL_IN,
|
||||
.priority = NF_IP6_PRI_MANGLE,
|
||||
},
|
||||
{
|
||||
.hook = ip6t_route_hook,
|
||||
.owner = THIS_MODULE,
|
||||
.pf = PF_INET6,
|
||||
.hooknum = NF_IP6_FORWARD,
|
||||
.hooknum = NF_INET_FORWARD,
|
||||
.priority = NF_IP6_PRI_MANGLE,
|
||||
},
|
||||
{
|
||||
.hook = ip6t_local_hook,
|
||||
.owner = THIS_MODULE,
|
||||
.pf = PF_INET6,
|
||||
.hooknum = NF_IP6_LOCAL_OUT,
|
||||
.hooknum = NF_INET_LOCAL_OUT,
|
||||
.priority = NF_IP6_PRI_MANGLE,
|
||||
},
|
||||
{
|
||||
.hook = ip6t_route_hook,
|
||||
.owner = THIS_MODULE,
|
||||
.pf = PF_INET6,
|
||||
.hooknum = NF_IP6_POST_ROUTING,
|
||||
.hooknum = NF_INET_POST_ROUTING,
|
||||
.priority = NF_IP6_PRI_MANGLE,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#include <linux/module.h>
|
||||
#include <linux/netfilter_ipv6/ip6_tables.h>
|
||||
|
||||
#define RAW_VALID_HOOKS ((1 << NF_IP6_PRE_ROUTING) | (1 << NF_IP6_LOCAL_OUT))
|
||||
#define RAW_VALID_HOOKS ((1 << NF_INET_PRE_ROUTING) | (1 << NF_INET_LOCAL_OUT))
|
||||
|
||||
static struct
|
||||
{
|
||||
@@ -20,12 +20,12 @@ static struct
|
||||
.num_entries = 3,
|
||||
.size = sizeof(struct ip6t_standard) * 2 + sizeof(struct ip6t_error),
|
||||
.hook_entry = {
|
||||
[NF_IP6_PRE_ROUTING] = 0,
|
||||
[NF_IP6_LOCAL_OUT] = sizeof(struct ip6t_standard)
|
||||
[NF_INET_PRE_ROUTING] = 0,
|
||||
[NF_INET_LOCAL_OUT] = sizeof(struct ip6t_standard)
|
||||
},
|
||||
.underflow = {
|
||||
[NF_IP6_PRE_ROUTING] = 0,
|
||||
[NF_IP6_LOCAL_OUT] = sizeof(struct ip6t_standard)
|
||||
[NF_INET_PRE_ROUTING] = 0,
|
||||
[NF_INET_LOCAL_OUT] = sizeof(struct ip6t_standard)
|
||||
},
|
||||
},
|
||||
.entries = {
|
||||
@@ -58,14 +58,14 @@ static struct nf_hook_ops ip6t_ops[] = {
|
||||
{
|
||||
.hook = ip6t_hook,
|
||||
.pf = PF_INET6,
|
||||
.hooknum = NF_IP6_PRE_ROUTING,
|
||||
.hooknum = NF_INET_PRE_ROUTING,
|
||||
.priority = NF_IP6_PRI_FIRST,
|
||||
.owner = THIS_MODULE,
|
||||
},
|
||||
{
|
||||
.hook = ip6t_hook,
|
||||
.pf = PF_INET6,
|
||||
.hooknum = NF_IP6_LOCAL_OUT,
|
||||
.hooknum = NF_INET_LOCAL_OUT,
|
||||
.priority = NF_IP6_PRI_FIRST,
|
||||
.owner = THIS_MODULE,
|
||||
},
|
||||
|
||||
@@ -263,42 +263,42 @@ static struct nf_hook_ops ipv6_conntrack_ops[] = {
|
||||
.hook = ipv6_defrag,
|
||||
.owner = THIS_MODULE,
|
||||
.pf = PF_INET6,
|
||||
.hooknum = NF_IP6_PRE_ROUTING,
|
||||
.hooknum = NF_INET_PRE_ROUTING,
|
||||
.priority = NF_IP6_PRI_CONNTRACK_DEFRAG,
|
||||
},
|
||||
{
|
||||
.hook = ipv6_conntrack_in,
|
||||
.owner = THIS_MODULE,
|
||||
.pf = PF_INET6,
|
||||
.hooknum = NF_IP6_PRE_ROUTING,
|
||||
.hooknum = NF_INET_PRE_ROUTING,
|
||||
.priority = NF_IP6_PRI_CONNTRACK,
|
||||
},
|
||||
{
|
||||
.hook = ipv6_conntrack_local,
|
||||
.owner = THIS_MODULE,
|
||||
.pf = PF_INET6,
|
||||
.hooknum = NF_IP6_LOCAL_OUT,
|
||||
.hooknum = NF_INET_LOCAL_OUT,
|
||||
.priority = NF_IP6_PRI_CONNTRACK,
|
||||
},
|
||||
{
|
||||
.hook = ipv6_defrag,
|
||||
.owner = THIS_MODULE,
|
||||
.pf = PF_INET6,
|
||||
.hooknum = NF_IP6_LOCAL_OUT,
|
||||
.hooknum = NF_INET_LOCAL_OUT,
|
||||
.priority = NF_IP6_PRI_CONNTRACK_DEFRAG,
|
||||
},
|
||||
{
|
||||
.hook = ipv6_confirm,
|
||||
.owner = THIS_MODULE,
|
||||
.pf = PF_INET6,
|
||||
.hooknum = NF_IP6_POST_ROUTING,
|
||||
.hooknum = NF_INET_POST_ROUTING,
|
||||
.priority = NF_IP6_PRI_LAST,
|
||||
},
|
||||
{
|
||||
.hook = ipv6_confirm,
|
||||
.owner = THIS_MODULE,
|
||||
.pf = PF_INET6,
|
||||
.hooknum = NF_IP6_LOCAL_IN,
|
||||
.hooknum = NF_INET_LOCAL_IN,
|
||||
.priority = NF_IP6_PRI_LAST-1,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -192,7 +192,7 @@ icmpv6_error(struct sk_buff *skb, unsigned int dataoff,
|
||||
return -NF_ACCEPT;
|
||||
}
|
||||
|
||||
if (nf_conntrack_checksum && hooknum == NF_IP6_PRE_ROUTING &&
|
||||
if (nf_conntrack_checksum && hooknum == NF_INET_PRE_ROUTING &&
|
||||
nf_ip6_checksum(skb, hooknum, dataoff, IPPROTO_ICMPV6)) {
|
||||
nf_log_packet(PF_INET6, 0, skb, NULL, NULL, NULL,
|
||||
"nf_ct_icmpv6: ICMPv6 checksum failed\n");
|
||||
|
||||
@@ -619,7 +619,7 @@ static int rawv6_send_hdrinc(struct sock *sk, void *from, int length,
|
||||
goto error_fault;
|
||||
|
||||
IP6_INC_STATS(rt->rt6i_idev, IPSTATS_MIB_OUTREQUESTS);
|
||||
err = NF_HOOK(PF_INET6, NF_IP6_LOCAL_OUT, skb, NULL, rt->u.dst.dev,
|
||||
err = NF_HOOK(PF_INET6, NF_INET_LOCAL_OUT, skb, NULL, rt->u.dst.dev,
|
||||
dst_output);
|
||||
if (err > 0)
|
||||
err = np->recverr ? net_xmit_errno(err) : 0;
|
||||
|
||||
@@ -37,7 +37,7 @@ int xfrm6_transport_finish(struct sk_buff *skb, int async)
|
||||
ipv6_hdr(skb)->payload_len = htons(skb->len);
|
||||
__skb_push(skb, skb->data - skb_network_header(skb));
|
||||
|
||||
NF_HOOK(PF_INET6, NF_IP6_PRE_ROUTING, skb, skb->dev, NULL,
|
||||
NF_HOOK(PF_INET6, NF_INET_PRE_ROUTING, skb, skb->dev, NULL,
|
||||
ip6_rcv_finish);
|
||||
return -1;
|
||||
#else
|
||||
|
||||
@@ -89,6 +89,6 @@ static int xfrm6_output_finish(struct sk_buff *skb)
|
||||
|
||||
int xfrm6_output(struct sk_buff *skb)
|
||||
{
|
||||
return NF_HOOK(PF_INET6, NF_IP6_POST_ROUTING, skb, NULL, skb->dst->dev,
|
||||
return NF_HOOK(PF_INET6, NF_INET_POST_ROUTING, skb, NULL, skb->dst->dev,
|
||||
xfrm6_output_finish);
|
||||
}
|
||||
|
||||
@@ -188,7 +188,7 @@ static struct xfrm_state_afinfo xfrm6_state_afinfo = {
|
||||
.family = AF_INET6,
|
||||
.proto = IPPROTO_IPV6,
|
||||
.eth_proto = htons(ETH_P_IPV6),
|
||||
.nf_post_routing = NF_IP6_POST_ROUTING,
|
||||
.nf_post_routing = NF_INET_POST_ROUTING,
|
||||
.owner = THIS_MODULE,
|
||||
.init_tempsel = __xfrm6_init_tempsel,
|
||||
.tmpl_sort = __xfrm6_tmpl_sort,
|
||||
|
||||
Reference in New Issue
Block a user