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:
--
To view, visit
https://gerrit.osmocom.org/c/osmo-s1gw/+/37049?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-s1gw
Gerrit-Branch: master
Gerrit-Change-Id: Iffcf6842147bcbc665689196c5ded6dfa1a066fa
Gerrit-Change-Number: 37049
Gerrit-PatchSet: 1
Gerrit-Owner: osmith <osmith(a)sysmocom.de>
Gerrit-CC: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-MessageType: newchange