<p>Max has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/12492">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">LCLS: add string dump helper<br><br>Change-Id: Ic3609224c8f3282d667e75f68bc20327e36eb9e6<br>---<br>M include/osmocom/gsm/gsm0808_utils.h<br>M include/osmocom/gsm/gsm29205.h<br>M src/gsm/gsm0808_utils.c<br>M src/gsm/gsm29205.c<br>M src/gsm/libosmogsm.map<br>M tests/gsm0808/gsm0808_test.c<br>M tests/gsm0808/gsm0808_test.ok<br>7 files changed, 37 insertions(+), 2 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/92/12492/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/gsm/gsm0808_utils.h b/include/osmocom/gsm/gsm0808_utils.h</span><br><span>index 4a2233e..c8924f2 100644</span><br><span>--- a/include/osmocom/gsm/gsm0808_utils.h</span><br><span>+++ b/include/osmocom/gsm/gsm0808_utils.h</span><br><span>@@ -241,5 +241,6 @@</span><br><span> }</span><br><span> </span><br><span> const char *gsm0808_channel_type_name(const struct gsm0808_channel_type *ct);</span><br><span style="color: hsl(120, 100%, 40%);">+char *osmo_lcls_dump(const struct osmo_lcls *lcls, bool print_gcr);</span><br><span> </span><br><span> /*! @} */</span><br><span>diff --git a/include/osmocom/gsm/gsm29205.h b/include/osmocom/gsm/gsm29205.h</span><br><span>index 0c3c153..3c47edf 100644</span><br><span>--- a/include/osmocom/gsm/gsm29205.h</span><br><span>+++ b/include/osmocom/gsm/gsm29205.h</span><br><span>@@ -39,3 +39,4 @@</span><br><span> </span><br><span> uint8_t osmo_enc_gcr(struct msgb *msg, const struct osmo_gcr_parsed *g);</span><br><span> int osmo_dec_gcr(struct osmo_gcr_parsed *gcr, const uint8_t *elem, uint8_t len);</span><br><span style="color: hsl(120, 100%, 40%);">+char *osmo_gcr_dump(const struct osmo_gcr_parsed *gcr);</span><br><span>diff --git a/src/gsm/gsm0808_utils.c b/src/gsm/gsm0808_utils.c</span><br><span>index 2a458c3..272695c 100644</span><br><span>--- a/src/gsm/gsm0808_utils.c</span><br><span>+++ b/src/gsm/gsm0808_utils.c</span><br><span>@@ -28,6 +28,7 @@</span><br><span> #include <errno.h></span><br><span> #include <osmocom/gsm/protocol/gsm_08_08.h></span><br><span> #include <osmocom/gsm/gsm48.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/gsm/gsm0808.h></span><br><span> #include <osmocom/gsm/gsm0808_utils.h></span><br><span> </span><br><span> #define IP_V4_ADDR_LEN 4</span><br><span>@@ -592,6 +593,21 @@</span><br><span>     return ret;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Dump LCLS parameters struct into string for printing.</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] lcls pointer to the struct to print</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \returns string representation of LCLS or NULL on error */</span><br><span style="color: hsl(120, 100%, 40%);">+char *osmo_lcls_dump(const struct osmo_lcls *lcls, bool print_gcr)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+    char *s = talloc_asprintf(lcls, "LCLS Config: %s, Control: %s, Correlation-Needed: %u",</span><br><span style="color: hsl(120, 100%, 40%);">+                            gsm0808_lcls_config_name(lcls->config),</span><br><span style="color: hsl(120, 100%, 40%);">+                            gsm0808_lcls_control_name(lcls->control),</span><br><span style="color: hsl(120, 100%, 40%);">+                          lcls->corr_needed);</span><br><span style="color: hsl(120, 100%, 40%);">+ if (s && print_gcr)</span><br><span style="color: hsl(120, 100%, 40%);">+           return talloc_asprintf_append(s, ", %s", osmo_gcr_dump(lcls->gcr));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    return s;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /*! Encode TS 08.08 Encryption Information IE</span><br><span>  *  \param[out] msg Message Buffer to which IE is to be appended</span><br><span>  *  \param[in] ei Encryption Information to be encoded</span><br><span>diff --git a/src/gsm/gsm29205.c b/src/gsm/gsm29205.c</span><br><span>index 0ef29b7..c764c93 100644</span><br><span>--- a/src/gsm/gsm29205.c</span><br><span>+++ b/src/gsm/gsm29205.c</span><br><span>@@ -91,3 +91,15 @@</span><br><span> </span><br><span>  return parsed + 5;</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/*! Dump GCR  struct into string for printing.</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] gcr pointer to the struct to print</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \returns string representation of GCR or NULL on error */</span><br><span style="color: hsl(120, 100%, 40%);">+char *osmo_gcr_dump(const struct osmo_gcr_parsed *gcr)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+        char *s = talloc_asprintf(gcr, "GCR NetID 0x%s, ", osmo_hexdump_nospc(gcr->net, gcr->net_len));</span><br><span style="color: hsl(120, 100%, 40%);">+       if (!s)</span><br><span style="color: hsl(120, 100%, 40%);">+               return NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+  /* osmo_hexdump() uses static buffers so we can't call it twice withing the same parameter list */</span><br><span style="color: hsl(120, 100%, 40%);">+        return talloc_asprintf_append(s, "Node 0x%x, CallRefID 0x%s", gcr->node, osmo_hexdump_nospc(gcr->cr, 5));</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span>diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map</span><br><span>index bb97878..fd21f30 100644</span><br><span>--- a/src/gsm/libosmogsm.map</span><br><span>+++ b/src/gsm/libosmogsm.map</span><br><span>@@ -240,6 +240,8 @@</span><br><span> </span><br><span> osmo_enc_gcr;</span><br><span> osmo_dec_gcr;</span><br><span style="color: hsl(120, 100%, 40%);">+osmo_gcr_dump;</span><br><span style="color: hsl(120, 100%, 40%);">+osmo_lcls_dump;</span><br><span> </span><br><span> gsm0858_rsl_ul_meas_enc;</span><br><span> </span><br><span>diff --git a/tests/gsm0808/gsm0808_test.c b/tests/gsm0808/gsm0808_test.c</span><br><span>index 40e2b87..72b501c 100644</span><br><span>--- a/tests/gsm0808/gsm0808_test.c</span><br><span>+++ b/tests/gsm0808/gsm0808_test.c</span><br><span>@@ -740,7 +740,8 @@</span><br><span>                abort();</span><br><span>     }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   printf("\tdecoded %d bytes: %s\n", rc, rc == len ? "OK" : "FAIL");</span><br><span style="color: hsl(120, 100%, 40%);">+      printf("\tdecoded %d bytes: %s:\n%s\n", rc, rc == len ? "OK" : "FAIL", osmo_lcls_dump(lcls_out, false));</span><br><span style="color: hsl(120, 100%, 40%);">+        printf("\t%s\n", osmo_gcr_dump(lcls_out->gcr));</span><br><span>         msgb_free(msg);</span><br><span> }</span><br><span> </span><br><span>diff --git a/tests/gsm0808/gsm0808_test.ok b/tests/gsm0808/gsm0808_test.ok</span><br><span>index 8e6d262..806e625 100644</span><br><span>--- a/tests/gsm0808/gsm0808_test.ok</span><br><span>+++ b/tests/gsm0808/gsm0808_test.ok</span><br><span>@@ -25,7 +25,9 @@</span><br><span> Testing prepend DTAP</span><br><span> Testing Global Call Reference IE encoder...</span><br><span>         15 bytes added: OK</span><br><span style="color: hsl(0, 100%, 40%);">-      decoded 15 bytes: OK</span><br><span style="color: hsl(120, 100%, 40%);">+  decoded 15 bytes: OK:</span><br><span style="color: hsl(120, 100%, 40%);">+LCLS Config: Not available, Control: Not available, Correlation-Needed: 1</span><br><span style="color: hsl(120, 100%, 40%);">+      GCR NetID 0xf1f2f3, Node 0xdead, CallRefID 0x4142434445</span><br><span> test_gsm0808_enc_dec_cell_id_list_lac: encoded: 1a 07 05 01 24 ab cd 56 78 (rc = 9)</span><br><span> ------- test_cell_id_list_add</span><br><span>      cell_id_list == CGI[0]:{}</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/12492">change 12492</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/12492"/><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-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: Ic3609224c8f3282d667e75f68bc20327e36eb9e6 </div>
<div style="display:none"> Gerrit-Change-Number: 12492 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Max <msuraev@sysmocom.de> </div>