Skip to content
  • Kevin Cernekee's avatar
    netfilter: nf_ct_sip: support Cisco 7941/7945 IP phones · 7266507d
    Kevin Cernekee authored
    
    
    Most SIP devices use a source port of 5060/udp on SIP requests, so the
    response automatically comes back to port 5060:
    
        phone_ip:5060 -> proxy_ip:5060   REGISTER
        proxy_ip:5060 -> phone_ip:5060   100 Trying
    
    The newer Cisco IP phones, however, use a randomly chosen high source
    port for the SIP request but expect the response on port 5060:
    
        phone_ip:49173 -> proxy_ip:5060  REGISTER
        proxy_ip:5060 -> phone_ip:5060   100 Trying
    
    Standard Linux NAT, with or without nf_nat_sip, will send the reply back
    to port 49173, not 5060:
    
        phone_ip:49173 -> proxy_ip:5060  REGISTER
        proxy_ip:5060 -> phone_ip:49173  100 Trying
    
    But the phone is not listening on 49173, so it will never see the reply.
    
    This patch modifies nf_*_sip to work around this quirk by extracting
    the SIP response port from the Via: header, iff the source IP in the
    packet header matches the source IP in the SIP request.
    
    Signed-off-by: default avatarKevin Cernekee <cernekee@gmail.com>
    Acked-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
    Cc: Patrick McHardy <kaber@trash.net>
    Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
    7266507d