pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/libosmo-gprs/+/33947 )
Change subject: llc: Introduce function to log XID fields and use upon rx ......................................................................
llc: Introduce function to log XID fields and use upon rx
Change-Id: I8c6b07305c0bcecb4e1681967884a3e62c813592 --- M include/osmocom/gprs/llc/llc_private.h M src/llc/llc.c M src/llc/llc_xid.c 3 files changed, 43 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmo-gprs refs/changes/47/33947/1
diff --git a/include/osmocom/gprs/llc/llc_private.h b/include/osmocom/gprs/llc/llc_private.h index b2b9047..e5c197e 100644 --- a/include/osmocom/gprs/llc/llc_private.h +++ b/include/osmocom/gprs/llc/llc_private.h @@ -345,6 +345,8 @@ struct gprs_llc_xid_field *gprs_llc_xid_deepcopy(void *ctx, const struct gprs_llc_xid_field *src_xid, size_t src_xid_len); +void gprs_llc_dump_xid_fields(const struct gprs_llc_xid_field *xid_fields, + size_t xid_fields_len, unsigned int logl);
/* llc_pdu.c: */ int gprs_llc_pdu_decode(struct gprs_llc_pdu_decoded *pdu, diff --git a/src/llc/llc.c b/src/llc/llc.c index 93a11ec..9e16d23 100644 --- a/src/llc/llc.c +++ b/src/llc/llc.c @@ -569,6 +569,8 @@ * when a MS submits values which defer from * the default! */
+ gprs_llc_dump_xid_fields(xid_fields, xid_fields_len, LOGL_DEBUG); + /* Store last received XID-Ind from peer: */ lle->rx_xid = gprs_llc_xid_deepcopy(lle->llme, xid_fields, xid_fields_len); OSMO_ASSERT(lle->rx_xid); diff --git a/src/llc/llc_xid.c b/src/llc/llc_xid.c index 9280416..c46083d 100644 --- a/src/llc/llc_xid.c +++ b/src/llc/llc_xid.c @@ -320,3 +320,33 @@ } return dst_xid; } + +/* Dump a list with XID fields (Debug) */ +void gprs_llc_dump_xid_fields(const struct gprs_llc_xid_field *xid_fields, + size_t xid_fields_len, unsigned int logl) +{ + unsigned int i; + + OSMO_ASSERT(xid_fields); + + for (i = 0; i < xid_fields_len; i++) { + const struct gprs_llc_xid_field *xid_field = &xid_fields[i]; + const uint8_t len = gprs_llc_xid_field_get_len(xid_field); + if (len > 0) { + if (gprs_llc_xid_type_is_variable_len(xid_field->type)) { + OSMO_ASSERT(xid_field->var.val); + LOGLLC(logl, "XID: type %s, data_len=%d, data=%s\n", + gprs_llc_xid_type_name(xid_field->type), + xid_field->var.val_len, + osmo_hexdump_nospc(xid_field->var.val, xid_field->var.val_len)); + } else { + LOGLLC(logl, "XID: type %s, val_len=%d, val=%u\n", + gprs_llc_xid_type_name(xid_field->type), + len, xid_field->val); + } + } else { + LOGLLC(logl, "XID: type %s, data_len=0\n", + gprs_llc_xid_type_name(xid_field->type)); + } + } +}