Merge branch 'for-2.6.27' of git://git.marvell.com/mv643xx_eth into upstream-fixes
[linux-2.6] / include / net / netfilter / nf_queue.h
1 #ifndef _NF_QUEUE_H
2 #define _NF_QUEUE_H
3
4 /* Each queued (to userspace) skbuff has one of these. */
5 struct nf_queue_entry {
6         struct list_head        list;
7         struct sk_buff          *skb;
8         unsigned int            id;
9
10         struct nf_hook_ops      *elem;
11         int                     pf;
12         unsigned int            hook;
13         struct net_device       *indev;
14         struct net_device       *outdev;
15         int                     (*okfn)(struct sk_buff *);
16 };
17
18 #define nf_queue_entry_reroute(x) ((void *)x + sizeof(struct nf_queue_entry))
19
20 /* Packet queuing */
21 struct nf_queue_handler {
22         int                     (*outfn)(struct nf_queue_entry *entry,
23                                          unsigned int queuenum);
24         char                    *name;
25 };
26
27 extern int nf_register_queue_handler(int pf,
28                                      const struct nf_queue_handler *qh);
29 extern int nf_unregister_queue_handler(int pf,
30                                        const struct nf_queue_handler *qh);
31 extern void nf_unregister_queue_handlers(const struct nf_queue_handler *qh);
32 extern void nf_reinject(struct nf_queue_entry *entry, unsigned int verdict);
33
34 #endif /* _NF_QUEUE_H */