netfilter: fix description of expected checkentry return code on xt_target
[linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git] / include / linux / netfilter / nf_conntrack_sip.h
blobff8cfbcf3b81148e483831281752572b2faaac1b
1 #ifndef __NF_CONNTRACK_SIP_H__
2 #define __NF_CONNTRACK_SIP_H__
3 #ifdef __KERNEL__
5 #define SIP_PORT 5060
6 #define SIP_TIMEOUT 3600
8 struct nf_ct_sip_master {
9 unsigned int register_cseq;
10 unsigned int invite_cseq;
13 enum sip_expectation_classes {
14 SIP_EXPECT_SIGNALLING,
15 SIP_EXPECT_AUDIO,
16 SIP_EXPECT_VIDEO,
17 SIP_EXPECT_IMAGE,
18 __SIP_EXPECT_MAX
20 #define SIP_EXPECT_MAX (__SIP_EXPECT_MAX - 1)
22 struct sdp_media_type {
23 const char *name;
24 unsigned int len;
25 enum sip_expectation_classes class;
28 #define SDP_MEDIA_TYPE(__name, __class) \
29 { \
30 .name = (__name), \
31 .len = sizeof(__name) - 1, \
32 .class = (__class), \
35 struct sip_handler {
36 const char *method;
37 unsigned int len;
38 int (*request)(struct sk_buff *skb, unsigned int dataoff,
39 const char **dptr, unsigned int *datalen,
40 unsigned int cseq);
41 int (*response)(struct sk_buff *skb, unsigned int dataoff,
42 const char **dptr, unsigned int *datalen,
43 unsigned int cseq, unsigned int code);
46 #define SIP_HANDLER(__method, __request, __response) \
47 { \
48 .method = (__method), \
49 .len = sizeof(__method) - 1, \
50 .request = (__request), \
51 .response = (__response), \
54 struct sip_header {
55 const char *name;
56 const char *cname;
57 const char *search;
58 unsigned int len;
59 unsigned int clen;
60 unsigned int slen;
61 int (*match_len)(const struct nf_conn *ct,
62 const char *dptr, const char *limit,
63 int *shift);
66 #define __SIP_HDR(__name, __cname, __search, __match) \
67 { \
68 .name = (__name), \
69 .len = sizeof(__name) - 1, \
70 .cname = (__cname), \
71 .clen = (__cname) ? sizeof(__cname) - 1 : 0, \
72 .search = (__search), \
73 .slen = (__search) ? sizeof(__search) - 1 : 0, \
74 .match_len = (__match), \
77 #define SIP_HDR(__name, __cname, __search, __match) \
78 __SIP_HDR(__name, __cname, __search, __match)
80 #define SDP_HDR(__name, __search, __match) \
81 __SIP_HDR(__name, NULL, __search, __match)
83 enum sip_header_types {
84 SIP_HDR_CSEQ,
85 SIP_HDR_FROM,
86 SIP_HDR_TO,
87 SIP_HDR_CONTACT,
88 SIP_HDR_VIA_UDP,
89 SIP_HDR_VIA_TCP,
90 SIP_HDR_EXPIRES,
91 SIP_HDR_CONTENT_LENGTH,
94 enum sdp_header_types {
95 SDP_HDR_UNSPEC,
96 SDP_HDR_VERSION,
97 SDP_HDR_OWNER_IP4,
98 SDP_HDR_CONNECTION_IP4,
99 SDP_HDR_OWNER_IP6,
100 SDP_HDR_CONNECTION_IP6,
101 SDP_HDR_MEDIA,
104 extern unsigned int (*nf_nat_sip_hook)(struct sk_buff *skb,
105 unsigned int dataoff,
106 const char **dptr,
107 unsigned int *datalen);
108 extern void (*nf_nat_sip_seq_adjust_hook)(struct sk_buff *skb, s16 off);
109 extern unsigned int (*nf_nat_sip_expect_hook)(struct sk_buff *skb,
110 unsigned int dataoff,
111 const char **dptr,
112 unsigned int *datalen,
113 struct nf_conntrack_expect *exp,
114 unsigned int matchoff,
115 unsigned int matchlen);
116 extern unsigned int (*nf_nat_sdp_addr_hook)(struct sk_buff *skb,
117 unsigned int dataoff,
118 const char **dptr,
119 unsigned int *datalen,
120 unsigned int sdpoff,
121 enum sdp_header_types type,
122 enum sdp_header_types term,
123 const union nf_inet_addr *addr);
124 extern unsigned int (*nf_nat_sdp_port_hook)(struct sk_buff *skb,
125 unsigned int dataoff,
126 const char **dptr,
127 unsigned int *datalen,
128 unsigned int matchoff,
129 unsigned int matchlen,
130 u_int16_t port);
131 extern unsigned int (*nf_nat_sdp_session_hook)(struct sk_buff *skb,
132 unsigned int dataoff,
133 const char **dptr,
134 unsigned int *datalen,
135 unsigned int sdpoff,
136 const union nf_inet_addr *addr);
137 extern unsigned int (*nf_nat_sdp_media_hook)(struct sk_buff *skb,
138 unsigned int dataoff,
139 const char **dptr,
140 unsigned int *datalen,
141 struct nf_conntrack_expect *rtp_exp,
142 struct nf_conntrack_expect *rtcp_exp,
143 unsigned int mediaoff,
144 unsigned int medialen,
145 union nf_inet_addr *rtp_addr);
147 extern int ct_sip_parse_request(const struct nf_conn *ct,
148 const char *dptr, unsigned int datalen,
149 unsigned int *matchoff, unsigned int *matchlen,
150 union nf_inet_addr *addr, __be16 *port);
151 extern int ct_sip_get_header(const struct nf_conn *ct, const char *dptr,
152 unsigned int dataoff, unsigned int datalen,
153 enum sip_header_types type,
154 unsigned int *matchoff, unsigned int *matchlen);
155 extern int ct_sip_parse_header_uri(const struct nf_conn *ct, const char *dptr,
156 unsigned int *dataoff, unsigned int datalen,
157 enum sip_header_types type, int *in_header,
158 unsigned int *matchoff, unsigned int *matchlen,
159 union nf_inet_addr *addr, __be16 *port);
160 extern int ct_sip_parse_address_param(const struct nf_conn *ct, const char *dptr,
161 unsigned int dataoff, unsigned int datalen,
162 const char *name,
163 unsigned int *matchoff, unsigned int *matchlen,
164 union nf_inet_addr *addr);
165 extern int ct_sip_parse_numerical_param(const struct nf_conn *ct, const char *dptr,
166 unsigned int off, unsigned int datalen,
167 const char *name,
168 unsigned int *matchoff, unsigned int *matchen,
169 unsigned int *val);
171 extern int ct_sip_get_sdp_header(const struct nf_conn *ct, const char *dptr,
172 unsigned int dataoff, unsigned int datalen,
173 enum sdp_header_types type,
174 enum sdp_header_types term,
175 unsigned int *matchoff, unsigned int *matchlen);
177 #endif /* __KERNEL__ */
178 #endif /* __NF_CONNTRACK_SIP_H__ */