diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2000-03-12 23:15:27 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2000-03-12 23:15:27 +0000 |
commit | ae38fd1e4c98588314a42097c5a5e77dcef23561 (patch) | |
tree | f9f10c203bb9e5fbad4810d1f8774c08dfad20ff /include/linux/skbuff.h | |
parent | 466a823d79f41d0713b272e48fd73e494b0588e0 (diff) |
Merge with Linux 2.3.50.
Diffstat (limited to 'include/linux/skbuff.h')
-rw-r--r-- | include/linux/skbuff.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 015855fa0..6081b0890 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -37,6 +37,17 @@ #define NET_CALLER(arg) __builtin_return_address(0) #endif +#ifdef CONFIG_NETFILTER +struct nf_conntrack { + atomic_t use; + void (*destroy)(struct nf_conntrack *); +}; + +struct nf_ct_info { + struct nf_conntrack *master; +}; +#endif + struct sk_buff_head { /* These two members must be first. */ struct sk_buff * next; @@ -115,6 +126,8 @@ struct sk_buff { __u32 nfreason; /* Cache info */ __u32 nfcache; + /* Associated connection, if any */ + struct nf_ct_info *nfct; #ifdef CONFIG_NETFILTER_DEBUG unsigned int nf_debug; #endif @@ -635,5 +648,20 @@ extern void skb_free_datagram(struct sock * sk, struct sk_buff *skb); extern void skb_init(void); extern void skb_add_mtu(int mtu); +#ifdef CONFIG_NETFILTER +extern __inline__ void +nf_conntrack_put(struct nf_ct_info *nfct) +{ + if (nfct && atomic_dec_and_test(&nfct->master->use)) + nfct->master->destroy(nfct->master); +} +extern __inline__ void +nf_conntrack_get(struct nf_ct_info *nfct) +{ + if (nfct) + atomic_inc(&nfct->master->use); +} +#endif + #endif /* __KERNEL__ */ #endif /* _LINUX_SKBUFF_H */ |