[Users] lcr gw strip and prefix

Alan Crosswell alan at columbia.edu
Tue Sep 19 00:03:59 CEST 2006


Does anybody have samples of using LCR strip and prefix?  I've tried
configuring it for an ITSP that wants US numbers to be 10-digits and
international calls to be prefixed with 011.  I keep these numbers in
E.164 format, so, for example:

+12128543754 should have the ruri rewritten to: 2128543754
and +44123456789 should become 01144123456789

Here are relevant portions of my lcr tables:

lcr routes
+--------------+----------+--------+----------+
| prefix       | from_uri | grp_id | priority |
+--------------+----------+--------+----------+
| +1__________ | %        |      5 |       10 |
| +1__________ | %        |      7 |       20 |
| +__          | %        |      8 |       20 |
| +__          | %        |      6 |       10 |

lcr gateways (edited to fit and hide details:-)
+-----------+---------+------+-----+-----+--------+-------+--------+
| gw_name   | ip      | port | uri_| tran| grp_id | strip | prefix |
+-----------+---------+------------+-----+--------+-------+--------+
| prov1-us  | x.x.x.x | 5060 |   1 |   1 |      5 |     2 |        |
| prov1-int | x.x.x.x | 5060 |   1 |   1 |      6 |     1 | 011    |
| voip1-int | y.y.y.y | 5060 |   1 |   1 |      7 |     1 | 011    |
| voip1-us  | y.y.y.y | 5060 |   1 |   1 |      8 |     2 |        |

openser.cfg snippet (our internal dialplan has 93 for outside line):

    xlog("L_INFO","route[4]: SIP-to-PSTN call from <$fu> to <$tu>
routed\n");
    if (uri=~"^sip:931") {
        subst_user('/^931/+1/');                  # rewrite to E.164
        subst('/^(To:[^0-9]*)931(.*)$/\1+1\2/');  # rewrite to E.164
    }
    if (uri=~"^sip:93011") {
        subst_user('/^93011/+/');                 # rewrite to E.164
        subst('/^(To:[^0-9]*)93011(.*)$/\1+\2/'); # rewrite to E.164
    }
    xlog("L_INFO","route[4]: SIP-to-PSTN r-uri is now <$ru>\n");
    # rewrite callee's 5-digit extensions to  +121285.....
    if !((isflagset(6) && !isflagset(4)) || isflagset(5)) {
        subst('/^(From:.*<sip:)([134][0-9]{4}@)/\1+121285\2/');
        subst('/^(Remote-Party-ID:.*<sip:)([134][0-9]{4}@)/\1+121285\2/');
    }
    t_on_failure("4");          # if gateway unavail go to 4
    if (!next_gw()) {
        sl_send_reply("503", "Service not available - No gateways");
        return;
    };
    xlog("L_INFO","route[4]: SIP-to-PSTN after next_gw() r-uri is now
<$ru>\n");
    # Cookbook does a forward.  I think we do a stateful t_relay which
will handle
    # e.g. TCP/UDP or v6->v4 conversion as needed.
    if (isflagset(18))
    {  #call fwd enabled
            append_branch();
    }
    if (!t_relay()) {
        sl_reply_error();
    };
    xlog("L_INFO","Fell through route[4]: $si: $rm From <$fu> To <$tu>\n");
} # end of route[4]

The observed behavior is that the host part gets rewritten correctly (to
x.x.x.x) but the user part does not get stripped and/or prefixed.

Any help would be appreciated.

/a




More information about the sr-users mailing list