pespin has uploaded this change for review. (
https://gerrit.osmocom.org/c/libosmo-sigtran/+/39705?usp=email )
Change subject: AS loadsharing: Log routing lookup logic
......................................................................
AS loadsharing: Log routing lookup logic
Loggin very similar to what we already have for ASP loadsharing in
ss7_as_select_asp_loadshare().
Change-Id: I6b4983bc2cc8bd231a5d85f378be8c93c6f4fa27
---
M src/osmo_ss7_combined_linkset.c
M src/ss7_combined_linkset.h
2 files changed, 46 insertions(+), 3 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmo-sigtran refs/changes/05/39705/1
diff --git a/src/osmo_ss7_combined_linkset.c b/src/osmo_ss7_combined_linkset.c
index 99b0c79..a741aba 100644
--- a/src/osmo_ss7_combined_linkset.c
+++ b/src/osmo_ss7_combined_linkset.c
@@ -25,6 +25,7 @@
#include <osmocom/core/logging.h>
#include <osmocom/sigtran/osmo_ss7.h>
+#include "ss7_as.h"
#include "ss7_combined_linkset.h"
#include "ss7_route.h"
#include "ss7_route_table.h"
@@ -219,7 +220,8 @@
ss7_combined_linkset_lookup_route(struct osmo_ss7_combined_linkset *clset, const struct
osmo_ss7_route_label *rtlabel)
{
struct osmo_ss7_route *rt;
- ext_sls_t esls = osmo_ss7_instance_calc_itu_ext_sls(clset->rtable->inst,
rtlabel);
+ 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];
/* First check if we have a cached route for this ESLS */
@@ -228,7 +230,22 @@
if (rt == eslse->normal_rt) {
/* We can transmit over normal route.
* Clean up alternative route since it's not needed anymore */
- eslse->alt_rt = NULL;
+ if (eslse->alt_rt) {
+ LOGPCLSET(clset, DLSS7, LOGL_NOTICE, "RT lookup: OPC=%u=%s,DPC=%u=%s,SLS=%u
-> 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,
+ 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,
+ eslse->normal_rt->dest.as ? eslse->normal_rt->dest.as->cfg.name :
"<linkset>");
return rt;
}
/* We can transmit over alternative route: */
@@ -242,13 +259,29 @@
rt = ss7_combined_linkset_select_route_roundrobin(clset);
/* Either a normal route was selected or none found: */
eslse->normal_rt = rt;
+ if (rt) {
+ LOGPCLSET(clset, DLSS7, LOGL_DEBUG, "RT loookup: OPC=%u=%s,DPC=%u=%s,SLS=%u ->
eSLS=%u: "
+ "picked Normal 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,
+ rt->dest.as ? rt->dest.as->cfg.name : "<linkset>");
+ }
return rt;
}
/* Normal route unavailable and no alternative route (or unavailable too).
* start ITU Q.704 section 7 "forced rerouting" procedure: */
rt = ss7_combined_linkset_select_route_roundrobin(clset);
- if (rt)
+ if (rt) {
eslse->alt_rt = rt;
+ LOGPCLSET(clset, DLSS7, LOGL_NOTICE, "RT Lookup: OPC=%u=%s,DPC=%u=%s,SLS=%u ->
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,
+ 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>");
+ }
return rt;
}
diff --git a/src/ss7_combined_linkset.h b/src/ss7_combined_linkset.h
index b80a007..b79810b 100644
--- a/src/ss7_combined_linkset.h
+++ b/src/ss7_combined_linkset.h
@@ -56,3 +56,13 @@
ss7_combined_linkset_del_route(struct osmo_ss7_route *rt);
struct osmo_ss7_route *
ss7_combined_linkset_lookup_route(struct osmo_ss7_combined_linkset *clset, const struct
osmo_ss7_route_label *rtlabel);
+
+#define LOGPCLSET(clset, subsys, level, fmt, args ...) do { \
+ char _pc_str[MAX_PC_STR_LEN]; \
+ char _mask_str[MAX_PC_STR_LEN]; \
+ _LOGSS7((clset)->rtable->inst, subsys, level, \
+ "CombinedLinkset(dpc=%u=%s,mask=0x%x=%s,prio=%u) " fmt, \
+ (clset)->cfg.pc, osmo_ss7_pointcode_print_buf(_pc_str, MAX_PC_STR_LEN,
(clset)->rtable->inst, (clset)->cfg.pc), \
+ (clset)->cfg.mask, osmo_ss7_pointcode_print_buf(_mask_str, MAX_PC_STR_LEN,
(clset)->rtable->inst, (clset)->cfg.mask), \
+ (clset)->cfg.priority, ## args); \
+ } while (0)
--
To view, visit
https://gerrit.osmocom.org/c/libosmo-sigtran/+/39705?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: libosmo-sigtran
Gerrit-Branch: master
Gerrit-Change-Id: I6b4983bc2cc8bd231a5d85f378be8c93c6f4fa27
Gerrit-Change-Number: 39705
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin(a)sysmocom.de>