Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
linux
netfilter
nf_conntrack_sip.h
Go to the documentation of this file.
1
#ifndef __NF_CONNTRACK_SIP_H__
2
#define __NF_CONNTRACK_SIP_H__
3
#ifdef __KERNEL__
4
5
#include <
net/netfilter/nf_conntrack_expect.h
>
6
7
#define SIP_PORT 5060
8
#define SIP_TIMEOUT 3600
9
10
struct
nf_ct_sip_master {
11
unsigned
int
register_cseq;
12
unsigned
int
invite_cseq;
13
};
14
15
enum
sip_expectation_classes {
16
SIP_EXPECT_SIGNALLING,
17
SIP_EXPECT_AUDIO,
18
SIP_EXPECT_VIDEO,
19
SIP_EXPECT_IMAGE,
20
__SIP_EXPECT_MAX
21
};
22
#define SIP_EXPECT_MAX (__SIP_EXPECT_MAX - 1)
23
24
struct
sdp_media_type {
25
const
char
*
name
;
26
unsigned
int
len
;
27
enum
sip_expectation_classes
class
;
28
};
29
30
#define SDP_MEDIA_TYPE(__name, __class) \
31
{ \
32
.name = (__name), \
33
.len = sizeof(__name) - 1, \
34
.class = (__class), \
35
}
36
37
struct
sip_handler {
38
const
char
*
method
;
39
unsigned
int
len
;
40
int
(*
request
)(
struct
sk_buff
*
skb
,
unsigned
int
protoff,
41
unsigned
int
dataoff,
42
const
char
**dptr,
unsigned
int
*
datalen
,
43
unsigned
int
cseq);
44
int
(*
response
)(
struct
sk_buff
*
skb
,
unsigned
int
protoff,
45
unsigned
int
dataoff,
46
const
char
**dptr,
unsigned
int
*
datalen
,
47
unsigned
int
cseq,
unsigned
int
code
);
48
};
49
50
#define SIP_HANDLER(__method, __request, __response) \
51
{ \
52
.method = (__method), \
53
.len = sizeof(__method) - 1, \
54
.request = (__request), \
55
.response = (__response), \
56
}
57
58
struct
sip_header {
59
const
char
*
name
;
60
const
char
*
cname
;
61
const
char
*
search
;
62
unsigned
int
len
;
63
unsigned
int
clen
;
64
unsigned
int
slen;
65
int
(*match_len)(
const
struct
nf_conn
*
ct
,
66
const
char
*dptr,
const
char
*
limit
,
67
int
*shift);
68
};
69
70
#define __SIP_HDR(__name, __cname, __search, __match) \
71
{ \
72
.name = (__name), \
73
.len = sizeof(__name) - 1, \
74
.cname = (__cname), \
75
.clen = (__cname) ? sizeof(__cname) - 1 : 0, \
76
.search = (__search), \
77
.slen = (__search) ? sizeof(__search) - 1 : 0, \
78
.match_len = (__match), \
79
}
80
81
#define SIP_HDR(__name, __cname, __search, __match) \
82
__SIP_HDR(__name, __cname, __search, __match)
83
84
#define SDP_HDR(__name, __search, __match) \
85
__SIP_HDR(__name, NULL, __search, __match)
86
87
enum
sip_header_types {
88
SIP_HDR_CSEQ,
89
SIP_HDR_FROM,
90
SIP_HDR_TO,
91
SIP_HDR_CONTACT,
92
SIP_HDR_VIA_UDP,
93
SIP_HDR_VIA_TCP,
94
SIP_HDR_EXPIRES,
95
SIP_HDR_CONTENT_LENGTH,
96
SIP_HDR_CALL_ID,
97
};
98
99
enum
sdp_header_types {
100
SDP_HDR_UNSPEC,
101
SDP_HDR_VERSION,
102
SDP_HDR_OWNER,
103
SDP_HDR_CONNECTION,
104
SDP_HDR_MEDIA,
105
};
106
107
extern
unsigned
int
(*
nf_nat_sip_hook
)(
struct
sk_buff
*
skb
,
108
unsigned
int
protoff,
109
unsigned
int
dataoff,
110
const
char
**dptr,
111
unsigned
int
*
datalen
);
112
extern
void
(*
nf_nat_sip_seq_adjust_hook
)(
struct
sk_buff
*
skb
,
113
unsigned
int
protoff,
s16
off);
114
extern
unsigned
int
(*
nf_nat_sip_expect_hook
)(
struct
sk_buff
*
skb
,
115
unsigned
int
protoff,
116
unsigned
int
dataoff,
117
const
char
**dptr,
118
unsigned
int
*
datalen
,
119
struct
nf_conntrack_expect
*
exp
,
120
unsigned
int
matchoff,
121
unsigned
int
matchlen);
122
extern
unsigned
int
(*
nf_nat_sdp_addr_hook
)(
struct
sk_buff
*
skb
,
123
unsigned
int
protoff,
124
unsigned
int
dataoff,
125
const
char
**dptr,
126
unsigned
int
*
datalen
,
127
unsigned
int
sdpoff,
128
enum
sdp_header_types
type
,
129
enum
sdp_header_types term,
130
const
union
nf_inet_addr
*
addr
);
131
extern
unsigned
int
(*
nf_nat_sdp_port_hook
)(
struct
sk_buff
*
skb
,
132
unsigned
int
protoff,
133
unsigned
int
dataoff,
134
const
char
**dptr,
135
unsigned
int
*
datalen
,
136
unsigned
int
matchoff,
137
unsigned
int
matchlen,
138
u_int16_t
port
);
139
extern
unsigned
int
(*
nf_nat_sdp_session_hook
)(
struct
sk_buff
*
skb
,
140
unsigned
int
protoff,
141
unsigned
int
dataoff,
142
const
char
**dptr,
143
unsigned
int
*
datalen
,
144
unsigned
int
sdpoff,
145
const
union
nf_inet_addr
*
addr
);
146
extern
unsigned
int
(*
nf_nat_sdp_media_hook
)(
struct
sk_buff
*
skb
,
147
unsigned
int
protoff,
148
unsigned
int
dataoff,
149
const
char
**dptr,
150
unsigned
int
*
datalen
,
151
struct
nf_conntrack_expect
*rtp_exp,
152
struct
nf_conntrack_expect
*rtcp_exp,
153
unsigned
int
mediaoff,
154
unsigned
int
medialen,
155
union
nf_inet_addr
*rtp_addr);
156
157
extern
int
ct_sip_parse_request
(
const
struct
nf_conn
*
ct
,
158
const
char
*dptr,
unsigned
int
datalen
,
159
unsigned
int
*matchoff,
unsigned
int
*matchlen,
160
union
nf_inet_addr
*
addr
,
__be16
*
port
);
161
extern
int
ct_sip_get_header
(
const
struct
nf_conn
*
ct
,
const
char
*dptr,
162
unsigned
int
dataoff,
unsigned
int
datalen
,
163
enum
sip_header_types
type
,
164
unsigned
int
*matchoff,
unsigned
int
*matchlen);
165
extern
int
ct_sip_parse_header_uri
(
const
struct
nf_conn
*
ct
,
const
char
*dptr,
166
unsigned
int
*dataoff,
unsigned
int
datalen
,
167
enum
sip_header_types
type
,
int
*in_header,
168
unsigned
int
*matchoff,
unsigned
int
*matchlen,
169
union
nf_inet_addr
*
addr
,
__be16
*
port
);
170
extern
int
ct_sip_parse_address_param
(
const
struct
nf_conn
*
ct
,
const
char
*dptr,
171
unsigned
int
dataoff,
unsigned
int
datalen
,
172
const
char
*
name
,
173
unsigned
int
*matchoff,
unsigned
int
*matchlen,
174
union
nf_inet_addr
*
addr
,
bool
delim);
175
extern
int
ct_sip_parse_numerical_param
(
const
struct
nf_conn
*
ct
,
const
char
*dptr,
176
unsigned
int
off,
unsigned
int
datalen
,
177
const
char
*
name
,
178
unsigned
int
*matchoff,
unsigned
int
*matchen,
179
unsigned
int
*
val
);
180
181
extern
int
ct_sip_get_sdp_header
(
const
struct
nf_conn
*
ct
,
const
char
*dptr,
182
unsigned
int
dataoff,
unsigned
int
datalen
,
183
enum
sdp_header_types
type
,
184
enum
sdp_header_types term,
185
unsigned
int
*matchoff,
unsigned
int
*matchlen);
186
187
#endif
/* __KERNEL__ */
188
#endif
/* __NF_CONNTRACK_SIP_H__ */
Generated on Thu Jan 10 2013 14:52:09 for Linux Kernel by
1.8.2