Commit f5b321bd authored by Patrick McHardy's avatar Patrick McHardy

netfilter: nf_conntrack_sip: add TCP support

Add TCP support, which is mandated by RFC3261 for all SIP elements.

SIP over TCP is similar to UDP, except that messages are delimited
by Content-Length: headers and multiple messages may appear in one
packet.
Signed-off-by: default avatarPatrick McHardy <kaber@trash.net>
parent 3b6b9fab
...@@ -84,7 +84,8 @@ enum sip_header_types { ...@@ -84,7 +84,8 @@ enum sip_header_types {
SIP_HDR_FROM, SIP_HDR_FROM,
SIP_HDR_TO, SIP_HDR_TO,
SIP_HDR_CONTACT, SIP_HDR_CONTACT,
SIP_HDR_VIA, SIP_HDR_VIA_UDP,
SIP_HDR_VIA_TCP,
SIP_HDR_EXPIRES, SIP_HDR_EXPIRES,
SIP_HDR_CONTENT_LENGTH, SIP_HDR_CONTENT_LENGTH,
}; };
......
...@@ -122,7 +122,7 @@ static unsigned int ip_nat_sip(struct sk_buff *skb, unsigned int dataoff, ...@@ -122,7 +122,7 @@ static unsigned int ip_nat_sip(struct sk_buff *skb, unsigned int dataoff,
/* Translate topmost Via header and parameters */ /* Translate topmost Via header and parameters */
if (ct_sip_parse_header_uri(ct, *dptr, NULL, *datalen, if (ct_sip_parse_header_uri(ct, *dptr, NULL, *datalen,
SIP_HDR_VIA, NULL, &matchoff, &matchlen, SIP_HDR_VIA_UDP, NULL, &matchoff, &matchlen,
&addr, &port) > 0) { &addr, &port) > 0) {
unsigned int matchend, poff, plen, buflen, n; unsigned int matchend, poff, plen, buflen, n;
char buffer[sizeof("nnn.nnn.nnn.nnn:nnnnn")]; char buffer[sizeof("nnn.nnn.nnn.nnn:nnnnn")];
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment