<p>lynxis lazus <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/22294">View Change</a></p><div style="white-space:pre-wrap">Approvals:
laforge: Looks good to me, approved
Jenkins Builder: Verified
</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">gprs_ns2: rework logging of Rx and Tx NS PDU<br><br>Introduce 2 new logging sub systems for signal and unit data.<br>Unify log messages so all log messages look similiar.<br>Log also Rx PDUs. Ensure dropped Tx packets (BLOCK/RESET on SNS)<br>contain *Tx*.<br><br>Change-Id: I34b8fde2955ecc010d1dcd9512e1bba9211e2c0d<br>---<br>M include/osmocom/core/logging.h<br>M src/gb/gprs_ns2.c<br>M src/gb/gprs_ns2_internal.h<br>M src/gb/gprs_ns2_message.c<br>M src/gb/gprs_ns2_vc_fsm.c<br>M src/logging.c<br>M tests/logging/logging_vty_test.vty<br>7 files changed, 92 insertions(+), 70 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/core/logging.h b/include/osmocom/core/logging.h</span><br><span>index 01850c4..343f976 100644</span><br><span>--- a/include/osmocom/core/logging.h</span><br><span>+++ b/include/osmocom/core/logging.h</span><br><span>@@ -122,7 +122,9 @@</span><br><span> #define DLRSPRO -19 /*!< Osmocom Remote SIM Protocol */</span><br><span> #define DLNS -20 /*!< Osmocom NS layer */</span><br><span> #define DLBSSGP -21 /*!< Osmocom BSSGP layer */</span><br><span style="color: hsl(0, 100%, 40%);">-#define OSMO_NUM_DLIB 21 /*!< Number of logging sub-systems in libraries */</span><br><span style="color: hsl(120, 100%, 40%);">+#define DLNSDATA -22 /*!< Osmocom NS layer data pdus */</span><br><span style="color: hsl(120, 100%, 40%);">+#define DLNSSIGNAL -23 /*!< Osmocom NS layer signal pdus */</span><br><span style="color: hsl(120, 100%, 40%);">+#define OSMO_NUM_DLIB 23 /*!< Number of logging sub-systems in libraries */</span><br><span> </span><br><span> /* Colors that can be used in log_info_cat.color */</span><br><span> #define OSMO_LOGCOLOR_NORMAL NULL</span><br><span>diff --git a/src/gb/gprs_ns2.c b/src/gb/gprs_ns2.c</span><br><span>index 3574f28..507a5ac 100644</span><br><span>--- a/src/gb/gprs_ns2.c</span><br><span>+++ b/src/gb/gprs_ns2.c</span><br><span>@@ -1261,6 +1261,11 @@</span><br><span> if (msg->len < sizeof(struct gprs_ns_hdr))</span><br><span> return -EINVAL;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ if (nsh->pdu_type != NS_PDUT_UNITDATA)</span><br><span style="color: hsl(120, 100%, 40%);">+ LOG_NS_RX_SIGNAL(nsvc, nsh->pdu_type);</span><br><span style="color: hsl(120, 100%, 40%);">+ else</span><br><span style="color: hsl(120, 100%, 40%);">+ LOG_NS_DATA(nsvc, "Rx", nsh->pdu_type, LOGL_INFO, "\n");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> switch (nsh->pdu_type) {</span><br><span> case SNS_PDUT_CONFIG:</span><br><span> /* one additional byte ('end flag') before the TLV part starts */</span><br><span>diff --git a/src/gb/gprs_ns2_internal.h b/src/gb/gprs_ns2_internal.h</span><br><span>index b4d0a0d..df51ff5 100644</span><br><span>--- a/src/gb/gprs_ns2_internal.h</span><br><span>+++ b/src/gb/gprs_ns2_internal.h</span><br><span>@@ -5,6 +5,7 @@</span><br><span> #include <stdbool.h></span><br><span> #include <stdint.h></span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/core/logging.h></span><br><span> #include <osmocom/gprs/protocol/gsm_08_16.h></span><br><span> #include <osmocom/gprs/gprs_ns2.h></span><br><span> </span><br><span>@@ -14,18 +15,30 @@</span><br><span> #define LOGBIND(bind, lvl, fmt, args ...) \</span><br><span> LOGP(DLNS, lvl, "BIND(%s) " fmt, (bind)->name, ## args)</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#define LOGNSVC(nsvc, lvl, fmt, args ...) \</span><br><span style="color: hsl(120, 100%, 40%);">+#define LOGNSVC_SS(ss, nsvc, lvl, fmt, args ...) \</span><br><span> do { \</span><br><span> if ((nsvc)->nsvci_is_valid) { \</span><br><span style="color: hsl(0, 100%, 40%);">- LOGP(DLNS, lvl, "NSE(%05u)-NSVC(%05u) " fmt, \</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGP(ss, lvl, "NSE(%05u)-NSVC(%05u) " fmt, \</span><br><span> (nsvc)->nse->nsei, (nsvc)->nsvci, ## args); \</span><br><span> } else { \</span><br><span style="color: hsl(0, 100%, 40%);">- LOGP(DLNS, lvl, "NSE(%05u)-NSVC(none) " fmt, \</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGP(ss, lvl, "NSE(%05u)-NSVC(none) " fmt, \</span><br><span> (nsvc)->nse->nsei, ## args); \</span><br><span> } \</span><br><span> } while (0)</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#define LOGNSVC(nsvc, lvl, fmt, args ...) \</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGNSVC_SS(DLNS, nsvc, lvl, fmt, ## args)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#define LOG_NS_SIGNAL(nsvc, direction, pdu_type, lvl, fmt, args ...) \</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGNSVC_SS(DLNSSIGNAL, nsvc, lvl, "%s %s" fmt, direction, get_value_string(gprs_ns_pdu_strings, pdu_type), ## args)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#define LOG_NS_DATA(nsvc, direction, pdu_type, lvl, fmt, args ...) \</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGNSVC_SS(DLNSDATA, nsvc, lvl, "%s %s" fmt, direction, get_value_string(gprs_ns_pdu_strings, pdu_type), ## args)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#define LOG_NS_RX_SIGNAL(nsvc, pdu_type) LOG_NS_SIGNAL(nsvc, "Rx", pdu_type, LOGL_INFO, "\n")</span><br><span style="color: hsl(120, 100%, 40%);">+#define LOG_NS_TX_SIGNAL(nsvc, pdu_type) LOG_NS_SIGNAL(nsvc, "Tx", pdu_type, LOGL_INFO, "\n")</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> struct osmo_fsm_inst;</span><br><span> struct tlv_parsed;</span><br><span> struct vty;</span><br><span>diff --git a/src/gb/gprs_ns2_message.c b/src/gb/gprs_ns2_message.c</span><br><span>index 535d5be..9fcd48c 100644</span><br><span>--- a/src/gb/gprs_ns2_message.c</span><br><span>+++ b/src/gb/gprs_ns2_message.c</span><br><span>@@ -198,9 +198,9 @@</span><br><span> </span><br><span> msg->l2h = msgb_put(msg, sizeof(*nsh));</span><br><span> nsh = (struct gprs_ns_hdr *) msg->l2h;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> nsh->pdu_type = pdu_type;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ LOG_NS_TX_SIGNAL(nsvc, nsh->pdu_type);</span><br><span> return ns_vc_tx(nsvc, msg);</span><br><span> }</span><br><span> </span><br><span>@@ -223,8 +223,6 @@</span><br><span> if (!msg)</span><br><span> return -ENOMEM;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- LOGNSVC(nsvc, LOGL_INFO, "Tx NS BLOCK (cause=%s)\n", gprs_ns2_cause_str(cause));</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> rate_ctr_inc(&nsvc->ctrg->ctr[NS_CTR_BLOCKED]);</span><br><span> </span><br><span> msg->l2h = msgb_put(msg, sizeof(*nsh));</span><br><span>@@ -234,6 +232,7 @@</span><br><span> msgb_tvlv_put(msg, NS_IE_CAUSE, 1, &cause);</span><br><span> msgb_tvlv_put(msg, NS_IE_VCI, 2, (uint8_t *) &nsvci);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ LOG_NS_SIGNAL(nsvc, "Tx", nsh->pdu_type, LOGL_INFO, " cause=%s\n", gprs_ns2_cause_str(cause));</span><br><span> return ns_vc_tx(nsvc, msg);</span><br><span> }</span><br><span> </span><br><span>@@ -255,14 +254,13 @@</span><br><span> if (!msg)</span><br><span> return -ENOMEM;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- LOGNSVC(nsvc, LOGL_INFO, "Tx NS BLOCK ACK\n");</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> msg->l2h = msgb_put(msg, sizeof(*nsh));</span><br><span> nsh = (struct gprs_ns_hdr *) msg->l2h;</span><br><span> nsh->pdu_type = NS_PDUT_BLOCK_ACK;</span><br><span> </span><br><span> msgb_tvlv_put(msg, NS_IE_VCI, 2, (uint8_t *) &nsvci);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ LOG_NS_TX_SIGNAL(nsvc, nsh->pdu_type);</span><br><span> return ns_vc_tx(nsvc, msg);</span><br><span> }</span><br><span> </span><br><span>@@ -286,8 +284,6 @@</span><br><span> if (!msg)</span><br><span> return -ENOMEM;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- LOGNSVC(nsvc, LOGL_INFO, "Tx NS RESET (cause=%s)\n", gprs_ns2_cause_str(cause));</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> msg->l2h = msgb_put(msg, sizeof(*nsh));</span><br><span> nsh = (struct gprs_ns_hdr *) msg->l2h;</span><br><span> nsh->pdu_type = NS_PDUT_RESET;</span><br><span>@@ -296,6 +292,7 @@</span><br><span> msgb_tvlv_put(msg, NS_IE_VCI, 2, (uint8_t *) &nsvci);</span><br><span> msgb_tvlv_put(msg, NS_IE_NSEI, 2, (uint8_t *) &nsei);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ LOG_NS_SIGNAL(nsvc, "Tx", nsh->pdu_type, LOGL_INFO, " cause=%s\n", gprs_ns2_cause_str(cause));</span><br><span> return ns_vc_tx(nsvc, msg);</span><br><span> }</span><br><span> </span><br><span>@@ -326,11 +323,10 @@</span><br><span> </span><br><span> nsh->pdu_type = NS_PDUT_RESET_ACK;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- LOGNSVC(nsvc, LOGL_INFO, "Tx NS RESET ACK\n");</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> msgb_tvlv_put(msg, NS_IE_VCI, 2, (uint8_t *)&nsvci);</span><br><span> msgb_tvlv_put(msg, NS_IE_NSEI, 2, (uint8_t *)&nsei);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ LOG_NS_TX_SIGNAL(nsvc, nsh->pdu_type);</span><br><span> return ns_vc_tx(nsvc, msg);</span><br><span> }</span><br><span> </span><br><span>@@ -344,8 +340,6 @@</span><br><span> </span><br><span> ERR_IF_NSVC_USES_SNS(nsvc, "transmit NS UNBLOCK");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- LOGNSVC(nsvc, LOGL_INFO, "Tx NS UNBLOCK\n");</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> return ns2_tx_simple(nsvc, NS_PDUT_UNBLOCK);</span><br><span> }</span><br><span> </span><br><span>@@ -360,8 +354,6 @@</span><br><span> </span><br><span> ERR_IF_NSVC_USES_SNS(nsvc, "transmit NS UNBLOCK ACK");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- LOGNSVC(nsvc, LOGL_INFO, "Tx NS UNBLOCK_ACK\n");</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> return ns2_tx_simple(nsvc, NS_PDUT_UNBLOCK_ACK);</span><br><span> }</span><br><span> </span><br><span>@@ -372,7 +364,6 @@</span><br><span> {</span><br><span> log_set_context(LOG_CTX_GB_NSE, nsvc->nse);</span><br><span> log_set_context(LOG_CTX_GB_NSVC, nsvc);</span><br><span style="color: hsl(0, 100%, 40%);">- LOGNSVC(nsvc, LOGL_DEBUG, "Tx NS ALIVE\n");</span><br><span> </span><br><span> return ns2_tx_simple(nsvc, NS_PDUT_ALIVE);</span><br><span> }</span><br><span>@@ -384,7 +375,6 @@</span><br><span> {</span><br><span> log_set_context(LOG_CTX_GB_NSE, nsvc->nse);</span><br><span> log_set_context(LOG_CTX_GB_NSVC, nsvc);</span><br><span style="color: hsl(0, 100%, 40%);">- LOGNSVC(nsvc, LOGL_DEBUG, "Tx NS ALIVE_ACK\n");</span><br><span> </span><br><span> return ns2_tx_simple(nsvc, NS_PDUT_ALIVE_ACK);</span><br><span> }</span><br><span>@@ -417,6 +407,7 @@</span><br><span> nsh->data[1] = bvci >> 8;</span><br><span> nsh->data[2] = bvci & 0xff;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ LOG_NS_DATA(nsvc, "Tx", nsh->pdu_type, LOGL_INFO, "\n");</span><br><span> return ns_vc_tx(nsvc, msg);</span><br><span> }</span><br><span> </span><br><span>@@ -442,8 +433,6 @@</span><br><span> if (!msg)</span><br><span> return -ENOMEM;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- LOGNSVC(nsvc, LOGL_NOTICE, "Tx NS STATUS (cause=%s)\n", gprs_ns2_cause_str(cause));</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> msg->l2h = msgb_put(msg, sizeof(*nsh));</span><br><span> nsh = (struct gprs_ns_hdr *) msg->l2h;</span><br><span> nsh->pdu_type = NS_PDUT_STATUS;</span><br><span>@@ -478,6 +467,7 @@</span><br><span> break;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ LOG_NS_SIGNAL(nsvc, "Tx", nsh->pdu_type, LOGL_INFO, " cause=%s\n", gprs_ns2_cause_str(cause));</span><br><span> return ns_vc_tx(nsvc, msg);</span><br><span> }</span><br><span> </span><br><span>@@ -515,8 +505,6 @@</span><br><span> return -EIO;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- LOGNSVC(nsvc, LOGL_INFO, "Tx SNS-ACK (trans_id=%u, cause=%s, num_ip4=%u, num_ip6=%u)\n",</span><br><span style="color: hsl(0, 100%, 40%);">- trans_id, cause ? gprs_ns2_cause_str(*cause) : "NULL", num_ip4_elems, num_ip6_elems);</span><br><span> </span><br><span> nsei = osmo_htons(nsvc->nse->nsei);</span><br><span> </span><br><span>@@ -541,6 +529,9 @@</span><br><span> (const uint8_t *)ip6_elems);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ LOG_NS_SIGNAL(nsvc, "Tx", nsh->pdu_type, LOGL_INFO,</span><br><span style="color: hsl(120, 100%, 40%);">+ " (trans_id=%u, cause=%s, num_ip4=%u, num_ip6=%u)\n",</span><br><span style="color: hsl(120, 100%, 40%);">+ trans_id, cause ? gprs_ns2_cause_str(*cause) : "NULL", num_ip4_elems, num_ip6_elems);</span><br><span> return ns_vc_tx(nsvc, msg);</span><br><span> }</span><br><span> </span><br><span>@@ -576,9 +567,6 @@</span><br><span> return -EIO;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- LOGNSVC(nsvc, LOGL_INFO, "Tx SNS-CONFIG (end_flag=%u, num_ip4=%u, num_ip6=%u)\n",</span><br><span style="color: hsl(0, 100%, 40%);">- end_flag, num_ip4_elems, num_ip6_elems);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> nsei = osmo_htons(nsvc->nse->nsei);</span><br><span> </span><br><span> msg->l2h = msgb_put(msg, sizeof(*nsh));</span><br><span>@@ -599,6 +587,9 @@</span><br><span> (const uint8_t *)ip6_elems);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ LOG_NS_SIGNAL(nsvc, "Tx", nsh->pdu_type, LOGL_INFO,</span><br><span style="color: hsl(120, 100%, 40%);">+ " (end_flag=%u, num_ip4=%u, num_ip6=%u)\n",</span><br><span style="color: hsl(120, 100%, 40%);">+ end_flag, num_ip4_elems, num_ip6_elems);</span><br><span> return ns_vc_tx(nsvc, msg);</span><br><span> }</span><br><span> </span><br><span>@@ -627,9 +618,6 @@</span><br><span> return -EIO;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- LOGNSVC(nsvc, LOGL_INFO, "Tx SNS-CONFIG-ACK (cause=%s)\n",</span><br><span style="color: hsl(0, 100%, 40%);">- cause ? gprs_ns2_cause_str(*cause) : "NULL");</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> nsei = osmo_htons(nsvc->nse->nsei);</span><br><span> </span><br><span> msg->l2h = msgb_put(msg, sizeof(*nsh));</span><br><span>@@ -641,6 +629,9 @@</span><br><span> if (cause)</span><br><span> msgb_tvlv_put(msg, NS_IE_CAUSE, 1, cause);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ LOGNSVC(nsvc, LOGL_INFO, "Tx SNS-CONFIG-ACK (cause=%s)\n",</span><br><span style="color: hsl(120, 100%, 40%);">+ cause ? gprs_ns2_cause_str(*cause) : "NULL");</span><br><span style="color: hsl(120, 100%, 40%);">+ LOG_NS_TX_SIGNAL(nsvc, nsh->pdu_type);</span><br><span> return ns_vc_tx(nsvc, msg);</span><br><span> }</span><br><span> </span><br><span>@@ -675,9 +666,6 @@</span><br><span> return -EIO;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- LOGNSVC(nsvc, LOGL_INFO, "Tx SNS-SIZE (reset=%u, max_nr_nsvc=%u, num_ip4=%u, num_ip6=%u)\n",</span><br><span style="color: hsl(0, 100%, 40%);">- reset_flag, max_nr_nsvc, ip4_ep_nr, ip6_ep_nr);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> nsei = osmo_htons(nsvc->nse->nsei);</span><br><span> </span><br><span> msg->l2h = msgb_put(msg, sizeof(*nsh));</span><br><span>@@ -693,6 +681,9 @@</span><br><span> if (ip6_ep_nr >= 0)</span><br><span> msgb_tv16_put(msg, NS_IE_IPv6_EP_NR, ip6_ep_nr);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ LOG_NS_SIGNAL(nsvc, "Tx", nsh->pdu_type, LOGL_INFO,</span><br><span style="color: hsl(120, 100%, 40%);">+ " (reset=%u, max_nr_nsvc=%u, num_ip4=%u, num_ip6=%u)\n",</span><br><span style="color: hsl(120, 100%, 40%);">+ reset_flag, max_nr_nsvc, ip4_ep_nr, ip6_ep_nr);</span><br><span> return ns_vc_tx(nsvc, msg);</span><br><span> }</span><br><span> </span><br><span>@@ -717,9 +708,6 @@</span><br><span> return -EIO;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- LOGNSVC(nsvc, LOGL_INFO, "Tx SNS-SIZE-ACK (cause=%s)\n",</span><br><span style="color: hsl(0, 100%, 40%);">- cause ? gprs_ns2_cause_str(*cause) : "NULL");</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> nsei = osmo_htons(nsvc->nse->nsei);</span><br><span> </span><br><span> msg->l2h = msgb_put(msg, sizeof(*nsh));</span><br><span>@@ -731,7 +719,7 @@</span><br><span> if (cause)</span><br><span> msgb_tvlv_put(msg, NS_IE_CAUSE, 1, cause);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ LOG_NS_SIGNAL(nsvc, "Tx", nsh->pdu_type, LOGL_INFO, " cause=%s\n",</span><br><span style="color: hsl(120, 100%, 40%);">+ cause ? gprs_ns2_cause_str(*cause) : "NULL");</span><br><span> return ns_vc_tx(nsvc, msg);</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>diff --git a/src/gb/gprs_ns2_vc_fsm.c b/src/gb/gprs_ns2_vc_fsm.c</span><br><span>index f4d88f4..c64f60d 100644</span><br><span>--- a/src/gb/gprs_ns2_vc_fsm.c</span><br><span>+++ b/src/gb/gprs_ns2_vc_fsm.c</span><br><span>@@ -646,6 +646,8 @@</span><br><span> * the msg, the upper layer has to do it.</span><br><span> * Otherwise the msg must be freed.</span><br><span> */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ LOG_NS_DATA(priv->nsvc, "Rx", NS_PDUT_UNITDATA, LOGL_INFO, "\n");</span><br><span> switch (fi->state) {</span><br><span> case GPRS_NS2_ST_BLOCKED:</span><br><span> /* 7.2.1: the BLOCKED_ACK might be lost */</span><br><span>@@ -812,8 +814,7 @@</span><br><span> if (nsh->pdu_type == NS_PDUT_RESET)</span><br><span> ns2_tx_reset_ack(nsvc);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- LOGNSVC(nsvc, LOGL_ERROR, "Rx %s with wrong NSEI=%05u. Ignoring PDU.\n",</span><br><span style="color: hsl(0, 100%, 40%);">- get_value_string(gprs_ns_pdu_strings, nsh->pdu_type), nsei);</span><br><span style="color: hsl(120, 100%, 40%);">+ LOG_NS_SIGNAL(nsvc, "Rx", nsh->pdu_type, LOGL_ERROR, " with wrong NSEI=%05u. Ignoring PDU.\n", nsei);</span><br><span> goto out;</span><br><span> }</span><br><span> }</span><br><span>@@ -825,8 +826,7 @@</span><br><span> if (nsh->pdu_type == NS_PDUT_RESET)</span><br><span> ns2_tx_reset_ack(nsvc);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- LOGNSVC(nsvc, LOGL_ERROR, "Rx %s with wrong NSVCI=%05u. Ignoring PDU.\n",</span><br><span style="color: hsl(0, 100%, 40%);">- get_value_string(gprs_ns_pdu_strings, nsh->pdu_type), nsvci);</span><br><span style="color: hsl(120, 100%, 40%);">+ LOG_NS_SIGNAL(nsvc, "Rx", nsh->pdu_type, LOGL_ERROR, " with wrong NSVCI=%05u. Ignoring PDU.\n", nsvci);</span><br><span> goto out;</span><br><span> }</span><br><span> }</span><br><span>diff --git a/src/logging.c b/src/logging.c</span><br><span>index c2a0453..4517afc 100644</span><br><span>--- a/src/logging.c</span><br><span>+++ b/src/logging.c</span><br><span>@@ -277,6 +277,18 @@</span><br><span> .enabled = 1, .loglevel = LOGL_NOTICE,</span><br><span> .color = "\033[38;5;59m",</span><br><span> },</span><br><span style="color: hsl(120, 100%, 40%);">+ [INT2IDX(DLNSDATA)] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "DLNSDATA",</span><br><span style="color: hsl(120, 100%, 40%);">+ .description = "GPRS NS layer data PDU",</span><br><span style="color: hsl(120, 100%, 40%);">+ .enabled = 1, .loglevel = LOGL_NOTICE,</span><br><span style="color: hsl(120, 100%, 40%);">+ .color = "\033[38;5;61m",</span><br><span style="color: hsl(120, 100%, 40%);">+ },</span><br><span style="color: hsl(120, 100%, 40%);">+ [INT2IDX(DLNSSIGNAL)] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .name = "DLNSSIGNAL",</span><br><span style="color: hsl(120, 100%, 40%);">+ .description = "GPRS NS layer signal PDU",</span><br><span style="color: hsl(120, 100%, 40%);">+ .enabled = 1, .loglevel = LOGL_NOTICE,</span><br><span style="color: hsl(120, 100%, 40%);">+ .color = "\033[38;5;63m",</span><br><span style="color: hsl(120, 100%, 40%);">+ },</span><br><span> };</span><br><span> </span><br><span> void assert_loginfo(const char *src)</span><br><span>diff --git a/tests/logging/logging_vty_test.vty b/tests/logging/logging_vty_test.vty</span><br><span>index 82db2cc..91c2a48 100644</span><br><span>--- a/tests/logging/logging_vty_test.vty</span><br><span>+++ b/tests/logging/logging_vty_test.vty</span><br><span>@@ -54,7 +54,7 @@</span><br><span> logging print level (0|1)</span><br><span> logging print file (0|1|basename) [last]</span><br><span> logging set-log-mask MASK</span><br><span style="color: hsl(0, 100%, 40%);">- logging level (aa|bb|ccc|dddd|eee|lglobal|llapd|linp|lmux|lmi|lmib|lsms|lctrl|lgtp|lstats|lgsup|loap|lss7|lsccp|lsua|lm3ua|lmgcp|ljibuf|lrspro|lns|lbssgp) (debug|info|notice|error|fatal)</span><br><span style="color: hsl(120, 100%, 40%);">+ logging level (aa|bb|ccc|dddd|eee|lglobal|llapd|linp|lmux|lmi|lmib|lsms|lctrl|lgtp|lstats|lgsup|loap|lss7|lsccp|lsua|lm3ua|lmgcp|ljibuf|lrspro|lns|lbssgp|lnsdata|lnssignal) (debug|info|notice|error|fatal)</span><br><span> logging level set-all (debug|info|notice|error|fatal)</span><br><span> logging level force-all (debug|info|notice|error|fatal)</span><br><span> no logging level force-all</span><br><span>@@ -472,39 +472,41 @@</span><br><span> </span><br><span> logging_vty_test# list</span><br><span> ...</span><br><span style="color: hsl(0, 100%, 40%);">- logp (aa|bb|ccc|dddd|eee|lglobal|llapd|linp|lmux|lmi|lmib|lsms|lctrl|lgtp|lstats|lgsup|loap|lss7|lsccp|lsua|lm3ua|lmgcp|ljibuf|lrspro|lns|lbssgp) (debug|info|notice|error|fatal) .LOGMESSAGE</span><br><span style="color: hsl(120, 100%, 40%);">+ logp (aa|bb|ccc|dddd|eee|lglobal|llapd|linp|lmux|lmi|lmib|lsms|lctrl|lgtp|lstats|lgsup|loap|lss7|lsccp|lsua|lm3ua|lmgcp|ljibuf|lrspro|lns|lbssgp|lnsdata|lnssignal) (debug|info|notice|error|fatal) .LOGMESSAGE</span><br><span> ...</span><br><span> </span><br><span> logging_vty_test# logp?</span><br><span> logp Print a message on all log outputs; useful for placing markers in test logs</span><br><span> </span><br><span> logging_vty_test# logp ?</span><br><span style="color: hsl(0, 100%, 40%);">- aa Antropomorphic Armadillos (AA)</span><br><span style="color: hsl(0, 100%, 40%);">- bb Bidirectional Breadspread (BB)</span><br><span style="color: hsl(0, 100%, 40%);">- ccc Chaos Communication Congress (CCC)</span><br><span style="color: hsl(0, 100%, 40%);">- dddd Dehydrated Dribbling Duck Dunkers (DDDD)</span><br><span style="color: hsl(0, 100%, 40%);">- eee Exhaustive Entropy Extraction (EEE)</span><br><span style="color: hsl(0, 100%, 40%);">- lglobal Library-internal global log family</span><br><span style="color: hsl(0, 100%, 40%);">- llapd LAPD in libosmogsm</span><br><span style="color: hsl(0, 100%, 40%);">- linp A-bis Intput Subsystem</span><br><span style="color: hsl(0, 100%, 40%);">- lmux A-bis B-Subchannel TRAU Frame Multiplex</span><br><span style="color: hsl(0, 100%, 40%);">- lmi A-bis Input Driver for Signalling</span><br><span style="color: hsl(0, 100%, 40%);">- lmib A-bis Input Driver for B-Channels (voice)</span><br><span style="color: hsl(0, 100%, 40%);">- lsms Layer3 Short Message Service (SMS)</span><br><span style="color: hsl(0, 100%, 40%);">- lctrl Control Interface</span><br><span style="color: hsl(0, 100%, 40%);">- lgtp GPRS GTP library</span><br><span style="color: hsl(0, 100%, 40%);">- lstats Statistics messages and logging</span><br><span style="color: hsl(0, 100%, 40%);">- lgsup Generic Subscriber Update Protocol</span><br><span style="color: hsl(0, 100%, 40%);">- loap Osmocom Authentication Protocol</span><br><span style="color: hsl(0, 100%, 40%);">- lss7 libosmo-sigtran Signalling System 7</span><br><span style="color: hsl(0, 100%, 40%);">- lsccp libosmo-sigtran SCCP Implementation</span><br><span style="color: hsl(0, 100%, 40%);">- lsua libosmo-sigtran SCCP User Adaptation</span><br><span style="color: hsl(0, 100%, 40%);">- lm3ua libosmo-sigtran MTP3 User Adaptation</span><br><span style="color: hsl(0, 100%, 40%);">- lmgcp libosmo-mgcp Media Gateway Control Protocol</span><br><span style="color: hsl(0, 100%, 40%);">- ljibuf libosmo-netif Jitter Buffer</span><br><span style="color: hsl(0, 100%, 40%);">- lrspro Remote SIM protocol</span><br><span style="color: hsl(0, 100%, 40%);">- lns GPRS NS layer</span><br><span style="color: hsl(0, 100%, 40%);">- lbssgp GPRS BSSGP layer</span><br><span style="color: hsl(120, 100%, 40%);">+ aa Antropomorphic Armadillos (AA)</span><br><span style="color: hsl(120, 100%, 40%);">+ bb Bidirectional Breadspread (BB)</span><br><span style="color: hsl(120, 100%, 40%);">+ ccc Chaos Communication Congress (CCC)</span><br><span style="color: hsl(120, 100%, 40%);">+ dddd Dehydrated Dribbling Duck Dunkers (DDDD)</span><br><span style="color: hsl(120, 100%, 40%);">+ eee Exhaustive Entropy Extraction (EEE)</span><br><span style="color: hsl(120, 100%, 40%);">+ lglobal Library-internal global log family</span><br><span style="color: hsl(120, 100%, 40%);">+ llapd LAPD in libosmogsm</span><br><span style="color: hsl(120, 100%, 40%);">+ linp A-bis Intput Subsystem</span><br><span style="color: hsl(120, 100%, 40%);">+ lmux A-bis B-Subchannel TRAU Frame Multiplex</span><br><span style="color: hsl(120, 100%, 40%);">+ lmi A-bis Input Driver for Signalling</span><br><span style="color: hsl(120, 100%, 40%);">+ lmib A-bis Input Driver for B-Channels (voice)</span><br><span style="color: hsl(120, 100%, 40%);">+ lsms Layer3 Short Message Service (SMS)</span><br><span style="color: hsl(120, 100%, 40%);">+ lctrl Control Interface</span><br><span style="color: hsl(120, 100%, 40%);">+ lgtp GPRS GTP library</span><br><span style="color: hsl(120, 100%, 40%);">+ lstats Statistics messages and logging</span><br><span style="color: hsl(120, 100%, 40%);">+ lgsup Generic Subscriber Update Protocol</span><br><span style="color: hsl(120, 100%, 40%);">+ loap Osmocom Authentication Protocol</span><br><span style="color: hsl(120, 100%, 40%);">+ lss7 libosmo-sigtran Signalling System 7</span><br><span style="color: hsl(120, 100%, 40%);">+ lsccp libosmo-sigtran SCCP Implementation</span><br><span style="color: hsl(120, 100%, 40%);">+ lsua libosmo-sigtran SCCP User Adaptation</span><br><span style="color: hsl(120, 100%, 40%);">+ lm3ua libosmo-sigtran MTP3 User Adaptation</span><br><span style="color: hsl(120, 100%, 40%);">+ lmgcp libosmo-mgcp Media Gateway Control Protocol</span><br><span style="color: hsl(120, 100%, 40%);">+ ljibuf libosmo-netif Jitter Buffer</span><br><span style="color: hsl(120, 100%, 40%);">+ lrspro Remote SIM protocol</span><br><span style="color: hsl(120, 100%, 40%);">+ lns GPRS NS layer</span><br><span style="color: hsl(120, 100%, 40%);">+ lbssgp GPRS BSSGP layer</span><br><span style="color: hsl(120, 100%, 40%);">+ lnsdata GPRS NS layer data PDU</span><br><span style="color: hsl(120, 100%, 40%);">+ lnssignal GPRS NS layer signal PDU</span><br><span> </span><br><span> logging_vty_test# logp lglobal ?</span><br><span> debug Log debug messages and higher levels</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmocore/+/22294">change 22294</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/libosmocore/+/22294"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: libosmocore </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I34b8fde2955ecc010d1dcd9512e1bba9211e2c0d </div>
<div style="display:none"> Gerrit-Change-Number: 22294 </div>
<div style="display:none"> Gerrit-PatchSet: 16 </div>
<div style="display:none"> Gerrit-Owner: lynxis lazus <lynxis@fe80.eu> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: daniel <dwillmann@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: lynxis lazus <lynxis@fe80.eu> </div>
<div style="display:none"> Gerrit-CC: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>