linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / include / linux / netfilter.h
index 10168e2..4688969 100644 (file)
@@ -40,6 +40,7 @@
 #endif
 
 #ifdef __KERNEL__
+#include <linux/config.h>
 #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 <net/flow.h>
 extern void (*ip_nat_decode_session)(struct sk_buff *, struct flowi *);