1 #ifndef __NF_CONNTRACK_SIP_H__
2 #define __NF_CONNTRACK_SIP_H__
6 #define SIP_TIMEOUT 3600
11 int (*request
)(struct sk_buff
*skb
,
12 const char **dptr
, unsigned int *datalen
,
14 int (*response
)(struct sk_buff
*skb
,
15 const char **dptr
, unsigned int *datalen
,
16 unsigned int cseq
, unsigned int code
);
19 #define SIP_HANDLER(__method, __request, __response) \
21 .method = (__method), \
22 .len = sizeof(__method) - 1, \
23 .request = (__request), \
24 .response = (__response), \
34 int (*match_len
)(const struct nf_conn
*ct
,
35 const char *dptr
, const char *limit
,
39 #define __SIP_HDR(__name, __cname, __search, __match) \
42 .len = sizeof(__name) - 1, \
44 .clen = (__cname) ? sizeof(__cname) - 1 : 0, \
45 .search = (__search), \
46 .slen = (__search) ? sizeof(__search) - 1 : 0, \
47 .match_len = (__match), \
50 #define SIP_HDR(__name, __cname, __search, __match) \
51 __SIP_HDR(__name, __cname, __search, __match)
53 #define SDP_HDR(__name, __search, __match) \
54 __SIP_HDR(__name, NULL, __search, __match)
56 enum sip_header_types
{
62 SIP_HDR_CONTENT_LENGTH
,
65 enum sdp_header_types
{
69 SDP_HDR_CONNECTION_IP4
,
71 SDP_HDR_CONNECTION_IP6
,
75 extern unsigned int (*nf_nat_sip_hook
)(struct sk_buff
*skb
,
77 unsigned int *datalen
);
78 extern unsigned int (*nf_nat_sdp_hook
)(struct sk_buff
*skb
,
80 unsigned int *datalen
,
81 struct nf_conntrack_expect
*exp
);
83 extern int ct_sip_parse_request(const struct nf_conn
*ct
,
84 const char *dptr
, unsigned int datalen
,
85 unsigned int *matchoff
, unsigned int *matchlen
,
86 union nf_inet_addr
*addr
, __be16
*port
);
87 extern int ct_sip_get_header(const struct nf_conn
*ct
, const char *dptr
,
88 unsigned int dataoff
, unsigned int datalen
,
89 enum sip_header_types type
,
90 unsigned int *matchoff
, unsigned int *matchlen
);
91 extern int ct_sip_parse_header_uri(const struct nf_conn
*ct
, const char *dptr
,
92 unsigned int *dataoff
, unsigned int datalen
,
93 enum sip_header_types type
, int *in_header
,
94 unsigned int *matchoff
, unsigned int *matchlen
,
95 union nf_inet_addr
*addr
, __be16
*port
);
97 extern int ct_sip_get_sdp_header(const struct nf_conn
*ct
, const char *dptr
,
98 unsigned int dataoff
, unsigned int datalen
,
99 enum sdp_header_types type
,
100 enum sdp_header_types term
,
101 unsigned int *matchoff
, unsigned int *matchlen
);
103 #endif /* __KERNEL__ */
104 #endif /* __NF_CONNTRACK_SIP_H__ */