1 #ifndef __NF_CONNTRACK_SIP_H__
2 #define __NF_CONNTRACK_SIP_H__
6 #define SIP_TIMEOUT 3600
25 int (*match_len)(const struct nf_conn *ct,
26 const char *dptr, const char *limit,
30 #define __SIP_HDR(__name, __cname, __search, __match) \
33 .len = sizeof(__name) - 1, \
35 .clen = (__cname) ? sizeof(__cname) - 1 : 0, \
36 .search = (__search), \
37 .slen = (__search) ? sizeof(__search) - 1 : 0, \
38 .match_len = (__match), \
41 #define SDP_HDR(__name, __search, __match) \
42 __SIP_HDR(__name, NULL, __search, __match)
44 enum sdp_header_types {
48 SDP_HDR_CONNECTION_IP4,
50 SDP_HDR_CONNECTION_IP6,
54 extern unsigned int (*nf_nat_sip_hook)(struct sk_buff *skb,
56 unsigned int *datalen);
57 extern unsigned int (*nf_nat_sdp_hook)(struct sk_buff *skb,
59 unsigned int *datalen,
60 struct nf_conntrack_expect *exp);
62 extern int ct_sip_get_info(const struct nf_conn *ct, const char *dptr,
63 size_t dlen, unsigned int *matchoff,
64 unsigned int *matchlen, enum sip_header_pos pos);
65 extern int ct_sip_lnlen(const char *line, const char *limit);
66 extern const char *ct_sip_search(const char *needle, const char *haystack,
67 size_t needle_len, size_t haystack_len,
70 extern 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);
76 #endif /* __KERNEL__ */
77 #endif /* __NF_CONNTRACK_SIP_H__ */