osmith has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-s1gw/+/37049?usp=email )
Change subject: s1ap_proxy: properly patch transportLayerAddress ......................................................................
s1ap_proxy: properly patch transportLayerAddress
Change-Id: Iffcf6842147bcbc665689196c5ded6dfa1a066fa --- M src/s1ap_proxy.erl M test/s1ap_proxy_test.erl 2 files changed, 20 insertions(+), 6 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-s1gw refs/changes/49/37049/1
diff --git a/src/s1ap_proxy.erl b/src/s1ap_proxy.erl index a78f084..48f3565 100644 --- a/src/s1ap_proxy.erl +++ b/src/s1ap_proxy.erl @@ -93,7 +93,9 @@
handle_ie(#'ProtocolIE-Field'{id = ?'id-E-RABToBeSetupItemBearerSUReq', value = Content}) -> - Content#'E-RABToBeSetupItemBearerSUReq'{transportLayerAddress = transp_layer_addr()}; + %% eNB -> MME direction: we pass our MME facing local address + TLA = transp_layer_addr(mme_loc_addr), + Content#'E-RABToBeSetupItemBearerSUReq'{transportLayerAddress = TLA};
%% E-RAB SETUP RESPONSE related IEs handle_ie(#'ProtocolIE-Field'{id = ?'id-E-RABSetupListBearerSURes', @@ -103,7 +105,9 @@
handle_ie(#'ProtocolIE-Field'{id = ?'id-E-RABSetupItemBearerSURes', value = Content}) -> - Content#'E-RABSetupItemBearerSURes'{transportLayerAddress = transp_layer_addr()}; + %% MME -> eNB direction: we pass our eNB facing local address + TLA = transp_layer_addr(s1gw_bind_addr), + Content#'E-RABSetupItemBearerSURes'{transportLayerAddress = TLA};
%% Catch-all variant, which should not be called normally handle_ie(#'ProtocolIE-Field'{value = Content} = IE) -> @@ -131,8 +135,9 @@
%% GTP-U IP address (TransportLayerAddress) to be used while patching -transp_layer_addr() -> - AddrStr = application:get_env(osmo_s1gw, transp_layer_addr, "255.255.255.255"), +-spec transp_layer_addr(atom()) -> binary(). +transp_layer_addr(EnvParam) -> + {ok, AddrStr} = application:get_env(osmo_s1gw, EnvParam), {ok, Addr} = inet:parse_address(AddrStr), %% sadly, there exists inet:ntoa/1, but not inet:aton/1 list_to_binary(tuple_to_list(Addr)). diff --git a/test/s1ap_proxy_test.erl b/test/s1ap_proxy_test.erl index 408f468..0c4bbbf 100644 --- a/test/s1ap_proxy_test.erl +++ b/test/s1ap_proxy_test.erl @@ -57,7 +57,7 @@ ExpTLA = << 16#7f, 16#00, 16#00, 16#01 >>, ExpData = e_rab_setup_req_pdu(ExpTLA, TEID),
- application:set_env(osmo_s1gw, transp_layer_addr, "127.0.0.1"), + application:set_env(osmo_s1gw, mme_loc_addr, "127.0.0.1"), ?assertEqual(ExpData, s1ap_proxy:handle_pdu(OrigData)).
@@ -82,7 +82,7 @@ ExpTLA = << 16#7f, 16#00, 16#00, 16#01 >>, ExpData = e_rab_setup_rsp_pdu(ExpTLA, TEID),
- application:set_env(osmo_s1gw, transp_layer_addr, "127.0.0.1"), + application:set_env(osmo_s1gw, s1gw_bind_addr, "127.0.0.1"), ?assertEqual(ExpData, s1ap_proxy:handle_pdu(OrigData)).
%% vim:set ts=4 sw=4 et: