pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/libosmo-sigtran/+/40286?usp=email )
Change subject: Use osmo_ss7_pointcode_print_buf() instead of static buffer API ......................................................................
Use osmo_ss7_pointcode_print_buf() instead of static buffer API
During logging, the logging macro may already be using the static buffer API to log context about a related PC. Hence, calling it here may overwrite it. Instead, use osmo_ss7_pointcode_print_buf().
Change-Id: I5daeecfae77932e2e52e1a36a620349efa878bbd --- M src/osmo_ss7_combined_linkset.c M src/osmo_ss7_route_table.c 2 files changed, 16 insertions(+), 22 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmo-sigtran refs/changes/86/40286/1
diff --git a/src/osmo_ss7_combined_linkset.c b/src/osmo_ss7_combined_linkset.c index 412555f..583b82b 100644 --- a/src/osmo_ss7_combined_linkset.c +++ b/src/osmo_ss7_combined_linkset.c @@ -241,6 +241,7 @@ struct osmo_ss7_instance *inst = clset->rtable->inst; ext_sls_t esls = osmo_ss7_instance_calc_itu_ext_sls(inst, rtlabel); struct osmo_ss7_esls_entry *eslse = &clset->esls_table[esls]; + char buf[512];
/* First check if we have a cached route for this ESLS */ rt = current_rt(eslse); @@ -249,20 +250,16 @@ /* We can transmit over normal route. * Clean up alternative route since it's not needed anymore */ if (eslse->alt_rt) { - LOGPCLSET(clset, DLSS7, LOGL_NOTICE, "RT lookup: OPC=%u=%s,DPC=%u=%s,SLS=%u -> eSLS=%u: " + LOGPCLSET(clset, DLSS7, LOGL_NOTICE, "RT lookup: %s -> eSLS=%u: " "Normal Route via '%s' became available, drop use of Alternative Route via '%s'\n", - rtlabel->opc, osmo_ss7_pointcode_print(inst, rtlabel->opc), - rtlabel->dpc, osmo_ss7_pointcode_print2(inst, rtlabel->dpc), - rtlabel->sls, esls, + ss7_route_label_to_str(buf, sizeof(buf), inst, rtlabel), esls, eslse->normal_rt->dest.as ? eslse->normal_rt->dest.as->cfg.name : "<linkset>", eslse->alt_rt->dest.as ? eslse->alt_rt->dest.as->cfg.name : "<linkset>"); eslse->alt_rt = NULL; } LOGPCLSET(clset, DLSS7, LOGL_DEBUG, - "RT lookup: OPC=%u=%s,DPC=%u=%s,SLS=%u -> eSLS=%u: use Normal Route via '%s'\n", - rtlabel->opc, osmo_ss7_pointcode_print(inst, rtlabel->opc), - rtlabel->dpc, osmo_ss7_pointcode_print2(inst, rtlabel->dpc), - rtlabel->sls, esls, + "RT lookup: %s -> eSLS=%u: use Normal Route via '%s'\n", + ss7_route_label_to_str(buf, sizeof(buf), inst, rtlabel), esls, eslse->normal_rt->dest.as ? eslse->normal_rt->dest.as->cfg.name : "<linkset>"); return rt; } @@ -282,11 +279,9 @@ return NULL; eslse->normal_rt = rt; rt_avail = ss7_route_is_available(eslse->normal_rt); - LOGPCLSET(clset, DLSS7, LOGL_INFO, "RT loookup: OPC=%u=%s,DPC=%u=%s,SLS=%u -> eSLS=%u: " + LOGPCLSET(clset, DLSS7, LOGL_INFO, "RT loookup: %s -> eSLS=%u: " "picked Normal Route via '%s' round-robin style (%s)\n", - rtlabel->opc, osmo_ss7_pointcode_print(inst, rtlabel->opc), - rtlabel->dpc, osmo_ss7_pointcode_print2(inst, rtlabel->dpc), - rtlabel->sls, esls, + ss7_route_label_to_str(buf, sizeof(buf), inst, rtlabel), esls, rt->dest.as ? rt->dest.as->cfg.name : "<linkset>", rt_avail ? "available" : "unavailable"); if (rt_avail) { @@ -302,20 +297,16 @@ rt = ss7_combined_linkset_select_route_roundrobin(clset); if (rt) { eslse->alt_rt = rt; - LOGPCLSET(clset, DLSS7, LOGL_NOTICE, "RT Lookup: OPC=%u=%s,DPC=%u=%s,SLS=%u -> eSLS=%u: " + LOGPCLSET(clset, DLSS7, LOGL_NOTICE, "RT Lookup: %s -> eSLS=%u: " "Normal Route via '%s' unavailable, picked Alternative Route via '%s' round-robin style\n", - rtlabel->opc, osmo_ss7_pointcode_print(inst, rtlabel->opc), - rtlabel->dpc, osmo_ss7_pointcode_print2(inst, rtlabel->dpc), - rtlabel->sls, esls, + ss7_route_label_to_str(buf, sizeof(buf), inst, rtlabel), esls, eslse->normal_rt->dest.as ? eslse->normal_rt->dest.as->cfg.name : "<linkset>", eslse->alt_rt->dest.as ? eslse->alt_rt->dest.as->cfg.name : "<linkset>"); } else { /* No alternative route found, NULL is returned. */ - LOGPCLSET(clset, DLSS7, LOGL_INFO, "RT Lookup: OPC=%u=%s,DPC=%u=%s,SLS=%u -> eSLS=%u: " + LOGPCLSET(clset, DLSS7, LOGL_INFO, "RT Lookup: %s -> eSLS=%u: " "Normal Route via '%s' unavailable, all Alternative Routes unavailable\n", - rtlabel->opc, osmo_ss7_pointcode_print(inst, rtlabel->opc), - rtlabel->dpc, osmo_ss7_pointcode_print2(inst, rtlabel->dpc), - rtlabel->sls, esls, + ss7_route_label_to_str(buf, sizeof(buf), inst, rtlabel), esls, eslse->normal_rt->dest.as ? eslse->normal_rt->dest.as->cfg.name : "<linkset>"); } return rt; diff --git a/src/osmo_ss7_route_table.c b/src/osmo_ss7_route_table.c index 734db88..f3c03e2 100644 --- a/src/osmo_ss7_route_table.c +++ b/src/osmo_ss7_route_table.c @@ -38,11 +38,14 @@
char *ss7_route_label_to_str(char *buf, size_t buf_len, const struct osmo_ss7_instance *inst, const struct osmo_ss7_route_label *rtlb) { + char buf_opc[64]; + char buf_dpc[64]; + if (buf_len == 0) return NULL; snprintf(buf, buf_len, "OPC=%u=%s,DPC=%u=%s,SLS=%u", - rtlb->opc, osmo_ss7_pointcode_print(inst, rtlb->opc), - rtlb->dpc, osmo_ss7_pointcode_print2(inst, rtlb->dpc), + rtlb->opc, osmo_ss7_pointcode_print_buf(buf_opc, sizeof(buf_opc), inst, rtlb->opc), + rtlb->dpc, osmo_ss7_pointcode_print_buf(buf_dpc, sizeof(buf_dpc), inst, rtlb->dpc), rtlb->sls); return buf; }