Add code to actually replace the prefix of the called party number in ISUP IAM

This commit is contained in:
Harald Welte 2011-01-21 16:17:39 +00:00
parent 548f93b7a6
commit 4c5e10d7f8
1 changed files with 32 additions and 1 deletions

View File

@ -182,14 +182,20 @@ mangle_rx_mtp3_serv(L, From, ?MTP3_SERV_ISUP, Mtp3 = #mtp3_msg{payload = Payload
Isup = isup_codec:parse_isup_msg(Payload),
io:format("ISUP Decode: ~p~n", [Isup]),
% FIXME
%mangle_rx_isup(From, Isup#isup_msg.msg_type, Isup),
case Isup#isup_msg.msg_type of
?ISUP_MSGT_IAM ->
io:format("ISUP Encode In: ~p~n", [Isup]),
Isup_out = isup_codec:encode_isup_msg(Isup),
io:format("ISUP Encode Out: ~p~n", [Isup_out]),
% FIXME
Mtp3;
if Isup_out == Payload -> ok;
true -> io:format("ISUP DATA NOT EQUAL!~n")
end,
% return modified MTP3 payload
Mtp3#mtp3_msg{payload = Isup_out};
_ ->
% return UNmodified MTP3 payload
Mtp3
end;
% mangle the SCCP content
@ -201,3 +207,28 @@ mangle_rx_mtp3_serv(L, From, ?MTP3_SERV_SCCP, Mtp3 = #mtp3_msg{payload = Payload
% default: do nothing
mangle_rx_mtp3_serv(_L, _From, _, Mtp3) ->
Mtp3.
-define(MSRN_PFX_MSC, [8,9,0,9,9]).
-define(MSRN_PFX_STP, [9,2,9,9,4,2,0,0]).
mangle_rx_isup(From, MsgType, Msg = #isup_msg{parameters = Params}) when
MsgType == ?ISUP_MSGT_IAM ->
CalledNum = proplists:get_value(?ISUP_PAR_CALLED_P_NUM, Params),
DigitsIn = CalledNum#party_number.phone_number,
Last2DigF = lists:sublist(DigitsIn, length(DigitsIn)-2, 3),
case From of
from_stp ->
DigitsOut = ?MSRN_PFX_MSC ++ Last2DigF,
io:format("IAM MSRN rewrite (MSC->STP): ~p -> ~p~n",
[DigitsIn, DigitsOut]);
from_msc ->
DigitsOut = DigitsIn,
io:format("No support for MSC->STP MSRN rewrite~n")
end,
CalledNumOut = CalledNum#party_number{phone_number=DigitsOut},
ParamsDel = proplists:delete(?ISUP_PAR_CALLED_P_NUM, Params),
ParamsOut = [{?ISUP_PAR_CALLED_P_NUM, CalledNumOut}|ParamsDel],
#isup_msg{parameters = ParamsOut};
% default case: no mangling
mangle_rx_isup(_From, _Type, Msg) when is_record(Msg, isup_msg) ->
Msg.