<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>