diff options
author | Patrick McHardy <kaber@trash.net> | 2008-03-25 20:22:53 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-03-25 20:22:53 -0700 |
commit | 595a8ecb5fa41295a7010678b60cb2f7ab15fe42 (patch) | |
tree | 6b18b6b6eebd1ecf7348022fb7b3e749369f8e68 | |
parent | 33cb1e9a93312f0cdd34e0be2bc88e893ff96a33 (diff) |
[NETFILTER]: nf_conntrack_sip: process ACK and PRACK methods
Both may contains SDP offers/answers.
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/netfilter/nf_conntrack_sip.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/net/netfilter/nf_conntrack_sip.c b/net/netfilter/nf_conntrack_sip.c index 29a37d21269..71f744ad765 100644 --- a/net/netfilter/nf_conntrack_sip.c +++ b/net/netfilter/nf_conntrack_sip.c @@ -624,9 +624,22 @@ static int process_update_response(struct sk_buff *skb, return NF_ACCEPT; } +static int process_prack_response(struct sk_buff *skb, + const char **dptr, unsigned int *datalen, + unsigned int cseq, unsigned int code) +{ + if ((code >= 100 && code <= 199) || + (code >= 200 && code <= 299)) + return process_sdp(skb, dptr, datalen, cseq); + + return NF_ACCEPT; +} + static const struct sip_handler sip_handlers[] = { SIP_HANDLER("INVITE", process_sdp, process_invite_response), SIP_HANDLER("UPDATE", process_sdp, process_update_response), + SIP_HANDLER("ACK", process_sdp, NULL), + SIP_HANDLER("PRACK", process_sdp, process_prack_response), }; static int process_sip_response(struct sk_buff *skb, |