X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Flinux%2Fnetfilter.h;fp=include%2Flinux%2Fnetfilter.h;h=4688969398434d51135817b7fde491d36684817f;hb=64ba3f394c830ec48a1c31b53dcae312c56f1604;hp=10168e26a8466eb889c3c9c5530a645d85679c25;hpb=be1e6109ac94a859551f8e1774eb9a8469fe055c;p=linux-2.6.git diff --git a/include/linux/netfilter.h b/include/linux/netfilter.h index 10168e26a..468896939 100644 --- a/include/linux/netfilter.h +++ b/include/linux/netfilter.h @@ -40,6 +40,7 @@ #endif #ifdef __KERNEL__ +#include #ifdef CONFIG_NETFILTER extern void netfilter_init(void); @@ -79,14 +80,10 @@ struct nf_sockopt_ops int set_optmin; int set_optmax; int (*set)(struct sock *sk, int optval, void __user *user, unsigned int len); - int (*compat_set)(struct sock *sk, int optval, - void __user *user, unsigned int len); int get_optmin; int get_optmax; int (*get)(struct sock *sk, int optval, void __user *user, int *len); - int (*compat_get)(struct sock *sk, int optval, - void __user *user, int *len); /* Number of users inside set() or get(). */ unsigned int use; @@ -109,8 +106,6 @@ struct nf_info /* Function to register/unregister hook points. */ int nf_register_hook(struct nf_hook_ops *reg); void nf_unregister_hook(struct nf_hook_ops *reg); -int nf_register_hooks(struct nf_hook_ops *reg, unsigned int n); -void nf_unregister_hooks(struct nf_hook_ops *reg, unsigned int n); /* Functions to register get/setsockopt ranges (non-inclusive). You need to check permissions yourself! */ @@ -251,11 +246,6 @@ int nf_setsockopt(struct sock *sk, int pf, int optval, char __user *opt, int nf_getsockopt(struct sock *sk, int pf, int optval, char __user *opt, int *len); -int compat_nf_setsockopt(struct sock *sk, int pf, int optval, - char __user *opt, int len); -int compat_nf_getsockopt(struct sock *sk, int pf, int optval, - char __user *opt, int *len); - /* Packet queuing */ struct nf_queue_handler { int (*outfn)(struct sk_buff *skb, struct nf_info *info, @@ -282,43 +272,17 @@ extern void nf_invalidate_cache(int pf); Returns true or false. */ extern int skb_make_writable(struct sk_buff **pskb, unsigned int writable_len); -struct nf_afinfo { - unsigned short family; - unsigned int (*checksum)(struct sk_buff *skb, unsigned int hook, - unsigned int dataoff, u_int8_t protocol); - void (*saveroute)(const struct sk_buff *skb, - struct nf_info *info); - int (*reroute)(struct sk_buff **skb, - const struct nf_info *info); - int route_key_size; +struct nf_queue_rerouter { + void (*save)(const struct sk_buff *skb, struct nf_info *info); + int (*reroute)(struct sk_buff **skb, const struct nf_info *info); + int rer_size; }; -extern struct nf_afinfo *nf_afinfo[]; -static inline struct nf_afinfo *nf_get_afinfo(unsigned short family) -{ - return rcu_dereference(nf_afinfo[family]); -} - -static inline unsigned int -nf_checksum(struct sk_buff *skb, unsigned int hook, unsigned int dataoff, - u_int8_t protocol, unsigned short family) -{ - struct nf_afinfo *afinfo; - unsigned int csum = 0; - - rcu_read_lock(); - afinfo = nf_get_afinfo(family); - if (afinfo) - csum = afinfo->checksum(skb, hook, dataoff, protocol); - rcu_read_unlock(); - return csum; -} - -extern int nf_register_afinfo(struct nf_afinfo *afinfo); -extern void nf_unregister_afinfo(struct nf_afinfo *afinfo); - #define nf_info_reroute(x) ((void *)x + sizeof(struct nf_info)) +extern int nf_register_queue_rerouter(int pf, struct nf_queue_rerouter *rer); +extern int nf_unregister_queue_rerouter(int pf); + #include extern void (*ip_nat_decode_session)(struct sk_buff *, struct flowi *);