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 	u_int8_t		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(u_int8_t pf,
28 				     const struct nf_queue_handler *qh);
29 extern int nf_unregister_queue_handler(u_int8_t 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 */
35