diff options
author | Max <msuraev@sysmocom.de> | 2017-10-24 15:54:28 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2017-10-24 14:33:31 +0000 |
commit | 95308596540b0733a43d9db5dc6ab0c4f5e2d08f (patch) | |
tree | 66ae35669ef7828542fe973e6a70d8b1da807d6d /src/gb/gprs_ns.c | |
parent | c513c0f562b193a8e710b904b980bfa9b3d08b56 (diff) |
GPRS: clarify ip/frgre union use
* add comment about underlying assumption that structs in ip/frgre union
members in gprs_nsvc struct have the same memory layout
* remove such assumption from gprs_ns_ll_str()
* use gprs_ns_ll_str() for NSE dump
Change-Id: Idcb912b7b3f7460fd2b058e16650c0bde8f757ee
Diffstat (limited to 'src/gb/gprs_ns.c')
-rw-r--r-- | src/gb/gprs_ns.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/gb/gprs_ns.c b/src/gb/gprs_ns.c index 2d062cf2..18d43ccc 100644 --- a/src/gb/gprs_ns.c +++ b/src/gb/gprs_ns.c @@ -1173,9 +1173,21 @@ int gprs_ns_rcvmsg(struct gprs_ns_inst *nsi, struct msgb *msg, const char *gprs_ns_ll_str(struct gprs_nsvc *nsvc) { static char buf[80]; - snprintf(buf, sizeof(buf), "%s:%u", - inet_ntoa(nsvc->ip.bts_addr.sin_addr), - osmo_ntohs(nsvc->ip.bts_addr.sin_port)); + + switch(nsvc->ll) { + case GPRS_NS_LL_UDP: + snprintf(buf, sizeof(buf), "%s:%u", + inet_ntoa(nsvc->ip.bts_addr.sin_addr), osmo_ntohs(nsvc->ip.bts_addr.sin_port)); + break; + case GPRS_NS_LL_FR_GRE: + snprintf(buf, sizeof(buf), "%s:%u", + inet_ntoa(nsvc->frgre.bts_addr.sin_addr), osmo_ntohs(nsvc->frgre.bts_addr.sin_port)); + break; + default: + buf[0] = '\0'; + break; + } + buf[sizeof(buf) - 1] = '\0'; return buf; |