Change in osmo-pcu[master]: csn1: Allow CHOICE elements to re-process the bits used for the choice

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

laforge gerrit-no-reply at lists.osmocom.org
Tue Jan 28 21:34:42 UTC 2020


laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-pcu/+/16998 )

Change subject: csn1: Allow CHOICE elements to re-process the bits used for the choice
......................................................................

csn1: Allow CHOICE elements to re-process the bits used for the choice

This is a port of wireshark.git commit
2f024256bf337400ef3a82fa75e6d48d5707e059.

>From 78516187d821b8d19d16987b1d6bc855ee7cbe10 Mon Sep 17 00:00:00 2001
From: Sylvain Munaut <tnt at 246tNt.com>
Date: Sat, 4 Feb 2012 10:00:22 +0100
Subject: [PATCH 4/6] packet-csn1: Allow CHOICE elements to re-process the bits used for the choice

We may want to display more detail, or the sub-element should be
displayed with its headers or whatever ...

Change-Id: I3a5a95d5f918b8f17a2400a6d0c4d855ecacea7e
---
M src/csn1.cpp
M src/csn1.h
M src/gsm_rlcmac.cpp
3 files changed, 47 insertions(+), 44 deletions(-)

Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, approved



diff --git a/src/csn1.cpp b/src/csn1.cpp
index 4f761c7..8e123fb 100644
--- a/src/csn1.cpp
+++ b/src/csn1.cpp
@@ -507,8 +507,10 @@
             pui8          = pui8DATA(data, pDescr->offset);
             *pui8         = i;
             LOGPC(DCSN1, LOGL_NOTICE, "Choice %s = %u | ", pDescr->sz , (unsigned)value);
-            bit_offset += no_of_bits;
-            remaining_bits_len -= no_of_bits;
+            if (!pChoice->keep_bits) {
+              bit_offset += no_of_bits;
+              remaining_bits_len -= no_of_bits;
+            }
 
             csnStreamInit(&arT, bit_offset, remaining_bits_len);
 	    Status = csnStreamDecoder(&arT, descr, vector, readIndex, data);
diff --git a/src/csn1.h b/src/csn1.h
index 39e6625..e927076 100644
--- a/src/csn1.h
+++ b/src/csn1.h
@@ -212,6 +212,7 @@
 {
   guint8     bits;
   guint8     value;
+  gboolean   keep_bits;
   CSN_DESCR descr;
 } CSN_ChoiceElement_t;
 
diff --git a/src/gsm_rlcmac.cpp b/src/gsm_rlcmac.cpp
index c1d3b97..ed7c745 100644
--- a/src/gsm_rlcmac.cpp
+++ b/src/gsm_rlcmac.cpp
@@ -387,9 +387,9 @@
 static const
 CSN_ChoiceElement_t IA_EGPRS_Choice[] =
 {
-  {2, 0x00, M_TYPE   (IA_EGPRS_t, u.IA_EGPRS_PUA, IA_EGPRS_00_t)},
-  {2, 0x01, CSN_ERROR(IA_EGPRS_t, "01 <IA_EGPRS>", CSN_ERROR_STREAM_NOT_SUPPORTED)},
-  {1, 0x01, CSN_ERROR(IA_EGPRS_t, "1 <IA_EGPRS>", CSN_ERROR_STREAM_NOT_SUPPORTED)}
+  {2, 0x00, 0, M_TYPE   (IA_EGPRS_t, u.IA_EGPRS_PUA, IA_EGPRS_00_t)},
+  {2, 0x01, 0, CSN_ERROR(IA_EGPRS_t, "01 <IA_EGPRS>", CSN_ERROR_STREAM_NOT_SUPPORTED)},
+  {1, 0x01, 0, CSN_ERROR(IA_EGPRS_t, "1 <IA_EGPRS>", CSN_ERROR_STREAM_NOT_SUPPORTED)}
 };
 
 /* Please observe the double usage of UnionType element.
@@ -526,10 +526,10 @@
 static const
 CSN_ChoiceElement_t PacketPollingID[] =
 {
-  {1, 0,    M_TYPE(PacketPollingID_t, u.Global_TFI, Global_TFI_t)},
-  {2, 0x02, M_UINT(PacketPollingID_t, u.TLLI, 32)},
-  {3, 0x06, M_UINT(PacketPollingID_t, u.TQI, 16)},
-/*{3, 0x07 , M_TYPE(PacketUplinkID_t, u.Packet_Request_Reference, Packet_Request_Reference_t)},*/
+  {1, 0,    0, M_TYPE(PacketPollingID_t, u.Global_TFI, Global_TFI_t)},
+  {2, 0x02, 0, M_UINT(PacketPollingID_t, u.TLLI, 32)},
+  {3, 0x06, 0, M_UINT(PacketPollingID_t, u.TQI, 16)},
+/*{3, 0x07 , 0, M_TYPE(PacketUplinkID_t, u.Packet_Request_Reference, Packet_Request_Reference_t)},*/
 };
 
 static const
