* 15-Mar-2000: Added NF_REPEAT --RR.
* 08-May-2003: Internal logging interface added by Jozsef Kadlecsik.
*/
+#include <linux/config.h>
#include <linux/kernel.h>
#include <linux/netfilter.h>
#include <net/protocol.h>
#include "nf_internals.h"
-static DEFINE_SPINLOCK(afinfo_lock);
-
-struct nf_afinfo *nf_afinfo[NPROTO];
-EXPORT_SYMBOL(nf_afinfo);
-
-int nf_register_afinfo(struct nf_afinfo *afinfo)
-{
- spin_lock(&afinfo_lock);
- rcu_assign_pointer(nf_afinfo[afinfo->family], afinfo);
- spin_unlock(&afinfo_lock);
- return 0;
-}
-EXPORT_SYMBOL_GPL(nf_register_afinfo);
-
-void nf_unregister_afinfo(struct nf_afinfo *afinfo)
-{
- spin_lock(&afinfo_lock);
- rcu_assign_pointer(nf_afinfo[afinfo->family], NULL);
- spin_unlock(&afinfo_lock);
- synchronize_rcu();
-}
-EXPORT_SYMBOL_GPL(nf_unregister_afinfo);
-
/* In this code, we can be waiting indefinitely for userspace to
* service a packet if a hook returns NF_QUEUE. We could keep a count
* of skbuffs queued for userspace, and not deregister a hook unless
}
EXPORT_SYMBOL(nf_unregister_hook);
-int nf_register_hooks(struct nf_hook_ops *reg, unsigned int n)
-{
- unsigned int i;
- int err = 0;
-
- for (i = 0; i < n; i++) {
- err = nf_register_hook(®[i]);
- if (err)
- goto err;
- }
- return err;
-
-err:
- if (i > 0)
- nf_unregister_hooks(reg, i);
- return err;
-}
-EXPORT_SYMBOL(nf_register_hooks);
-
-void nf_unregister_hooks(struct nf_hook_ops *reg, unsigned int n)
-{
- unsigned int i;
-
- for (i = 0; i < n; i++)
- nf_unregister_hook(®[i]);
-}
-EXPORT_SYMBOL(nf_unregister_hooks);
-
unsigned int nf_iterate(struct list_head *head,
struct sk_buff **skb,
int hook,