fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/libosmo-gprs/+/30736 )
Change subject: llc: rework logging, add LOGLLC macro ......................................................................
llc: rework logging, add LOGLLC macro
Change-Id: I8ad3267f890a21b6c935b36b256b00bd0a4da8d6 Related: OS#5502 --- M include/osmocom/gprs/llc/llc.h M src/llc/llc_pdu.c M src/llc/llc_xid.c M src/llc/misc.c 4 files changed, 46 insertions(+), 36 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmo-gprs refs/changes/36/30736/1
diff --git a/include/osmocom/gprs/llc/llc.h b/include/osmocom/gprs/llc/llc.h index 0f0ab83..8ae403a 100644 --- a/include/osmocom/gprs/llc/llc.h +++ b/include/osmocom/gprs/llc/llc.h @@ -184,4 +184,14 @@ const struct osmo_gprs_llc_xid_field *fields, unsigned int num_fields);
-void osmo_gprs_llc_set_log_cat(int cat); +enum osmo_gprs_llc_log_cat { + OSMO_GPRS_LLC_LOGC_LLC, + _OSMO_GPRS_LLC_LOGC_MAX, +}; + +void osmo_gprs_llc_set_log_cat(enum osmo_gprs_llc_log_cat logc, int logc_num); + +/* TODO: move to llc_private.h */ +extern int g_llc_log_cat[_OSMO_GPRS_LLC_LOGC_MAX]; + +#define LOGLLC(lvl, fmt, args...) LOGP(g_llc_log_cat[OSMO_GPRS_LLC_LOGC_LLC], lvl, fmt, ## args) diff --git a/src/llc/llc_pdu.c b/src/llc/llc_pdu.c index 6f0a17f..c031098 100644 --- a/src/llc/llc_pdu.c +++ b/src/llc/llc_pdu.c @@ -253,8 +253,7 @@ ctrl[0] |= GPRS_LLC_U_XID; break; default: - LOGP(g_log_cat, LOGL_ERROR, - "Unknown UI func=0x%02x\n", pdu->func); + LOGLLC(LOGL_ERROR, "Unknown UI func=0x%02x\n", pdu->func); return -EINVAL; } break; @@ -268,8 +267,7 @@ /* 5.5a Message Authentication Code (MAC) field */ if (pdu->flags & OSMO_GPRS_LLC_PDU_F_MAC_PRES) { /* TODO: calculate MAC (see 3GPP TS 43.020) */ - LOGP(g_log_cat, LOGL_ERROR, - "Message Authentication Code (MAC) is not implemented\n"); + LOGLLC(LOGL_ERROR, "Message Authentication Code (MAC) is not implemented\n"); return -ENOTSUP; }
@@ -295,7 +293,7 @@ #define check_len(len, text) \ do { \ if (data_len < (len)) { \ - LOGP(g_log_cat, LOGL_ERROR, "Failed to parse LLC PDU: %s\n", text); \ + LOGLLC(LOGL_ERROR, "Failed to parse LLC PDU: %s\n", text); \ return -EINVAL; \ } \ } while (0) @@ -316,7 +314,7 @@
/* 6.2.1 Protocol Discriminator bit (PD): shall be 0 */ if (*addr & 0x80) { - LOGP(g_log_cat, LOGL_ERROR, "Protocol Discriminator shall be 0\n"); + LOGLLC(LOGL_ERROR, "Protocol Discriminator shall be 0\n"); return -EINVAL; }
@@ -336,7 +334,7 @@ case 0x0c: case 0x0d: case 0x0f: - LOGP(g_log_cat, LOGL_ERROR, "Unknown SAPI=%u\n", pdu->sapi); + LOGLLC(LOGL_ERROR, "Unknown SAPI=%u\n", pdu->sapi); return -EINVAL; }
@@ -485,7 +483,7 @@ pdu->data_len = data_len; break; default: - LOGP(g_log_cat, LOGL_ERROR, "Unknown U func=0x%02x\n", ctrl[0] & 0x0f); + LOGLLC(LOGL_ERROR, "Unknown U func=0x%02x\n", ctrl[0] & 0x0f); return -ENOTSUP; } } diff --git a/src/llc/llc_xid.c b/src/llc/llc_xid.c index a787e1a..1aab3a5 100644 --- a/src/llc/llc_xid.c +++ b/src/llc/llc_xid.c @@ -29,8 +29,6 @@
#include <osmocom/gprs/llc/llc.h>
-extern int g_log_cat; - const struct value_string osmo_gprs_llc_xid_type_names[] = { { OSMO_GPRS_LLC_XID_T_VERSION, "LLC-Version" }, { OSMO_GPRS_LLC_XID_T_IOV_UI, "IOV-UI" }, @@ -80,8 +78,8 @@ bool osmo_gprs_llc_xid_field_is_valid(const struct osmo_gprs_llc_xid_field *field) { if (field->type >= ARRAY_SIZE(gprs_llc_xid_desc)) { - LOGP(g_log_cat, LOGL_ERROR, - "Unknown XID field type 0x%02x\n", field->type); + LOGLLC(LOGL_ERROR, + "Unknown XID field type 0x%02x\n", field->type); return false; }
@@ -93,18 +91,18 @@ return true;
if (field->val < gprs_llc_xid_desc[field->type].min) { - LOGP(g_log_cat, LOGL_ERROR, - "XID field %s value=%u < min=%u\n", - osmo_gprs_llc_xid_type_name(field->type), - field->val, gprs_llc_xid_desc[field->type].min); + LOGLLC(LOGL_ERROR, + "XID field %s value=%u < min=%u\n", + osmo_gprs_llc_xid_type_name(field->type), + field->val, gprs_llc_xid_desc[field->type].min); return false; }
if (field->val > gprs_llc_xid_desc[field->type].max) { - LOGP(g_log_cat, LOGL_ERROR, - "XID field %s value=%u > max=%u\n", - osmo_gprs_llc_xid_type_name(field->type), - field->val, gprs_llc_xid_desc[field->type].max); + LOGLLC(LOGL_ERROR, + "XID field %s value=%u > max=%u\n", + osmo_gprs_llc_xid_type_name(field->type), + field->val, gprs_llc_xid_desc[field->type].max); return false; }
@@ -177,7 +175,7 @@ #define check_len(len, text) \ do { \ if (data_len < (len)) { \ - LOGP(g_log_cat, LOGL_ERROR, "Failed to parse XID: %s\n", text); \ + LOGLLC(LOGL_ERROR, "Failed to parse XID: %s\n", text); \ return -EINVAL; \ } \ } while (0) @@ -187,8 +185,8 @@ uint8_t len;
if (num_fields > max_fields) { - LOGP(g_log_cat, LOGL_ERROR, - "Failed to parse XID: too many fields\n"); + LOGLLC(LOGL_ERROR, + "Failed to parse XID: too many fields\n"); return -ENOMEM; }
@@ -198,8 +196,8 @@ /* XID field type */ field->type = (*ptr >> 2) & 0x1f; if (field->type >= ARRAY_SIZE(gprs_llc_xid_desc)) { - LOGP(g_log_cat, LOGL_ERROR, - "Failed to parse XID: unknown field type 0x%02x\n", field->type); + LOGLLC(LOGL_ERROR, + "Failed to parse XID: unknown field type 0x%02x\n", field->type); return -EINVAL; }
@@ -222,10 +220,10 @@ field->var.val_len = len; } else { if (len != gprs_llc_xid_desc[field->type].len) { - LOGP(g_log_cat, LOGL_NOTICE, - "XID field %s has unusual length=%u (expected %u)\n", - osmo_gprs_llc_xid_type_name(field->type), - len, gprs_llc_xid_desc[field->type].len); + LOGLLC(LOGL_NOTICE, + "XID field %s has unusual length=%u (expected %u)\n", + osmo_gprs_llc_xid_type_name(field->type), + len, gprs_llc_xid_desc[field->type].len); }
switch (len) { @@ -242,9 +240,9 @@ field->val = osmo_load32be(ptr); break; default: - LOGP(g_log_cat, LOGL_ERROR, - "Failed to parse XID: unsupported field (%s) length=%u\n", - osmo_gprs_llc_xid_type_name(field->type), len); + LOGLLC(LOGL_ERROR, + "Failed to parse XID: unsupported field (%s) length=%u\n", + osmo_gprs_llc_xid_type_name(field->type), len); return -EINVAL; }
diff --git a/src/llc/misc.c b/src/llc/misc.c index 06e2a6c..defe13d 100644 --- a/src/llc/misc.c +++ b/src/llc/misc.c @@ -16,10 +16,14 @@ */
#include <osmocom/core/logging.h> +#include <osmocom/gprs/llc/llc.h>
-int g_log_cat = DLGLOBAL; +int g_llc_log_cat[_OSMO_GPRS_LLC_LOGC_MAX] = { + [0 ... _OSMO_GPRS_LLC_LOGC_MAX - 1] = DLGLOBAL +};
-void osmo_gprs_llc_set_log_cat(int cat) +void osmo_gprs_llc_set_log_cat(enum osmo_gprs_llc_log_cat logc, int logc_num) { - g_log_cat = cat; + OSMO_ASSERT(logc < _OSMO_GPRS_LLC_LOGC_MAX); + g_llc_log_cat[logc] = logc_num; }