@@ -605,9 +605,9 @@
 static const
 CSN_ChoiceElement_t SI13_PBCCH_Description_Channel[] =
 {/* this one is used in SI13*/
-  {2, 0x00 , M_NULL(PBCCH_Description_t, u.dummy, 0)},/*Default to BCCH carrier*/
-  {2, 0x01 , M_UINT(PBCCH_Description_t, u.ARFCN, 10)},
-  {1, 0x01 , M_UINT(PBCCH_Description_t, u.MAIO, 6)},
+  {2, 0x00, 0, M_NULL(PBCCH_Description_t, u.dummy, 0)},/*Default to BCCH carrier*/
+  {2, 0x01, 0, M_UINT(PBCCH_Description_t, u.ARFCN, 10)},
+  {1, 0x01, 0, M_UINT(PBCCH_Description_t, u.MAIO, 6)},
 };
 
 static const
@@ -895,12 +895,12 @@
 static const
 CSN_ChoiceElement_t MS_RA_capability_value_Choice[] =
 {
-  {4, AccTech_GSMP,     M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
-  {4, AccTech_GSME,     M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
-  {4, AccTech_GSM1800,  M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
-  {4, AccTech_GSM1900,  M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
-  {4, AccTech_GSM850,   M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
-  {4, AccTech_GSMOther, M_SERIALIZE (MS_RA_capability_value_t, u.Additional_access_technologies, 7, Additional_access_technologies_Dissector)}, /* Short Form */
+  {4, AccTech_GSMP,     0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
+  {4, AccTech_GSME,     0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
+  {4, AccTech_GSM1800,  0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
+  {4, AccTech_GSM1900,  0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
+  {4, AccTech_GSM850,   0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
+  {4, AccTech_GSMOther, 0, M_SERIALIZE (MS_RA_capability_value_t, u.Additional_access_technologies, 7, Additional_access_technologies_Dissector)}, /* Short Form */
 };
 
 static const
@@ -928,12 +928,12 @@
 static const
 CSN_ChoiceElement_t MultibandChoice[] =
 {
-  {3, 0x00, M_UINT(Multiband_t, u.A5_Bits, 4)},
-  {3, 0x05, M_TYPE(Multiband_t, u.ARC, ARC_t)},
-  {3, 0x06, M_TYPE(Multiband_t, u.ARC, ARC_t)},
-  {3, 0x01, M_TYPE(Multiband_t, u.ARC, ARC_t)},
-  {3, 0x02, M_TYPE(Multiband_t, u.ARC, ARC_t)},
-  {3, 0x04, M_TYPE(Multiband_t, u.ARC, ARC_t)},
+  {3, 0x00, 0, M_UINT(Multiband_t, u.A5_Bits, 4)},
+  {3, 0x05, 0, M_TYPE(Multiband_t, u.ARC, ARC_t)},
+  {3, 0x06, 0, M_TYPE(Multiband_t, u.ARC, ARC_t)},
+  {3, 0x01, 0, M_TYPE(Multiband_t, u.ARC, ARC_t)},
+  {3, 0x02, 0, M_TYPE(Multiband_t, u.ARC, ARC_t)},
+  {3, 0x04, 0, M_TYPE(Multiband_t, u.ARC, ARC_t)},
 };
 
 static const
@@ -1053,8 +1053,8 @@
 static const
 CSN_ChoiceElement_t PacketResourceRequestID[] =
 {
-  {1, 0,    M_TYPE(PacketResourceRequestID_t, u.Global_TFI, Global_TFI_t)},
-  {1, 0x01, M_UINT(PacketResourceRequestID_t, u.TLLI, 32)},
+  {1, 0,    0, M_TYPE(PacketResourceRequestID_t, u.Global_TFI, Global_TFI_t)},
+  {1, 0x01, 0, M_UINT(PacketResourceRequestID_t, u.TLLI, 32)},
 };
 
 static const
@@ -1732,10 +1732,10 @@
 static const
 CSN_ChoiceElement_t PacketUplinkID[] =
 {
-  {1, 0 ,    M_TYPE(PacketUplinkID_t, u.Global_TFI, Global_TFI_t)},
-  {2, 0x02 , M_UINT(PacketUplinkID_t, u.TLLI, 32)},
-  {3, 0x06 , M_UINT(PacketUplinkID_t, u.TQI, 16)},
-  {3, 0x07 , M_TYPE(PacketUplinkID_t, u.Packet_Request_Reference, Packet_Request_Reference_t)},
+  {1, 0,    0, M_TYPE(PacketUplinkID_t, u.Global_TFI, Global_TFI_t)},
+  {2, 0x02, 0, M_UINT(PacketUplinkID_t, u.TLLI, 32)},
+  {3, 0x06, 0, M_UINT(PacketUplinkID_t, u.TQI, 16)},
+  {3, 0x07, 0, M_TYPE(PacketUplinkID_t, u.Packet_Request_Reference, Packet_Request_Reference_t)},
 };
 
 static const
@@ -1866,8 +1866,8 @@
 static const
 CSN_ChoiceElement_t PacketDownlinkID[] =
 {
-  {1,    0, M_TYPE(PacketDownlinkID_t, u.Global_TFI, Global_TFI_t)},
-  {2, 0x02, M_UINT(PacketDownlinkID_t, u.TLLI, 32)},
+  {1,    0, 0, M_TYPE(PacketDownlinkID_t, u.Global_TFI, Global_TFI_t)},
+  {2, 0x02, 0, M_UINT(PacketDownlinkID_t, u.TLLI, 32)},
 };
 
 static const
@@ -2106,9 +2106,9 @@
 static const
 CSN_ChoiceElement_t PacketPowerControlTimingAdvanceID[] =
 {
-  {1, 0,    M_TYPE(PacketPowerControlTimingAdvanceID_t, u.Global_TFI, Global_TFI_t)},
-  {3, 0x06, M_UINT(PacketPowerControlTimingAdvanceID_t, u.TQI, 16)},
-  {3, 0x07, M_TYPE(PacketPowerControlTimingAdvanceID_t, u.Packet_Request_Reference, Packet_Request_Reference_t)},
+  {1, 0,    0, M_TYPE(PacketPowerControlTimingAdvanceID_t, u.Global_TFI, Global_TFI_t)},
+  {3, 0x06, 0, M_UINT(PacketPowerControlTimingAdvanceID_t, u.TQI, 16)},
+  {3, 0x07, 0, M_TYPE(PacketPowerControlTimingAdvanceID_t, u.Packet_Request_Reference, Packet_Request_Reference_t)},
 };
 
 static const
@@ -2388,9 +2388,9 @@
 static const
 CSN_ChoiceElement_t RejectID[] =
 {
-  {1, 0x00, M_UINT(RejectID_t, u.TLLI, 32)},
-  {2, 0x02, M_TYPE(RejectID_t, u.Packet_Request_Reference, Packet_Request_Reference_t)},
-  {2, 0x03, M_TYPE(RejectID_t, u.Global_TFI, Global_TFI_t)},
+  {1, 0x00, 0, M_UINT(RejectID_t, u.TLLI, 32)},
+  {2, 0x02, 0, M_TYPE(RejectID_t, u.Packet_Request_Reference, Packet_Request_Reference_t)},
+  {2, 0x03, 0, M_TYPE(RejectID_t, u.Global_TFI, Global_TFI_t)},
 };
 
 static const
@@ -2421,8 +2421,8 @@
 static const
 CSN_ChoiceElement_t PacketCellChangeOrderID[] =
 {
-  {1, 0,    M_TYPE(PacketCellChangeOrderID_t, u.Global_TFI, Global_TFI_t)},
-  {2, 0x02, M_UINT(PacketCellChangeOrderID_t, u.TLLI, 32)},
+  {1, 0,    0, M_TYPE(PacketCellChangeOrderID_t, u.Global_TFI, Global_TFI_t)},
+  {2, 0x02, 0, M_UINT(PacketCellChangeOrderID_t, u.TLLI, 32)},
 };
 /* PacketCellChangeOrderID_t; */
 
@@ -3819,8 +3819,8 @@
 static const
 CSN_ChoiceElement_t PNCDContainer[] =
 {
-  {1, 0x0, M_TYPE(PNCDContainer_t, u.PNCD_Container_Without_ID, PNCD_Container_Without_ID_t)},
-  {1, 0x1, M_TYPE(PNCDContainer_t, u.PNCD_Container_With_ID, PNCD_Container_With_ID_t)},
+  {1, 0x0, 0, M_TYPE(PNCDContainer_t, u.PNCD_Container_Without_ID, PNCD_Container_Without_ID_t)},
+  {1, 0x1, 0, M_TYPE(PNCDContainer_t, u.PNCD_Container_With_ID, PNCD_Container_With_ID_t)},
 };
 
 static const
@@ -4124,8 +4124,8 @@
 static const
 CSN_ChoiceElement_t AdditionalMsRadAccessCapID[] =
 {
-  {1, 0,    M_TYPE(AdditionalMsRadAccessCapID_t, u.Global_TFI, Global_TFI_t)},
-  {1, 0x01, M_UINT(AdditionalMsRadAccessCapID_t, u.TLLI, 32)},
+  {1, 0,    0, M_TYPE(AdditionalMsRadAccessCapID_t, u.Global_TFI, Global_TFI_t)},
+  {1, 0x01, 0, M_UINT(AdditionalMsRadAccessCapID_t, u.TLLI, 32)},
 };
 
 static const

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/16998
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Change-Id: I3a5a95d5f918b8f17a2400a6d0c4d855ecacea7e
Gerrit-Change-Number: 16998
Gerrit-PatchSet: 2
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge at osmocom.org>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200128/056f1649/attachment.htm>


More information about the gerrit-log mailing list