diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2013-08-07 12:13:20 -0400 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2013-08-13 10:32:10 -0400 |
commit | bd0779370588386e4a67ba5d0b176cfded8e6a53 (patch) | |
tree | 7fddb1464b457c3288ced39a635fd38f0d207ba5 /include | |
parent | 0ef71ee1a5b92c038abefd8991d5368e6031d7de (diff) |
netfilter: nfnetlink_queue: allow to attach expectations to conntracks
This patch adds the capability to attach expectations via nfnetlink_queue.
This is required by conntrack helpers that trigger expectations based on
the first packet seen like the TFTP and the DHCPv6 user-space helpers.
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/netfilter.h | 2 | ||||
-rw-r--r-- | include/net/netfilter/nfnetlink_queue.h | 8 | ||||
-rw-r--r-- | include/uapi/linux/netfilter/nfnetlink_queue.h | 1 |
3 files changed, 11 insertions, 0 deletions
diff --git a/include/linux/netfilter.h b/include/linux/netfilter.h index 655d5d198d49..e2cf786be22f 100644 --- a/include/linux/netfilter.h +++ b/include/linux/netfilter.h | |||
@@ -325,6 +325,8 @@ struct nfq_ct_hook { | |||
325 | size_t (*build_size)(const struct nf_conn *ct); | 325 | size_t (*build_size)(const struct nf_conn *ct); |
326 | int (*build)(struct sk_buff *skb, struct nf_conn *ct); | 326 | int (*build)(struct sk_buff *skb, struct nf_conn *ct); |
327 | int (*parse)(const struct nlattr *attr, struct nf_conn *ct); | 327 | int (*parse)(const struct nlattr *attr, struct nf_conn *ct); |
328 | int (*attach_expect)(const struct nlattr *attr, struct nf_conn *ct, | ||
329 | u32 portid, u32 report); | ||
328 | }; | 330 | }; |
329 | extern struct nfq_ct_hook __rcu *nfq_ct_hook; | 331 | extern struct nfq_ct_hook __rcu *nfq_ct_hook; |
330 | 332 | ||
diff --git a/include/net/netfilter/nfnetlink_queue.h b/include/net/netfilter/nfnetlink_queue.h index 86267a529514..aff88ba91391 100644 --- a/include/net/netfilter/nfnetlink_queue.h +++ b/include/net/netfilter/nfnetlink_queue.h | |||
@@ -15,6 +15,8 @@ int nfqnl_ct_put(struct sk_buff *skb, struct nf_conn *ct, | |||
15 | enum ip_conntrack_info ctinfo); | 15 | enum ip_conntrack_info ctinfo); |
16 | void nfqnl_ct_seq_adjust(struct sk_buff *skb, struct nf_conn *ct, | 16 | void nfqnl_ct_seq_adjust(struct sk_buff *skb, struct nf_conn *ct, |
17 | enum ip_conntrack_info ctinfo, int diff); | 17 | enum ip_conntrack_info ctinfo, int diff); |
18 | int nfqnl_attach_expect(struct nf_conn *ct, const struct nlattr *attr, | ||
19 | u32 portid, u32 report); | ||
18 | #else | 20 | #else |
19 | inline struct nf_conn * | 21 | inline struct nf_conn * |
20 | nfqnl_ct_get(struct sk_buff *entskb, size_t *size, enum ip_conntrack_info *ctinfo) | 22 | nfqnl_ct_get(struct sk_buff *entskb, size_t *size, enum ip_conntrack_info *ctinfo) |
@@ -39,5 +41,11 @@ inline void nfqnl_ct_seq_adjust(struct sk_buff *skb, struct nf_conn *ct, | |||
39 | enum ip_conntrack_info ctinfo, int diff) | 41 | enum ip_conntrack_info ctinfo, int diff) |
40 | { | 42 | { |
41 | } | 43 | } |
44 | |||
45 | inline int nfqnl_attach_expect(struct nf_conn *ct, const struct nlattr *attr, | ||
46 | u32 portid, u32 report) | ||
47 | { | ||
48 | return 0; | ||
49 | } | ||
42 | #endif /* NF_CONNTRACK */ | 50 | #endif /* NF_CONNTRACK */ |
43 | #endif | 51 | #endif |
diff --git a/include/uapi/linux/netfilter/nfnetlink_queue.h b/include/uapi/linux/netfilter/nfnetlink_queue.h index 3a9b92147339..0132bad79de7 100644 --- a/include/uapi/linux/netfilter/nfnetlink_queue.h +++ b/include/uapi/linux/netfilter/nfnetlink_queue.h | |||
@@ -46,6 +46,7 @@ enum nfqnl_attr_type { | |||
46 | NFQA_CT_INFO, /* enum ip_conntrack_info */ | 46 | NFQA_CT_INFO, /* enum ip_conntrack_info */ |
47 | NFQA_CAP_LEN, /* __u32 length of captured packet */ | 47 | NFQA_CAP_LEN, /* __u32 length of captured packet */ |
48 | NFQA_SKB_INFO, /* __u32 skb meta information */ | 48 | NFQA_SKB_INFO, /* __u32 skb meta information */ |
49 | NFQA_EXP, /* nf_conntrack_netlink.h */ | ||
49 | 50 | ||
50 | __NFQA_MAX | 51 | __NFQA_MAX |
51 | }; | 52 | }; |