aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/netfilter/nf_conntrack_sip.h49
1 files changed, 43 insertions, 6 deletions
diff --git a/include/linux/netfilter/nf_conntrack_sip.h b/include/linux/netfilter/nf_conntrack_sip.h
index b94de3d60303..9131cbc9b9de 100644
--- a/include/linux/netfilter/nf_conntrack_sip.h
+++ b/include/linux/netfilter/nf_conntrack_sip.h
@@ -13,12 +13,42 @@ enum sip_header_pos {
13 POS_VIA, 13 POS_VIA,
14 POS_CONTACT, 14 POS_CONTACT,
15 POS_CONTENT, 15 POS_CONTENT,
16 POS_MEDIA, 16};
17 POS_OWNER_IP4, 17
18 POS_CONNECTION_IP4, 18struct sip_header {
19 POS_OWNER_IP6, 19 const char *name;
20 POS_CONNECTION_IP6, 20 const char *cname;
21 POS_SDP_HEADER, 21 const char *search;
22 unsigned int len;
23 unsigned int clen;
24 unsigned int slen;
25 int (*match_len)(const struct nf_conn *ct,
26 const char *dptr, const char *limit,
27 int *shift);
28};
29
30#define __SIP_HDR(__name, __cname, __search, __match) \
31{ \
32 .name = (__name), \
33 .len = sizeof(__name) - 1, \
34 .cname = (__cname), \
35 .clen = (__cname) ? sizeof(__cname) - 1 : 0, \
36 .search = (__search), \
37 .slen = (__search) ? sizeof(__search) - 1 : 0, \
38 .match_len = (__match), \
39}
40
41#define SDP_HDR(__name, __search, __match) \
42 __SIP_HDR(__name, NULL, __search, __match)
43
44enum sdp_header_types {
45 SDP_HDR_UNSPEC,
46 SDP_HDR_VERSION,
47 SDP_HDR_OWNER_IP4,
48 SDP_HDR_CONNECTION_IP4,
49 SDP_HDR_OWNER_IP6,
50 SDP_HDR_CONNECTION_IP6,
51 SDP_HDR_MEDIA,
22}; 52};
23 53
24extern unsigned int (*nf_nat_sip_hook)(struct sk_buff *skb, 54extern unsigned int (*nf_nat_sip_hook)(struct sk_buff *skb,
@@ -36,5 +66,12 @@ extern int ct_sip_lnlen(const char *line, const char *limit);
36extern const char *ct_sip_search(const char *needle, const char *haystack, 66extern const char *ct_sip_search(const char *needle, const char *haystack,
37 size_t needle_len, size_t haystack_len, 67 size_t needle_len, size_t haystack_len,
38 int case_sensitive); 68 int case_sensitive);
69
70extern int ct_sip_get_sdp_header(const struct nf_conn *ct, const char *dptr,
71 unsigned int dataoff, unsigned int datalen,
72 enum sdp_header_types type,
73 enum sdp_header_types term,
74 unsigned int *matchoff, unsigned int *matchlen);
75
39#endif /* __KERNEL__ */ 76#endif /* __KERNEL__ */
40#endif /* __NF_CONNTRACK_SIP_H__ */ 77#endif /* __NF_CONNTRACK_SIP_H__ */