fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/39427?usp=email )
Change subject: erab_fsm: add pretty printer for F-TEID ......................................................................
erab_fsm: add pretty printer for F-TEID
This patch makes log messages like this one:
Rx E-RAB SETUP Req (U2C {1454164620,<<"\n?-?">>})
a lot more readable:
Rx E-RAB SETUP Req (U2C 0x56acca8c@10.199.45.249)
Change-Id: I8c47abffd554a23e22ae8fd768c390c549334fd3 --- M src/erab_fsm.erl 1 file changed, 25 insertions(+), 3 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/erlang/osmo-s1gw refs/changes/27/39427/1
diff --git a/src/erab_fsm.erl b/src/erab_fsm.erl index ea1c11b..0845784 100644 --- a/src/erab_fsm.erl +++ b/src/erab_fsm.erl @@ -184,7 +184,7 @@ erab_wait_setup_req({call, From}, {erab_setup_req, U2C}, #erab_state{} = S) -> - ?LOG_DEBUG("Rx E-RAB SETUP Req (U2C ~p)", [U2C]), + ?LOG_DEBUG("Rx E-RAB SETUP Req (U2C ~s)", [pp(U2C)]), {next_state, session_establish, S#erab_state{from = From, u2c = U2C}}; @@ -225,7 +225,7 @@ #{f_teid := F_TEID_A2U}]}} -> C2U = {F_TEID_C2U#f_teid.teid, f_teid_addr(F_TEID_C2U)}, A2U = {F_TEID_A2U#f_teid.teid, f_teid_addr(F_TEID_A2U)}, - ?LOG_DEBUG("PFCP session established (C2U ~p, A2U ~p)", [C2U, A2U]), + ?LOG_DEBUG("PFCP session established (C2U ~s, A2U ~s)", [pp(C2U), pp(A2U)]), {next_state, erab_wait_setup_rsp, S#erab_state{from = undefined, seid_rem = F_SEID, %% SEID to be used in further requests from us @@ -255,7 +255,7 @@ erab_wait_setup_rsp({call, From}, {erab_setup_rsp, U2A}, #erab_state{} = S) -> - ?LOG_DEBUG("Rx E-RAB SETUP Rsp (U2A ~p)", [U2A]), + ?LOG_DEBUG("Rx E-RAB SETUP Rsp (U2A ~s)", [pp(U2A)]), {next_state, session_modify, S#erab_state{from = From, u2a = U2A}}; @@ -530,4 +530,26 @@ f_teid_addr(#f_teid{}) -> erlang:error("F-TEID IE contains no IPv4/IPv6").
+ +%% universal pretty printer +-spec pp(teid_addr() | any()) -> string(). +pp({TEID, << IPv4:4/bytes >>}) -> + pp_f_teid({TEID, IPv4}); + +pp({TEID, << IPv6:8/bytes >>}) -> + pp_f_teid({TEID, IPv6}); + +pp(Arg) -> + Str = io_lib:format("~p", [Arg]), + lists:flatten(Str). + + +%% pretty printer for F-TEID (example: 0x00000001@127.0.0.1) +-spec pp_teid_addr(teid_addr()) -> string(). +pp_f_teid({TEID, AddrBin}) -> + Addr = list_to_tuple(binary_to_list(AddrBin)), + Str = io_lib:format("0x~8.16.0b@~s", [TEID, inet:ntoa(Addr)]), + lists:flatten(Str). + + %% vim:set ts=4 sw=4 et: