fixeria submitted this change.
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(-)
diff --git a/src/erab_fsm.erl b/src/erab_fsm.erl
index ea1c11b..e2f86c5 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:16/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_f_teid(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:
To view, visit change 39427. To unsubscribe, or for help writing mail filters, visit settings.