aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorHarald Welte <laforge@netfilter.org>2005-08-09 22:42:34 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2005-08-29 18:36:19 -0400
commit2cc7d5730957c4a3f3659d17d2ba5e06d5581c1f (patch)
treec2c3d03d8120831d487bb8fcc73e5dcbe13aebea /include/linux
parent4fdb3bb723db469717c6d38fda667d8b0fa86ebd (diff)
[NETFILTER]: Move reroute-after-queue code up to the nf_queue layer.
The rerouting functionality is required by the core, therefore it has to be implemented by the core and not in individual queue handlers. Signed-off-by: Harald Welte <laforge@netfilter.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/netfilter.h11
-rw-r--r--include/linux/netfilter_ipv6.h3
2 files changed, 14 insertions, 0 deletions
diff --git a/include/linux/netfilter.h b/include/linux/netfilter.h
index 54b97a1baba5..d163e20ca8d9 100644
--- a/include/linux/netfilter.h
+++ b/include/linux/netfilter.h
@@ -198,6 +198,17 @@ extern void nf_invalidate_cache(int pf);
198 Returns true or false. */ 198 Returns true or false. */
199extern int skb_make_writable(struct sk_buff **pskb, unsigned int writable_len); 199extern int skb_make_writable(struct sk_buff **pskb, unsigned int writable_len);
200 200
201struct nf_queue_rerouter {
202 void (*save)(const struct sk_buff *skb, struct nf_info *info);
203 int (*reroute)(struct sk_buff **skb, const struct nf_info *info);
204 int rer_size;
205};
206
207#define nf_info_reroute(x) ((void *)x + sizeof(struct nf_info))
208
209extern int nf_register_queue_rerouter(int pf, struct nf_queue_rerouter *rer);
210extern int nf_unregister_queue_rerouter(int pf);
211
201#else /* !CONFIG_NETFILTER */ 212#else /* !CONFIG_NETFILTER */
202#define NF_HOOK(pf, hook, skb, indev, outdev, okfn) (okfn)(skb) 213#define NF_HOOK(pf, hook, skb, indev, outdev, okfn) (okfn)(skb)
203static inline void nf_ct_attach(struct sk_buff *new, struct sk_buff *skb) {} 214static inline void nf_ct_attach(struct sk_buff *new, struct sk_buff *skb) {}
diff --git a/include/linux/netfilter_ipv6.h b/include/linux/netfilter_ipv6.h
index 20c069a5e4ac..5d204ee7a312 100644
--- a/include/linux/netfilter_ipv6.h
+++ b/include/linux/netfilter_ipv6.h
@@ -71,4 +71,7 @@ enum nf_ip6_hook_priorities {
71 NF_IP6_PRI_LAST = INT_MAX, 71 NF_IP6_PRI_LAST = INT_MAX,
72}; 72};
73 73
74int ipv6_netfilter_init(void);
75void ipv6_netfilter_fini(void);
76
74#endif /*__LINUX_IP6_NETFILTER_H*/ 77#endif /*__LINUX_IP6_NETFILTER_H*/