<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.E-MailFormatvorlage18
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;}
span.E-MailFormatvorlage20
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=DE link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoNormal>Hi,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span lang=EN-US>is there something wrong with the if else check ordering?<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>        if(avp_check("$var(userprov_cli)", "fm/$xavp(caller_contract_prefs[0]=>allowed_clis[*])/g"))<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                xlog("L_NOTICE", "$var(ccli_desc) '$var(userprov_cli)' accepted (matched contract preference) - R=$ru ID=$ci UA='$ua'\n");<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>        else if(avp_check("$var(userprov_cli)", "fm/$xavp(caller_real_prefs[0]=>allowed_clis[*])/g"))<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                xlog("L_NOTICE", "$var(ccli_desc) '$var(userprov_cli)' accepted (matched user preference) - R=$ru ID=$ci UA='$ua'\n");<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>        else if(pv_isset("$avp(s:skip_upn_check_on_diversion)") && $avp(s:skip_upn_check_on_diversion) == "check_allowed_clis") {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                xlog("L_NOTICE", "Previous forwarder's number '$var(userprov_cli)' did not match allowed_clis, using network-provided CLI '$avp(s:caller_cli_netprov)' - R=$ru ID=$ci UA='$ua'\n");<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                $var(userprov_cli) = $avp(s:caller_cli_netprov);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                $var(userprov_domain) = $avp(s:caller_domain_netprov);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                return;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        else if($avp(s:allowed_clis_reject_policy) == "reject")<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                xlog("L_NOTICE", "$var(ccli_desc) '$var(userprov_cli)' rejected, block call - R=$ru ID=$ci UA='$ua'\n");<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                $(avp(s:announce_code)[*]) = 403;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                $(avp(s:announce_reason)[*]) = "Forbidden";<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                route(ROUTE_ACC_FAILURE);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                route(ROUTE_EARLY_REJECT);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                route(ROUTE_EXIT);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        else<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>On the second run it is not checking “if(pv_isset("$avp(s:skip_upn_check_on_diversion)") && $avp(s:skip_upn_check_on_diversion) == "<span style='color:red'>check_aliases</span>")” for whatever reason.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>route[ROUTE_CHECK_CLI_ALLOWED]<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>{<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        if(pv_isset("$avp(s:skip_upn_check_on_diversion)") && $avp(s:skip_upn_check_on_diversion) == "check_aliases") {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                xlog("L_NOTICE", "Previous forwarder's number '$var(userprov_cli)' did not match aliases, using network-provided CLI '$avp(s:caller_cli_netprov)' - R=$ru ID=$ci UA='$ua'\n");<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                $var(userprov_cli) = $avp(s:caller_cli_netprov);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                $var(userprov_domain) = $avp(s:caller_domain_netprov);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                return;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        xlog("L_INFO", "Checking $var(ccli_desc) against allowed CLIs - R=$ru ID=$ci UA='$ua'\n");<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        if(pv_isset("$xavp(caller_usr_prefs[0]=>allowed_clis_reject_policy)"))<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                $(avp(s:allowed_clis_reject_policy)[*]) = $xavp(caller_usr_prefs[0]=>allowed_clis_reject_policy);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>So the next hit is <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='color:red'>if(avp_check("$var(userprov_cli)", "fm/$xavp(caller_contract_prefs[0]=>allowed_clis[*])/g"))<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                xlog("L_NOTICE", "$var(ccli_desc) '$var(userprov_cli)' accepted (matched contract preference) - R=$ru ID=$ci UA='$ua'\n");<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>        else if(avp_check("$var(userprov_cli)", "fm/$xavp(caller_real_prefs[0]=>allowed_clis[*])/g"))<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                xlog("L_NOTICE", "$var(ccli_desc) '$var(userprov_cli)' accepted (matched user preference) - R=$ru ID=$ci UA='$ua'\n");<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>When “allowed_clis” is set to * (match all) it is always true even when “</span><span lang=EN-US>skip_upn_check_on_diversion” is not configured to check “allowed_clis”.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>The DIVERSION is set correct on peer if there is no match on “allowed_clis”. A´m I correct that there is a missing check against “</span><span lang=EN-US>skip_upn_check_on_diversion” regarding “allowed_clis”?<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Only if “</span><span lang=EN-US>skip_upn_check_on_diversion” is configured to check against “allowed_clis” the “</span><span lang=EN-US style='color:red'>if(avp_check("$var(userprov_cli)", "fm/$xavp(caller_contract_prefs[0]=>allowed_clis[*])/g"))<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>“<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>check should be done correct?<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><div><p class=MsoNormal><span style='color:#1F497D;mso-fareast-language:DE'>Mit freundlichen Grüßen,</span><span style='color:gray;mso-fareast-language:DE'><o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D;mso-fareast-language:DE'>Best regards,</span><span style='color:gray;mso-fareast-language:DE'><o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D;mso-fareast-language:DE'> </span><span style='color:gray;mso-fareast-language:DE'><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='color:#1F497D;mso-fareast-language:DE'>Sven</span><span style='color:gray;mso-fareast-language:DE'><o:p></o:p></span></p></div><p class=MsoNormal><o:p> </o:p></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><span style='mso-fareast-language:DE'>Von:</span></b><span style='mso-fareast-language:DE'> Spce-user <spce-user-bounces@lists.sipwise.com> <b>Im Auftrag von </b>sven.roehrig@web.de<br><b>Gesendet:</b> Donnerstag, 3. Januar 2019 13:45<br><b>An:</b> spce-user@lists.sipwise.com<br><b>Betreff:</b> [Spce-user] change forwarder_cli_userprov if not matching subscriber/alias<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span lang=EN-US>Hi,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>i have a client that´s sending an invalid number in DIVERSION that need to be replaced with the network provided number if it does not match an allowed number.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>If I set "skip_upn_check_on_diversion" to "skip checking upn if user in received Diversion or alias list" everything works like expected but it looks like the check is done twice. <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>The first test is failing like expected but the second run is passed.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>NOTICE: <script>: Rewriting Diversion number '162' to '162' - R=sip:01719458948@sip.sipwise-test.net:5060 ID=a4cb4345-99e3-46ad-8515-594d629020c8 UA='FPBX-14.0.5.2(13.22.0)'<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>INFO: <script>: <span style='color:red'>Checking Diversion number against subscriber aliases </span>- R=sip:01719458948@sip.sipwise-test.net:5060 ID=a4cb4345-99e3-46ad-8515-594d629020c8 UA='FPBX-14.0.5.2(13.22.0)'<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>NOTICE: <script>: <span style='color:red'>Previous forwarder's number '162' did not match aliases</span>, using network-provided CLI '4937125620050' - R=sip:01719458948@sip.sipwise-test.net:5060 ID=a4cb4345-99e3-46ad-8515-594d629020c8 UA='FPBX-14.0.5.2(13.22.0)'<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>INFO: <script>: Check of previous forwarder via Diversion header failed - R=sip:01719458948@sip.sipwise-test.net:5060 ID=a4cb4345-99e3-46ad-8515-594d629020c8 UA='FPBX-14.0.5.2(13.22.0)'<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>INFO: <script>: Checking User-provided CLI against subscriber aliases - R=sip:01719458948@sip.sipwise-test.net:5060 ID=a4cb4345-99e3-46ad-8515-594d629020c8 UA='FPBX-14.0.5.2(13.22.0)'<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>INFO: <script>: User-provided CLI '4937125620076' accepted - matches alias number '493712562007' - R=sip:01719458948@sip.sipwise-test.net:5060 ID=a4cb4345-99e3-46ad-8515-594d629020c8 UA='FPBX-14.0.5.2(13.22.0)'<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>INFO: <script<span style='color:red'>>: Checking User-provided Redirecting CLI against subscriber aliases </span>- R=sip:01719458948@sip.sipwise-test.net:5060 ID=a4cb4345-99e3-46ad-8515-594d629020c8 UA='FPBX-14.0.5.2(13.22.0)'<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>INFO: <script>: Checking User-provided Redirecting CLI against allowed CLIs - R=sip:01719458948@sip.sipwise-test.net:5060 ID=a4cb4345-99e3-46ad-8515-594d629020c8 UA='FPBX-14.0.5.2(13.22.0)'<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>NOTICE: <script>: <span style='color:red'>User-provided Redirecting CLI '162' accepted (matched user preference) </span>- R=sip:01719458948@sip.sipwise-test.net:5060 ID=a4cb4345-99e3-46ad-8515-594d629020c8 UA='FPBX-14.0.5.2(13.22.0)'<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>NOTICE: <script>: Setting forwarder_cli_userprov/forwarder_domain_userprov '00162@10.40.70.13' for uprn - R=sip:491719458948@sia-btsccca146.sipwise-test.net ID=a4cb4345-99e3-46ad-8515-594d629020c8 UA='FPBX-14.0.5.2(13.22.0)'<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>NOTICE: <script>: Setting Diversion to '<<a href="sip:00162@10.40.70.13">sip:00162@10.40.70.13</a>>;privacy=off;counter=1' - R=sip:491719458948@sia-btsccca146.sipwise-test.net ID=a4cb4345-99e3-46ad-8515-594d629020c8 UA='FPBX-14.0.5.2(13.22.0)'<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>When the call is leaving the peer I have set outbound_diversion to be UPRN. I guess because of the failing test the DIVERSION that gets send to the peer is the invalid number instead of the network provides as excpected.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Is this the correct behaviour ore is there something wron with my configuration?<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Should avp "forwarder_cli_userprov" need to be replaced with NPN if "skip_upn_check_on_diversion" is enabled and failing for checking against known numbers?<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>For my understanding if a client is sending a DIVERSION header spce should check UPRN against known numbers (alias numbers, primary numbers, allowed cli) configured in skip_upn_check_on_diversion.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>If this is failing UPRN should be set to a known number (NPN) and the UPN (taken from e.g. FROM Header should be passed as send). If the client is sending a known UPRN the DIVERSON and FROM header can be passed as send.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>If there is a DIVERSION present on a peer trunk this must be handled like a PAI because its important for e.g. billing on peer side. <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D;mso-fareast-language:DE'>Mit freundlichen Grüßen,</span><span style='color:gray;mso-fareast-language:DE'><o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D;mso-fareast-language:DE'>Best regards,</span><span style='color:gray;mso-fareast-language:DE'><o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D;mso-fareast-language:DE'> </span><span style='color:gray;mso-fareast-language:DE'><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='color:#1F497D;mso-fareast-language:DE'>Sven</span><span style='color:gray;mso-fareast-language:DE'><o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>