netfilter: core: move ip_ct_attach indirection to struct nf_ct_hook
[ Upstream commit3fce16493d
] ip_ct_attach predates struct nf_ct_hook, we can place it there and remove the exported symbol. Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> Stable-dep-of:62e7151ae3
("netfilter: bridge: confirm multicast packets before passing them up the stack") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
84d3baab4b
commit
2cb39bea70
|
@ -435,7 +435,6 @@ nf_nat_decode_session(struct sk_buff *skb, struct flowi *fl, u_int8_t family)
|
|||
#if IS_ENABLED(CONFIG_NF_CONNTRACK)
|
||||
#include <linux/netfilter/nf_conntrack_zones_common.h>
|
||||
|
||||
extern void (*ip_ct_attach)(struct sk_buff *, const struct sk_buff *) __rcu;
|
||||
void nf_ct_attach(struct sk_buff *, const struct sk_buff *);
|
||||
struct nf_conntrack_tuple;
|
||||
bool nf_ct_get_tuple_skb(struct nf_conntrack_tuple *dst_tuple,
|
||||
|
@ -458,6 +457,7 @@ struct nf_ct_hook {
|
|||
void (*destroy)(struct nf_conntrack *);
|
||||
bool (*get_tuple_skb)(struct nf_conntrack_tuple *,
|
||||
const struct sk_buff *);
|
||||
void (*attach)(struct sk_buff *nskb, const struct sk_buff *skb);
|
||||
};
|
||||
extern struct nf_ct_hook __rcu *nf_ct_hook;
|
||||
|
||||
|
|
|
@ -639,25 +639,22 @@ struct nf_ct_hook __rcu *nf_ct_hook __read_mostly;
|
|||
EXPORT_SYMBOL_GPL(nf_ct_hook);
|
||||
|
||||
#if IS_ENABLED(CONFIG_NF_CONNTRACK)
|
||||
/* This does not belong here, but locally generated errors need it if connection
|
||||
tracking in use: without this, connection may not be in hash table, and hence
|
||||
manufactured ICMP or RST packets will not be associated with it. */
|
||||
void (*ip_ct_attach)(struct sk_buff *, const struct sk_buff *)
|
||||
__rcu __read_mostly;
|
||||
EXPORT_SYMBOL(ip_ct_attach);
|
||||
|
||||
struct nf_nat_hook __rcu *nf_nat_hook __read_mostly;
|
||||
EXPORT_SYMBOL_GPL(nf_nat_hook);
|
||||
|
||||
/* This does not belong here, but locally generated errors need it if connection
|
||||
* tracking in use: without this, connection may not be in hash table, and hence
|
||||
* manufactured ICMP or RST packets will not be associated with it.
|
||||
*/
|
||||
void nf_ct_attach(struct sk_buff *new, const struct sk_buff *skb)
|
||||
{
|
||||
void (*attach)(struct sk_buff *, const struct sk_buff *);
|
||||
const struct nf_ct_hook *ct_hook;
|
||||
|
||||
if (skb->_nfct) {
|
||||
rcu_read_lock();
|
||||
attach = rcu_dereference(ip_ct_attach);
|
||||
if (attach)
|
||||
attach(new, skb);
|
||||
ct_hook = rcu_dereference(nf_ct_hook);
|
||||
if (ct_hook)
|
||||
ct_hook->attach(new, skb);
|
||||
rcu_read_unlock();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2518,7 +2518,6 @@ static int kill_all(struct nf_conn *i, void *data)
|
|||
void nf_conntrack_cleanup_start(void)
|
||||
{
|
||||
conntrack_gc_work.exiting = true;
|
||||
RCU_INIT_POINTER(ip_ct_attach, NULL);
|
||||
}
|
||||
|
||||
void nf_conntrack_cleanup_end(void)
|
||||
|
@ -2838,12 +2837,11 @@ static struct nf_ct_hook nf_conntrack_hook = {
|
|||
.update = nf_conntrack_update,
|
||||
.destroy = nf_ct_destroy,
|
||||
.get_tuple_skb = nf_conntrack_get_tuple_skb,
|
||||
.attach = nf_conntrack_attach,
|
||||
};
|
||||
|
||||
void nf_conntrack_init_end(void)
|
||||
{
|
||||
/* For use by REJECT target */
|
||||
RCU_INIT_POINTER(ip_ct_attach, nf_conntrack_attach);
|
||||
RCU_INIT_POINTER(nf_ct_hook, &nf_conntrack_hook);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue