Commit 9dff2c96 authored by Eric W. Biederman's avatar Eric W. Biederman Committed by David S. Miller

netfilter: Use nf_hook_state.net

Instead of saying "net = dev_net(state->in?state->in:state->out)"
just say "state->net".  As that information is now availabe,
much less confusing and much less error prone.
Signed-off-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 29a26a56
...@@ -61,7 +61,7 @@ ebt_in_hook(const struct nf_hook_ops *ops, struct sk_buff *skb, ...@@ -61,7 +61,7 @@ ebt_in_hook(const struct nf_hook_ops *ops, struct sk_buff *skb,
const struct nf_hook_state *state) const struct nf_hook_state *state)
{ {
return ebt_do_table(ops->hooknum, skb, state->in, state->out, return ebt_do_table(ops->hooknum, skb, state->in, state->out,
dev_net(state->in)->xt.frame_filter); state->net->xt.frame_filter);
} }
static unsigned int static unsigned int
...@@ -69,7 +69,7 @@ ebt_out_hook(const struct nf_hook_ops *ops, struct sk_buff *skb, ...@@ -69,7 +69,7 @@ ebt_out_hook(const struct nf_hook_ops *ops, struct sk_buff *skb,
const struct nf_hook_state *state) const struct nf_hook_state *state)
{ {
return ebt_do_table(ops->hooknum, skb, state->in, state->out, return ebt_do_table(ops->hooknum, skb, state->in, state->out,
dev_net(state->out)->xt.frame_filter); state->net->xt.frame_filter);
} }
static struct nf_hook_ops ebt_ops_filter[] __read_mostly = { static struct nf_hook_ops ebt_ops_filter[] __read_mostly = {
......
...@@ -61,7 +61,7 @@ ebt_nat_in(const struct nf_hook_ops *ops, struct sk_buff *skb, ...@@ -61,7 +61,7 @@ ebt_nat_in(const struct nf_hook_ops *ops, struct sk_buff *skb,
const struct nf_hook_state *state) const struct nf_hook_state *state)
{ {
return ebt_do_table(ops->hooknum, skb, state->in, state->out, return ebt_do_table(ops->hooknum, skb, state->in, state->out,
dev_net(state->in)->xt.frame_nat); state->net->xt.frame_nat);
} }
static unsigned int static unsigned int
...@@ -69,7 +69,7 @@ ebt_nat_out(const struct nf_hook_ops *ops, struct sk_buff *skb, ...@@ -69,7 +69,7 @@ ebt_nat_out(const struct nf_hook_ops *ops, struct sk_buff *skb,
const struct nf_hook_state *state) const struct nf_hook_state *state)
{ {
return ebt_do_table(ops->hooknum, skb, state->in, state->out, return ebt_do_table(ops->hooknum, skb, state->in, state->out,
dev_net(state->out)->xt.frame_nat); state->net->xt.frame_nat);
} }
static struct nf_hook_ops ebt_ops_nat[] __read_mostly = { static struct nf_hook_ops ebt_ops_nat[] __read_mostly = {
......
...@@ -30,10 +30,8 @@ static unsigned int ...@@ -30,10 +30,8 @@ static unsigned int
arptable_filter_hook(const struct nf_hook_ops *ops, struct sk_buff *skb, arptable_filter_hook(const struct nf_hook_ops *ops, struct sk_buff *skb,
const struct nf_hook_state *state) const struct nf_hook_state *state)
{ {
const struct net *net = dev_net(state->in ? state->in : state->out);
return arpt_do_table(skb, ops->hooknum, state, return arpt_do_table(skb, ops->hooknum, state,
net->ipv4.arptable_filter); state->net->ipv4.arptable_filter);
} }
static struct nf_hook_ops *arpfilter_ops __read_mostly; static struct nf_hook_ops *arpfilter_ops __read_mostly;
......
...@@ -246,7 +246,8 @@ get_chainname_rulenum(const struct ipt_entry *s, const struct ipt_entry *e, ...@@ -246,7 +246,8 @@ get_chainname_rulenum(const struct ipt_entry *s, const struct ipt_entry *e,
return 0; return 0;
} }
static void trace_packet(const struct sk_buff *skb, static void trace_packet(struct net *net,
const struct sk_buff *skb,
unsigned int hook, unsigned int hook,
const struct net_device *in, const struct net_device *in,
const struct net_device *out, const struct net_device *out,
...@@ -258,7 +259,6 @@ static void trace_packet(const struct sk_buff *skb, ...@@ -258,7 +259,6 @@ static void trace_packet(const struct sk_buff *skb,
const char *hookname, *chainname, *comment; const char *hookname, *chainname, *comment;
const struct ipt_entry *iter; const struct ipt_entry *iter;
unsigned int rulenum = 0; unsigned int rulenum = 0;
struct net *net = dev_net(in ? in : out);
root = get_entry(private->entries, private->hook_entry[hook]); root = get_entry(private->entries, private->hook_entry[hook]);
...@@ -378,8 +378,8 @@ ipt_do_table(struct sk_buff *skb, ...@@ -378,8 +378,8 @@ ipt_do_table(struct sk_buff *skb,
#if IS_ENABLED(CONFIG_NETFILTER_XT_TARGET_TRACE) #if IS_ENABLED(CONFIG_NETFILTER_XT_TARGET_TRACE)
/* The packet is traced: log it */ /* The packet is traced: log it */
if (unlikely(skb->nf_trace)) if (unlikely(skb->nf_trace))
trace_packet(skb, hook, state->in, state->out, trace_packet(state->net, skb, hook, state->in,
table->name, private, e); state->out, table->name, private, e);
#endif #endif
/* Standard target? */ /* Standard target? */
if (!t->u.kernel.target->target) { if (!t->u.kernel.target->target) {
......
...@@ -514,7 +514,7 @@ arp_mangle(const struct nf_hook_ops *ops, ...@@ -514,7 +514,7 @@ arp_mangle(const struct nf_hook_ops *ops,
struct arphdr *arp = arp_hdr(skb); struct arphdr *arp = arp_hdr(skb);
struct arp_payload *payload; struct arp_payload *payload;
struct clusterip_config *c; struct clusterip_config *c;
struct net *net = dev_net(state->in ? state->in : state->out); struct net *net = state->net;
/* we don't care about non-ethernet and non-ipv4 ARP */ /* we don't care about non-ethernet and non-ipv4 ARP */
if (arp->ar_hrd != htons(ARPHRD_ETHER) || if (arp->ar_hrd != htons(ARPHRD_ETHER) ||
......
...@@ -303,7 +303,7 @@ static unsigned int ipv4_synproxy_hook(const struct nf_hook_ops *ops, ...@@ -303,7 +303,7 @@ static unsigned int ipv4_synproxy_hook(const struct nf_hook_ops *ops,
struct sk_buff *skb, struct sk_buff *skb,
const struct nf_hook_state *nhs) const struct nf_hook_state *nhs)
{ {
struct synproxy_net *snet = synproxy_pernet(dev_net(nhs->in ? : nhs->out)); struct synproxy_net *snet = synproxy_pernet(nhs->net);
enum ip_conntrack_info ctinfo; enum ip_conntrack_info ctinfo;
struct nf_conn *ct; struct nf_conn *ct;
struct nf_conn_synproxy *synproxy; struct nf_conn_synproxy *synproxy;
......
...@@ -36,16 +36,14 @@ static unsigned int ...@@ -36,16 +36,14 @@ static unsigned int
iptable_filter_hook(const struct nf_hook_ops *ops, struct sk_buff *skb, iptable_filter_hook(const struct nf_hook_ops *ops, struct sk_buff *skb,
const struct nf_hook_state *state) const struct nf_hook_state *state)
{ {
const struct net *net;
if (ops->hooknum == NF_INET_LOCAL_OUT && if (ops->hooknum == NF_INET_LOCAL_OUT &&
(skb->len < sizeof(struct iphdr) || (skb->len < sizeof(struct iphdr) ||
ip_hdrlen(skb) < sizeof(struct iphdr))) ip_hdrlen(skb) < sizeof(struct iphdr)))
/* root is playing with raw sockets. */ /* root is playing with raw sockets. */
return NF_ACCEPT; return NF_ACCEPT;
net = dev_net(state->in ? state->in : state->out); return ipt_do_table(skb, ops->hooknum, state,
return ipt_do_table(skb, ops->hooknum, state, net->ipv4.iptable_filter); state->net->ipv4.iptable_filter);
} }
static struct nf_hook_ops *filter_ops __read_mostly; static struct nf_hook_ops *filter_ops __read_mostly;
......
...@@ -39,7 +39,6 @@ static const struct xt_table packet_mangler = { ...@@ -39,7 +39,6 @@ static const struct xt_table packet_mangler = {
static unsigned int static unsigned int
ipt_mangle_out(struct sk_buff *skb, const struct nf_hook_state *state) ipt_mangle_out(struct sk_buff *skb, const struct nf_hook_state *state)
{ {
struct net_device *out = state->out;
unsigned int ret; unsigned int ret;
const struct iphdr *iph; const struct iphdr *iph;
u_int8_t tos; u_int8_t tos;
...@@ -60,7 +59,7 @@ ipt_mangle_out(struct sk_buff *skb, const struct nf_hook_state *state) ...@@ -60,7 +59,7 @@ ipt_mangle_out(struct sk_buff *skb, const struct nf_hook_state *state)
tos = iph->tos; tos = iph->tos;
ret = ipt_do_table(skb, NF_INET_LOCAL_OUT, state, ret = ipt_do_table(skb, NF_INET_LOCAL_OUT, state,
dev_net(out)->ipv4.iptable_mangle); state->net->ipv4.iptable_mangle);
/* Reroute for ANY change. */ /* Reroute for ANY change. */
if (ret != NF_DROP && ret != NF_STOLEN) { if (ret != NF_DROP && ret != NF_STOLEN) {
iph = ip_hdr(skb); iph = ip_hdr(skb);
...@@ -88,10 +87,10 @@ iptable_mangle_hook(const struct nf_hook_ops *ops, ...@@ -88,10 +87,10 @@ iptable_mangle_hook(const struct nf_hook_ops *ops,
return ipt_mangle_out(skb, state); return ipt_mangle_out(skb, state);
if (ops->hooknum == NF_INET_POST_ROUTING) if (ops->hooknum == NF_INET_POST_ROUTING)
return ipt_do_table(skb, ops->hooknum, state, return ipt_do_table(skb, ops->hooknum, state,
dev_net(state->out)->ipv4.iptable_mangle); state->net->ipv4.iptable_mangle);
/* PREROUTING/INPUT/FORWARD: */ /* PREROUTING/INPUT/FORWARD: */
return ipt_do_table(skb, ops->hooknum, state, return ipt_do_table(skb, ops->hooknum, state,
dev_net(state->in)->ipv4.iptable_mangle); state->net->ipv4.iptable_mangle);
} }
static struct nf_hook_ops *mangle_ops __read_mostly; static struct nf_hook_ops *mangle_ops __read_mostly;
......
...@@ -33,9 +33,8 @@ static unsigned int iptable_nat_do_chain(const struct nf_hook_ops *ops, ...@@ -33,9 +33,8 @@ static unsigned int iptable_nat_do_chain(const struct nf_hook_ops *ops,
const struct nf_hook_state *state, const struct nf_hook_state *state,
struct nf_conn *ct) struct nf_conn *ct)
{ {
struct net *net = nf_ct_net(ct); return ipt_do_table(skb, ops->hooknum, state,
state->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, static unsigned int iptable_nat_ipv4_fn(const struct nf_hook_ops *ops,
......
...@@ -23,16 +23,14 @@ static unsigned int ...@@ -23,16 +23,14 @@ static unsigned int
iptable_raw_hook(const struct nf_hook_ops *ops, struct sk_buff *skb, iptable_raw_hook(const struct nf_hook_ops *ops, struct sk_buff *skb,
const struct nf_hook_state *state) const struct nf_hook_state *state)
{ {
const struct net *net;
if (ops->hooknum == NF_INET_LOCAL_OUT && if (ops->hooknum == NF_INET_LOCAL_OUT &&
(skb->len < sizeof(struct iphdr) || (skb->len < sizeof(struct iphdr) ||
ip_hdrlen(skb) < sizeof(struct iphdr))) ip_hdrlen(skb) < sizeof(struct iphdr)))
/* root is playing with raw sockets. */ /* root is playing with raw sockets. */
return NF_ACCEPT; return NF_ACCEPT;
net = dev_net(state->in ? state->in : state->out); return ipt_do_table(skb, ops->hooknum, state,
return ipt_do_table(skb, ops->hooknum, state, net->ipv4.iptable_raw); state->net->ipv4.iptable_raw);
} }
static struct nf_hook_ops *rawtable_ops __read_mostly; static struct nf_hook_ops *rawtable_ops __read_mostly;
......
...@@ -40,17 +40,14 @@ static unsigned int ...@@ -40,17 +40,14 @@ static unsigned int
iptable_security_hook(const struct nf_hook_ops *ops, struct sk_buff *skb, iptable_security_hook(const struct nf_hook_ops *ops, struct sk_buff *skb,
const struct nf_hook_state *state) const struct nf_hook_state *state)
{ {
const struct net *net;
if (ops->hooknum == NF_INET_LOCAL_OUT && if (ops->hooknum == NF_INET_LOCAL_OUT &&
(skb->len < sizeof(struct iphdr) || (skb->len < sizeof(struct iphdr) ||
ip_hdrlen(skb) < sizeof(struct iphdr))) ip_hdrlen(skb) < sizeof(struct iphdr)))
/* Somebody is playing with raw sockets. */ /* Somebody is playing with raw sockets. */
return NF_ACCEPT; return NF_ACCEPT;
net = dev_net(state->in ? state->in : state->out);
return ipt_do_table(skb, ops->hooknum, state, return ipt_do_table(skb, ops->hooknum, state,
net->ipv4.iptable_security); state->net->ipv4.iptable_security);
} }
static struct nf_hook_ops *sectbl_ops __read_mostly; static struct nf_hook_ops *sectbl_ops __read_mostly;
......
...@@ -147,7 +147,7 @@ static unsigned int ipv4_conntrack_in(const struct nf_hook_ops *ops, ...@@ -147,7 +147,7 @@ static unsigned int ipv4_conntrack_in(const struct nf_hook_ops *ops,
struct sk_buff *skb, struct sk_buff *skb,
const struct nf_hook_state *state) const struct nf_hook_state *state)
{ {
return nf_conntrack_in(dev_net(state->in), PF_INET, ops->hooknum, skb); return nf_conntrack_in(state->net, PF_INET, ops->hooknum, skb);
} }
static unsigned int ipv4_conntrack_local(const struct nf_hook_ops *ops, static unsigned int ipv4_conntrack_local(const struct nf_hook_ops *ops,
...@@ -158,7 +158,7 @@ static unsigned int ipv4_conntrack_local(const struct nf_hook_ops *ops, ...@@ -158,7 +158,7 @@ static unsigned int ipv4_conntrack_local(const struct nf_hook_ops *ops,
if (skb->len < sizeof(struct iphdr) || if (skb->len < sizeof(struct iphdr) ||
ip_hdrlen(skb) < sizeof(struct iphdr)) ip_hdrlen(skb) < sizeof(struct iphdr))
return NF_ACCEPT; return NF_ACCEPT;
return nf_conntrack_in(dev_net(state->out), PF_INET, ops->hooknum, skb); return nf_conntrack_in(state->net, PF_INET, ops->hooknum, skb);
} }
/* Connection tracking may drop packets, but never alters them, so /* Connection tracking may drop packets, but never alters them, so
......
...@@ -275,7 +275,8 @@ get_chainname_rulenum(const struct ip6t_entry *s, const struct ip6t_entry *e, ...@@ -275,7 +275,8 @@ get_chainname_rulenum(const struct ip6t_entry *s, const struct ip6t_entry *e,
return 0; return 0;
} }
static void trace_packet(const struct sk_buff *skb, static void trace_packet(struct net *net,
const struct sk_buff *skb,
unsigned int hook, unsigned int hook,
const struct net_device *in, const struct net_device *in,
const struct net_device *out, const struct net_device *out,
...@@ -287,7 +288,6 @@ static void trace_packet(const struct sk_buff *skb, ...@@ -287,7 +288,6 @@ static void trace_packet(const struct sk_buff *skb,
const char *hookname, *chainname, *comment; const char *hookname, *chainname, *comment;
const struct ip6t_entry *iter; const struct ip6t_entry *iter;
unsigned int rulenum = 0; unsigned int rulenum = 0;
struct net *net = dev_net(in ? in : out);
root = get_entry(private->entries, private->hook_entry[hook]); root = get_entry(private->entries, private->hook_entry[hook]);
...@@ -401,8 +401,8 @@ ip6t_do_table(struct sk_buff *skb, ...@@ -401,8 +401,8 @@ ip6t_do_table(struct sk_buff *skb,
#if IS_ENABLED(CONFIG_NETFILTER_XT_TARGET_TRACE) #if IS_ENABLED(CONFIG_NETFILTER_XT_TARGET_TRACE)
/* The packet is traced: log it */ /* The packet is traced: log it */
if (unlikely(skb->nf_trace)) if (unlikely(skb->nf_trace))
trace_packet(skb, hook, state->in, state->out, trace_packet(state->net, skb, hook, state->in,
table->name, private, e); state->out, table->name, private, e);
#endif #endif
/* Standard target? */ /* Standard target? */
if (!t->u.kernel.target->target) { if (!t->u.kernel.target->target) {
......
...@@ -320,7 +320,7 @@ static unsigned int ipv6_synproxy_hook(const struct nf_hook_ops *ops, ...@@ -320,7 +320,7 @@ static unsigned int ipv6_synproxy_hook(const struct nf_hook_ops *ops,
struct sk_buff *skb, struct sk_buff *skb,
const struct nf_hook_state *nhs) const struct nf_hook_state *nhs)
{ {
struct synproxy_net *snet = synproxy_pernet(dev_net(nhs->in ? : nhs->out)); struct synproxy_net *snet = synproxy_pernet(nhs->net);
enum ip_conntrack_info ctinfo; enum ip_conntrack_info ctinfo;
struct nf_conn *ct; struct nf_conn *ct;
struct nf_conn_synproxy *synproxy; struct nf_conn_synproxy *synproxy;
......
...@@ -35,9 +35,8 @@ static unsigned int ...@@ -35,9 +35,8 @@ static unsigned int
ip6table_filter_hook(const struct nf_hook_ops *ops, struct sk_buff *skb, ip6table_filter_hook(const struct nf_hook_ops *ops, struct sk_buff *skb,
const struct nf_hook_state *state) const struct nf_hook_state *state)
{ {
const struct net *net = dev_net(state->in ? state->in : state->out); return ip6t_do_table(skb, ops->hooknum, state,
state->net->ipv6.ip6table_filter);
return ip6t_do_table(skb, ops->hooknum, state, net->ipv6.ip6table_filter);
} }
static struct nf_hook_ops *filter_ops __read_mostly; static struct nf_hook_ops *filter_ops __read_mostly;
......
...@@ -58,7 +58,7 @@ ip6t_mangle_out(struct sk_buff *skb, const struct nf_hook_state *state) ...@@ -58,7 +58,7 @@ ip6t_mangle_out(struct sk_buff *skb, const struct nf_hook_state *state)
flowlabel = *((u_int32_t *)ipv6_hdr(skb)); flowlabel = *((u_int32_t *)ipv6_hdr(skb));
ret = ip6t_do_table(skb, NF_INET_LOCAL_OUT, state, ret = ip6t_do_table(skb, NF_INET_LOCAL_OUT, state,
dev_net(state->out)->ipv6.ip6table_mangle); state->net->ipv6.ip6table_mangle);
if (ret != NF_DROP && ret != NF_STOLEN && if (ret != NF_DROP && ret != NF_STOLEN &&
(!ipv6_addr_equal(&ipv6_hdr(skb)->saddr, &saddr) || (!ipv6_addr_equal(&ipv6_hdr(skb)->saddr, &saddr) ||
...@@ -83,10 +83,10 @@ ip6table_mangle_hook(const struct nf_hook_ops *ops, struct sk_buff *skb, ...@@ -83,10 +83,10 @@ ip6table_mangle_hook(const struct nf_hook_ops *ops, struct sk_buff *skb,
return ip6t_mangle_out(skb, state); return ip6t_mangle_out(skb, state);
if (ops->hooknum == NF_INET_POST_ROUTING) if (ops->hooknum == NF_INET_POST_ROUTING)
return ip6t_do_table(skb, ops->hooknum, state, return ip6t_do_table(skb, ops->hooknum, state,
dev_net(state->out)->ipv6.ip6table_mangle); state->net->ipv6.ip6table_mangle);
/* INPUT/FORWARD */ /* INPUT/FORWARD */
return ip6t_do_table(skb, ops->hooknum, state, return ip6t_do_table(skb, ops->hooknum, state,
dev_net(state->in)->ipv6.ip6table_mangle); state->net->ipv6.ip6table_mangle);
} }
static struct nf_hook_ops *mangle_ops __read_mostly; static struct nf_hook_ops *mangle_ops __read_mostly;
......
...@@ -35,9 +35,8 @@ static unsigned int ip6table_nat_do_chain(const struct nf_hook_ops *ops, ...@@ -35,9 +35,8 @@ static unsigned int ip6table_nat_do_chain(const struct nf_hook_ops *ops,
const struct nf_hook_state *state, const struct nf_hook_state *state,
struct nf_conn *ct) struct nf_conn *ct)
{ {
struct net *net = nf_ct_net(ct); return ip6t_do_table(skb, ops->hooknum, state,
state->net->ipv6.ip6table_nat);
return ip6t_do_table(skb, ops->hooknum, state, net->ipv6.ip6table_nat);
} }
static unsigned int ip6table_nat_fn(const struct nf_hook_ops *ops, static unsigned int ip6table_nat_fn(const struct nf_hook_ops *ops,
......
...@@ -22,9 +22,8 @@ static unsigned int ...@@ -22,9 +22,8 @@ static unsigned int
ip6table_raw_hook(const struct nf_hook_ops *ops, struct sk_buff *skb, ip6table_raw_hook(const struct nf_hook_ops *ops, struct sk_buff *skb,
const struct nf_hook_state *state) const struct nf_hook_state *state)
{ {
const struct net *net = dev_net(state->in ? state->in : state->out); return ip6t_do_table(skb, ops->hooknum, state,
state->net->ipv6.ip6table_raw);
return ip6t_do_table(skb, ops->hooknum, state, net->ipv6.ip6table_raw);
} }
static struct nf_hook_ops *rawtable_ops __read_mostly; static struct nf_hook_ops *rawtable_ops __read_mostly;
......
...@@ -39,10 +39,8 @@ static unsigned int ...@@ -39,10 +39,8 @@ static unsigned int
ip6table_security_hook(const struct nf_hook_ops *ops, struct sk_buff *skb, ip6table_security_hook(const struct nf_hook_ops *ops, struct sk_buff *skb,
const struct nf_hook_state *state) const struct nf_hook_state *state)
{ {
const struct net *net = dev_net(state->in ? state->in : state->out);
return ip6t_do_table(skb, ops->hooknum, state, return ip6t_do_table(skb, ops->hooknum, state,
net->ipv6.ip6table_security); state->net->ipv6.ip6table_security);
} }
static struct nf_hook_ops *sectbl_ops __read_mostly; static struct nf_hook_ops *sectbl_ops __read_mostly;
......
...@@ -169,7 +169,7 @@ static unsigned int ipv6_conntrack_in(const struct nf_hook_ops *ops, ...@@ -169,7 +169,7 @@ static unsigned int ipv6_conntrack_in(const struct nf_hook_ops *ops,
struct sk_buff *skb, struct sk_buff *skb,
const struct nf_hook_state *state) const struct nf_hook_state *state)
{ {
return nf_conntrack_in(dev_net(state->in), PF_INET6, ops->hooknum, skb); return nf_conntrack_in(state->net, PF_INET6, ops->hooknum, skb);
} }
static unsigned int ipv6_conntrack_local(const struct nf_hook_ops *ops, static unsigned int ipv6_conntrack_local(const struct nf_hook_ops *ops,
...@@ -181,7 +181,7 @@ static unsigned int ipv6_conntrack_local(const struct nf_hook_ops *ops, ...@@ -181,7 +181,7 @@ static unsigned int ipv6_conntrack_local(const struct nf_hook_ops *ops,
net_notice_ratelimited("ipv6_conntrack_local: packet too short\n"); net_notice_ratelimited("ipv6_conntrack_local: packet too short\n");
return NF_ACCEPT; return NF_ACCEPT;
} }
return nf_conntrack_in(dev_net(state->out), PF_INET6, ops->hooknum, skb); return nf_conntrack_in(state->net, PF_INET6, ops->hooknum, skb);
} }
static struct nf_hook_ops ipv6_conntrack_ops[] __read_mostly = { static struct nf_hook_ops ipv6_conntrack_ops[] __read_mostly = {
......
...@@ -670,8 +670,7 @@ nfqnl_enqueue_packet(struct nf_queue_entry *entry, unsigned int queuenum) ...@@ -670,8 +670,7 @@ nfqnl_enqueue_packet(struct nf_queue_entry *entry, unsigned int queuenum)
struct nfqnl_instance *queue; struct nfqnl_instance *queue;
struct sk_buff *skb, *segs; struct sk_buff *skb, *segs;
int err = -ENOBUFS; int err = -ENOBUFS;
struct net *net = dev_net(entry->state.in ? struct net *net = entry->state.net;
entry->state.in : entry->state.out);
struct nfnl_queue_net *q = nfnl_queue_pernet(net); struct nfnl_queue_net *q = nfnl_queue_pernet(net);
/* rcu_read_lock()ed by nf_hook_slow() */ /* rcu_read_lock()ed by nf_hook_slow() */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment