mirror of https://gerrit.osmocom.org/libosmocore
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
This commit is contained in:
parent
c513c0f562
commit
9530859654
|
@ -140,6 +140,8 @@ struct gprs_nsvc {
|
|||
/*! which link-layer are we based on? */
|
||||
enum gprs_ns_ll ll;
|
||||
|
||||
/*! make sure to always keep bts_addr as first struct member to not break the assumption
|
||||
that those structs are similar */
|
||||
union {
|
||||
struct {
|
||||
struct sockaddr_in bts_addr;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -165,12 +165,11 @@ static void dump_nse(struct vty *vty, struct gprs_nsvc *nsvc, int stats)
|
|||
nsvc->remote_end_is_sgsn ? "SGSN" : "BSS",
|
||||
NS_DESC_A(nsvc->remote_state),
|
||||
NS_DESC_B(nsvc->remote_state));
|
||||
if (nsvc->ll == GPRS_NS_LL_UDP || nsvc->ll == GPRS_NS_LL_FR_GRE)
|
||||
vty_out(vty, ", %s %15s:%u",
|
||||
nsvc->ll == GPRS_NS_LL_UDP ? "UDP " : "FR-GRE",
|
||||
inet_ntoa(nsvc->ip.bts_addr.sin_addr),
|
||||
osmo_ntohs(nsvc->ip.bts_addr.sin_port));
|
||||
vty_out(vty, "%s", VTY_NEWLINE);
|
||||
|
||||
vty_out(vty, ", %s %s%s",
|
||||
nsvc->ll == GPRS_NS_LL_UDP ? "UDP " : "FR-GRE",
|
||||
gprs_ns_ll_str(nsvc), VTY_NEWLINE);
|
||||
|
||||
if (stats) {
|
||||
vty_out_rate_ctr_group(vty, " ", nsvc->ctrg);
|
||||
vty_out_stat_item_group(vty, " ", nsvc->statg);
|
||||
|
|
Loading…
Reference in New Issue