|
|
@ -6,6 +6,9 @@ loadmodule "nathelper.so" |
|
|
modparam("nathelper", "received_avp", "$avp(AVP_RECV_PARAM)") |
|
|
modparam("nathelper", "received_avp", "$avp(AVP_RECV_PARAM)") |
|
|
modparam("nathelper", "sipping_from", "sip:sipcheck@MY_HOSTNAME") |
|
|
modparam("nathelper", "sipping_from", "sip:sipcheck@MY_HOSTNAME") |
|
|
|
|
|
|
|
|
|
|
|
#!trydef KZ_NAT_CONTACT_DETECT "1" |
|
|
|
|
|
#!trydef KZ_NAT_PORT_DETECT "2" |
|
|
|
|
|
|
|
|
####### NAT Traversal Logic ######## |
|
|
####### NAT Traversal Logic ######## |
|
|
route[NAT_TEST_AND_CORRECT] |
|
|
route[NAT_TEST_AND_CORRECT] |
|
|
{ |
|
|
{ |
|
|
@ -20,6 +23,7 @@ route[NAT_TEST_AND_CORRECT] |
|
|
$var(i) = $var(i) + 1; |
|
|
$var(i) = $var(i) + 1; |
|
|
if (!is_myself("$(var(rr){nameaddr.uri})")) { |
|
|
if (!is_myself("$(var(rr){nameaddr.uri})")) { |
|
|
setflag(FLAG_SKIP_NAT_CORRECTION); |
|
|
setflag(FLAG_SKIP_NAT_CORRECTION); |
|
|
|
|
|
xlog("L_DEBUG", "$ci|log|skipping nat correction on record-route $(var(rr){nameaddr.uri})\n"); |
|
|
} |
|
|
} |
|
|
$var(rr_idx) = $var(rr_idx) + 1; |
|
|
$var(rr_idx) = $var(rr_idx) + 1; |
|
|
$var(rr) = $(var(rr_base){s.select,$var(rr_idx),,}); |
|
|
$var(rr) = $(var(rr_base){s.select,$var(rr_idx),,}); |
|
|
@ -33,8 +37,13 @@ route[NAT_TEST_AND_CORRECT] |
|
|
return(); |
|
|
return(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (nat_uac_test("NAT_UAC_TEST_LEVEL")) { |
|
|
|
|
|
|
|
|
if (nat_uac_test(KZ_NAT_PORT_DETECT)) { |
|
|
|
|
|
xlog("L_DEBUG", "$ci|nat|forcing rport\n"); |
|
|
force_rport(); |
|
|
force_rport(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (nat_uac_test(KZ_NAT_CONTACT_DETECT)) { |
|
|
|
|
|
xlog("L_DEBUG", "$ci|nat|contact correction\n"); |
|
|
fix_nated_contact(); |
|
|
fix_nated_contact(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|