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;
 }

--
To view, visit https://gerrit.osmocom.org/c/libosmo-gprs/+/30736
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: libosmo-gprs
Gerrit-Branch: master
Gerrit-Change-Id: I8ad3267f890a21b6c935b36b256b00bd0a4da8d6
Gerrit-Change-Number: 30736
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <[email protected]>
Gerrit-CC: pespin <[email protected]>
Gerrit-MessageType: newchange

Reply via email to