blob: 252fd1010b77c090766eab54ff02dd60197edc1b [file] [log] [blame]
Patrick McHardyc01cd422007-12-05 01:24:48 -08001#ifndef _NF_QUEUE_H
2#define _NF_QUEUE_H
3
4/* Each queued (to userspace) skbuff has one of these. */
Patrick McHardy02f014d2007-12-05 01:26:33 -08005struct nf_queue_entry {
6 struct list_head list;
7 struct sk_buff *skb;
8 unsigned int id;
9
Patrick McHardyc01cd422007-12-05 01:24:48 -080010 struct nf_hook_ops *elem;
Jan Engelhardt76108ce2008-10-08 11:35:00 +020011 u_int8_t pf;
Patrick McHardyc01cd422007-12-05 01:24:48 -080012 unsigned int hook;
13 struct net_device *indev;
14 struct net_device *outdev;
15 int (*okfn)(struct sk_buff *);
16};
17
Patrick McHardy02f014d2007-12-05 01:26:33 -080018#define nf_queue_entry_reroute(x) ((void *)x + sizeof(struct nf_queue_entry))
Patrick McHardyc01cd422007-12-05 01:24:48 -080019
20/* Packet queuing */
21struct nf_queue_handler {
Patrick McHardy02f014d2007-12-05 01:26:33 -080022 int (*outfn)(struct nf_queue_entry *entry,
Patrick McHardyc01cd422007-12-05 01:24:48 -080023 unsigned int queuenum);
24 char *name;
25};
26
Jan Engelhardt76108ce2008-10-08 11:35:00 +020027extern int nf_register_queue_handler(u_int8_t pf,
Patrick McHardyc01cd422007-12-05 01:24:48 -080028 const struct nf_queue_handler *qh);
Jan Engelhardt76108ce2008-10-08 11:35:00 +020029extern int nf_unregister_queue_handler(u_int8_t pf,
Patrick McHardyc01cd422007-12-05 01:24:48 -080030 const struct nf_queue_handler *qh);
31extern void nf_unregister_queue_handlers(const struct nf_queue_handler *qh);
Patrick McHardy02f014d2007-12-05 01:26:33 -080032extern void nf_reinject(struct nf_queue_entry *entry, unsigned int verdict);
Patrick McHardyc01cd422007-12-05 01:24:48 -080033
34#endif /* _NF_QUEUE_H */