<p>Neels Hofmeyr has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/13941">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">LOG_TRANS: store subsys in trans, unify USSD logging back to DMM<br><br>Instead of calling trans_log_subsys() for each LOG_TRANS() log line, rather<br>store in trans->log_subsys once on trans_alloc() and use that.<br><br>Do not fall back to the RAN's own subsystem (DBSSAP / DIUCS), it makes little<br>sense and may cause logging to switch subsystems depending on the RAN state.<br><br>In trans_log_subsys(), add missing switch cases:<br><br>- Log silent call transactions also on CC.<br>- Log USSD on DMM.<br><br>About USSD: we currently have no dedicated USSD logging category. As a result,<br>after LOG_TRANS() was introduced [1], USSD logged on DBSSAP/DIUCS or DMSC,<br>depending on whether a RAN was associated with the trans or not. Before that<br>change, USSD always logged on DMM, so, until we have a separate logging<br>category for USSD, consistenly use DMM again.<br><br>[1] in I2e60964d7a3c06d051debd1c707051a0eb3101ba / ff7074a0c7b62025473d8f1a950905ac2cb2f31c<br><br>Related: coverity CID 198453<br>Change-Id: I6dfe5b98fb9e884c2dde61d603832dafceb12123<br>---<br>M include/osmocom/msc/transaction.h<br>M src/libmsc/transaction.c<br>M tests/msc_vlr/msc_vlr_test_ss.err<br>3 files changed, 18 insertions(+), 11 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/41/13941/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/msc/transaction.h b/include/osmocom/msc/transaction.h</span><br><span>index 99aca55..6b82390 100644</span><br><span>--- a/include/osmocom/msc/transaction.h</span><br><span>+++ b/include/osmocom/msc/transaction.h</span><br><span>@@ -27,7 +27,7 @@</span><br><span>              ##args)</span><br><span> </span><br><span> #define LOG_TRANS(trans, level, fmt, args...) \</span><br><span style="color: hsl(0, 100%, 40%);">-          LOG_TRANS_CAT(trans, trans_log_subsys(trans), level, fmt, ##args)</span><br><span style="color: hsl(120, 100%, 40%);">+             LOG_TRANS_CAT(trans, (trans)->log_subsys, level, fmt, ##args)</span><br><span> </span><br><span> enum bridge_state {</span><br><span>     BRIDGE_STATE_NONE,</span><br><span>@@ -60,6 +60,8 @@</span><br><span> </span><br><span>   /* What kind of transaction */</span><br><span>       enum trans_type type;</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Which category to log on, for LOG_TRANS(). */</span><br><span style="color: hsl(120, 100%, 40%);">+      int log_subsys;</span><br><span> </span><br><span>  /* The current transaction ID */</span><br><span>     uint8_t transaction_id;</span><br><span>@@ -161,13 +163,17 @@</span><br><span>              return DMSC;</span><br><span>         switch (trans->type) {</span><br><span>    case TRANS_CC:</span><br><span style="color: hsl(120, 100%, 40%);">+        case TRANS_SILENT_CALL:</span><br><span>              return DCC;</span><br><span>  case TRANS_SMS:</span><br><span>              return DLSMS;</span><br><span style="color: hsl(120, 100%, 40%);">+ case TRANS_USSD:</span><br><span style="color: hsl(120, 100%, 40%);">+              /* FIXME: traditionally (before LOG_TRANS() was added in I2e60964d7a3c06d051debd1c707051a0eb3101ba /</span><br><span style="color: hsl(120, 100%, 40%);">+           * ff7074a0c7b62025473d8f1a950905ac2cb2f31c), all USSD logging happened on DMM. Instead, it probably</span><br><span style="color: hsl(120, 100%, 40%);">+           * deserves its own logging subsystem. */</span><br><span style="color: hsl(120, 100%, 40%);">+             return DMM;</span><br><span>  default:</span><br><span>             break;</span><br><span>       }</span><br><span style="color: hsl(0, 100%, 40%);">-       if (trans->msc_a)</span><br><span style="color: hsl(0, 100%, 40%);">-            return trans->msc_a->c.ran->log_subsys;</span><br><span>     return DMSC;</span><br><span> }</span><br><span>diff --git a/src/libmsc/transaction.c b/src/libmsc/transaction.c</span><br><span>index b909cd8..d6f8c3b 100644</span><br><span>--- a/src/libmsc/transaction.c</span><br><span>+++ b/src/libmsc/transaction.c</span><br><span>@@ -146,6 +146,7 @@</span><br><span>                 .callref = callref,</span><br><span>          .net = net,</span><br><span>  };</span><br><span style="color: hsl(120, 100%, 40%);">+    trans->log_subsys = trans_log_subsys(trans);</span><br><span>      vlr_subscr_get(vsub, trans_vsub_use(type));</span><br><span>  llist_add_tail(&trans->entry, &net->trans_list);</span><br><span> </span><br><span>diff --git a/tests/msc_vlr/msc_vlr_test_ss.err b/tests/msc_vlr/msc_vlr_test_ss.err</span><br><span>index 5592488..2030715 100644</span><br><span>--- a/tests/msc_vlr/msc_vlr_test_ss.err</span><br><span>+++ b/tests/msc_vlr/msc_vlr_test_ss.err</span><br><span>@@ -173,12 +173,12 @@</span><br><span> DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP</span><br><span> DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: NCSS GSM0480_MTYPE_REGISTER</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + NCSS: now used by 3 (attached,active-conn,NCSS)</span><br><span style="color: hsl(0, 100%, 40%);">-DMSC trans(NCSS IMSI-901700000004620:MSISDN-46071 callref-0x20000001 tid-8) New transaction</span><br><span style="color: hsl(120, 100%, 40%);">+DMM trans(NCSS IMSI-901700000004620:MSISDN-46071 callref-0x20000001 tid-8) New transaction</span><br><span> DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: + nc_ss: now used by 3 (cm_service_ss,rx_from_ms,nc_ss)</span><br><span> DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_TRANSACTION_ACCEPTED</span><br><span> DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_COMMUNICATING</span><br><span> DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: - cm_service_ss: now used by 2 (rx_from_ms,nc_ss)</span><br><span style="color: hsl(0, 100%, 40%);">-DBSSAP trans(NCSS IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ callref-0x20000001 tid-8) Received SS/USSD msg GSM0480_MTYPE_REGISTER</span><br><span style="color: hsl(120, 100%, 40%);">+DMM trans(NCSS IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ callref-0x20000001 tid-8) Received SS/USSD msg GSM0480_MTYPE_REGISTER</span><br><span> GSUP --> HLR: OSMO_GSUP_MSGT_PROC_SS_REQUEST: 20010809710000004026f03004200000013101013515a11302010102013b300b04010f0406aa510c061b010a0103</span><br><span> DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: - rx_from_ms: now used by 1 (nc_ss)</span><br><span> <-- GSUP rx OSMO_GSUP_MSGT_PROC_SS_REQUEST: 20010809710000004026f03004200000013101033527a225020101302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d0a0103</span><br><span>@@ -187,7 +187,7 @@</span><br><span> - DTAP --GERAN-A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020101302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d</span><br><span> - DTAP matches expected message</span><br><span> DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST</span><br><span style="color: hsl(0, 100%, 40%);">-DBSSAP trans(NCSS IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ callref-0x20000001 tid-8) Freeing transaction</span><br><span style="color: hsl(120, 100%, 40%);">+DMM trans(NCSS IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ callref-0x20000001 tid-8) Freeing transaction</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - NCSS: now used by 3 (attached,active-conn,gsm0911_gsup_rx)</span><br><span> DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: - nc_ss: now used by 0 (-)</span><br><span> DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: Received Event MSC_A_EV_UNUSED</span><br><span>@@ -366,9 +366,9 @@</span><br><span> <-- GSUP rx OSMO_GSUP_MSGT_PROC_SS_REQUEST: 20010809710000004026f03004200001013101013515a11302010102013b300b04010f0406aa510c061b010a0103</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm0911_gsup_rx: now used by 3 (attached,_test_ss_ussd_no,gsm0911_gsup_rx)</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + NCSS: now used by 4 (attached,_test_ss_ussd_no,gsm0911_gsup_rx,NCSS)</span><br><span style="color: hsl(0, 100%, 40%);">-DMSC trans(NCSS IMSI-901700000004620:MSISDN-46071 callref-0x20000101 tid-255) New transaction</span><br><span style="color: hsl(0, 100%, 40%);">-DMSC trans(NCSS IMSI-901700000004620:MSISDN-46071 callref-0x20000101 tid-255) Establishing network-originated session</span><br><span style="color: hsl(0, 100%, 40%);">-DMSC trans(NCSS IMSI-901700000004620:MSISDN-46071 callref-0x20000101 tid-0) Triggering Paging Request</span><br><span style="color: hsl(120, 100%, 40%);">+DMM trans(NCSS IMSI-901700000004620:MSISDN-46071 callref-0x20000101 tid-255) New transaction</span><br><span style="color: hsl(120, 100%, 40%);">+DMM trans(NCSS IMSI-901700000004620:MSISDN-46071 callref-0x20000101 tid-255) Establishing network-originated session</span><br><span style="color: hsl(120, 100%, 40%);">+DMM trans(NCSS IMSI-901700000004620:MSISDN-46071 callref-0x20000101 tid-0) Triggering Paging Request</span><br><span> DPAG Paging: IMSI-901700000004620:MSISDN-46071 for GSM 09.11 SS/USSD: Starting paging</span><br><span>   paging request (SIGNALLING_HIGH_PRIO) to IMSI-901700000004620:MSISDN-46071 on GERAN-A</span><br><span>   strcmp(paging_expecting_imsi, vsub->imsi) == 0</span><br><span>@@ -433,7 +433,7 @@</span><br><span> DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (nc_ss,rx_from_ms)</span><br><span> DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP</span><br><span> DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: NCSS GSM0480_MTYPE_FACILITY</span><br><span style="color: hsl(0, 100%, 40%);">-DBSSAP trans(NCSS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x20000101 tid-0) Received SS/USSD msg GSM0480_MTYPE_FACILITY</span><br><span style="color: hsl(120, 100%, 40%);">+DMM trans(NCSS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x20000101 tid-0) Received SS/USSD msg GSM0480_MTYPE_FACILITY</span><br><span> GSUP --> HLR: OSMO_GSUP_MSGT_PROC_SS_REQUEST: 20010809710000004026f03004200001013101023527a225020101302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d0a0103</span><br><span> DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (nc_ss)</span><br><span>   dtap_tx_confirmed == 1</span><br><span>@@ -444,7 +444,7 @@</span><br><span> - DTAP --GERAN-A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 0b2a</span><br><span> - DTAP matches expected message</span><br><span> DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST</span><br><span style="color: hsl(0, 100%, 40%);">-DBSSAP trans(NCSS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x20000101 tid-0) Freeing transaction</span><br><span style="color: hsl(120, 100%, 40%);">+DMM trans(NCSS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x20000101 tid-0) Freeing transaction</span><br><span> DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - NCSS: now used by 4 (attached,2*gsm0911_gsup_rx,active-conn)</span><br><span> DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - nc_ss: now used by 0 (-)</span><br><span> DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/13941">change 13941</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/13941"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-msc </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I6dfe5b98fb9e884c2dde61d603832dafceb12123 </div>
<div style="display:none"> Gerrit-Change-Number: 13941 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Neels Hofmeyr <nhofmeyr@sysmocom.de> </div>