pespin submitted this change.
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(-)
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;
}
To view, visit change 30736. To unsubscribe, or for help writing mail filters, visit settings.