1 #ifndef __NF_CONNTRACK_SIP_H__
2 #define __NF_CONNTRACK_SIP_H__
6 #define SIP_TIMEOUT 3600
15 int (*match_len)(const struct nf_conn *ct,
16 const char *dptr, const char *limit,
20 #define __SIP_HDR(__name, __cname, __search, __match) \
23 .len = sizeof(__name) - 1, \
25 .clen = (__cname) ? sizeof(__cname) - 1 : 0, \
26 .search = (__search), \
27 .slen = (__search) ? sizeof(__search) - 1 : 0, \
28 .match_len = (__match), \
31 #define SIP_HDR(__name, __cname, __search, __match) \
32 __SIP_HDR(__name, __cname, __search, __match)
34 #define SDP_HDR(__name, __search, __match) \
35 __SIP_HDR(__name, NULL, __search, __match)
37 enum sip_header_types {
42 SIP_HDR_CONTENT_LENGTH,
45 enum sdp_header_types {
49 SDP_HDR_CONNECTION_IP4,
51 SDP_HDR_CONNECTION_IP6,
55 extern unsigned int (*nf_nat_sip_hook)(struct sk_buff *skb,
57 unsigned int *datalen);
58 extern unsigned int (*nf_nat_sdp_hook)(struct sk_buff *skb,
60 unsigned int *datalen,
61 struct nf_conntrack_expect *exp);
63 extern int ct_sip_parse_request(const struct nf_conn *ct,
64 const char *dptr, unsigned int datalen,
65 unsigned int *matchoff, unsigned int *matchlen);
66 extern int ct_sip_get_header(const struct nf_conn *ct, const char *dptr,
67 unsigned int dataoff, unsigned int datalen,
68 enum sip_header_types type,
69 unsigned int *matchoff, unsigned int *matchlen);
71 extern int ct_sip_get_sdp_header(const struct nf_conn *ct, const char *dptr,
72 unsigned int dataoff, unsigned int datalen,
73 enum sdp_header_types type,
74 enum sdp_header_types term,
75 unsigned int *matchoff, unsigned int *matchlen);
77 #endif /* __KERNEL__ */
78 #endif /* __NF_CONNTRACK_SIP_H__ */