lynxis lazus has uploaded this change for review.

View Change

vlr: add a logging layer

To prepare the split off into a separate library,
the logging can't use log category from a define.
Use the same strategy as all the other osmo libraries and
use a global array which is set on initialisation to define the logging
categories.

Change-Id: I6d87b38d6d7d704c7c7b2c90ad12187e4b953b8b
---
M include/osmocom/vlr/vlr.h
M src/libmsc/msc_net_init.c
M src/libvlr/vlr.c
M src/libvlr/vlr_access_req_fsm.c
M src/libvlr/vlr_access_req_fsm.h
M src/libvlr/vlr_auth_fsm.c
M src/libvlr/vlr_lu_fsm.c
M src/libvlr/vlr_lu_fsm.h
M src/libvlr/vlr_sgs.c
M src/libvlr/vlr_sgs_fsm.c
M src/libvlr/vlr_sgs_fsm.h
11 files changed, 106 insertions(+), 43 deletions(-)

git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/10/38410/1
diff --git a/include/osmocom/vlr/vlr.h b/include/osmocom/vlr/vlr.h
index 6d5c71c..1a2ef9e 100644
--- a/include/osmocom/vlr/vlr.h
+++ b/include/osmocom/vlr/vlr.h
@@ -17,12 +17,6 @@
#include <osmocom/gsupclient/gsup_client.h>
#include <osmocom/vlr/vlr_sgs.h>

-#define LOGGSUPP(level, gsup, fmt, args...) \
- LOGP(DVLR, level, "GSUP(%s) " fmt, (gsup)->imsi, ## args)
-
-#define LOGVSUBP(level, vsub, fmt, args...) \
- LOGP(DVLR, level, "SUBSCR(%s) " fmt, vlr_subscr_name(vsub), ## args)
-
struct log_target;
struct osmo_mobile_identity;

@@ -498,3 +492,24 @@
enum gsm48_reject_value vlr_gmm_cause_to_reject_cause_domain(enum gsm48_gmm_cause gmm_cause, bool is_cs);
enum gsm48_reject_value vlr_reject_causes_cs(enum gsm48_reject_value reject_cause);
enum gsm48_reject_value vlr_reject_causes_ps(enum gsm48_reject_value reject_cause);
+
+/* logging */
+enum osmo_vlr_cat {
+ OSMO_VLR_LOGC_VLR,
+ OSMO_VLR_LOGC_SGS,
+ _OSMO_VLR_LOGC_MAX,
+};
+
+void osmo_vlr_set_log_cat(enum osmo_vlr_cat logc, int logc_num);
+
+extern int g_vlr_log_cat[_OSMO_VLR_LOGC_MAX];
+
+#define LOGVLR(lvl, fmt, args...) LOGP(g_vlr_log_cat[OSMO_VLR_LOGC_VLR], lvl, fmt, ## args)
+#define LOGSGS(lvl, fmt, args...) LOGP(g_vlr_log_cat[OSMO_VLR_LOGC_SGS], lvl, fmt, ## args)
+
+#define LOGGSUPP(level, gsup, fmt, args...) \
+ LOGVLR(level, "GSUP(%s) " fmt, (gsup)->imsi, ## args)
+
+#define LOGVSUBP(level, vsub, fmt, args...) \
+ LOGVLR(level, "SUBSCR(%s) " fmt, vlr_subscr_name(vsub), ## args)
+
diff --git a/src/libmsc/msc_net_init.c b/src/libmsc/msc_net_init.c
index ad0c19a..21f68cf 100644
--- a/src/libmsc/msc_net_init.c
+++ b/src/libmsc/msc_net_init.c
@@ -28,6 +28,7 @@

#include <osmocom/msc/gsm_data.h>
#include <osmocom/vlr/vlr.h>
+#include <osmocom/msc/debug.h>
#include <osmocom/msc/gsup_client_mux.h>
#include <osmocom/msc/gsm_04_11_gsup.h>
#include <osmocom/msc/gsm_09_11.h>
@@ -107,6 +108,8 @@
/* Allocate net->vlr so that the VTY may configure the VLR's data structures */
int msc_vlr_alloc(struct gsm_network *net)
{
+ osmo_vlr_set_log_cat(OSMO_VLR_LOGC_VLR, DVLR);
+ osmo_vlr_set_log_cat(OSMO_VLR_LOGC_SGS, DSGS);
net->vlr = vlr_alloc(net, &msc_vlr_ops);
if (!net->vlr)
return -ENOMEM;
diff --git a/src/libvlr/vlr.c b/src/libvlr/vlr.c
index 81429bb..3aa5a5e 100644
--- a/src/libvlr/vlr.c
+++ b/src/libvlr/vlr.c
@@ -454,7 +454,7 @@
{
llist_del(&vsub->list);
vlr_stat_item_dec(vsub->vlr, VLR_STAT_SUBSCRIBER_COUNT);
- DEBUGP(DVLR, "freeing VLR subscr %s (max total use count was %d)\n", vlr_subscr_name(vsub),
+ LOGVLR(LOGL_DEBUG, "freeing VLR subscr %s (max total use count was %d)\n", vlr_subscr_name(vsub),
vsub->max_total_use_count);

/* Make sure SGs timer Ts5 is removed */
@@ -478,7 +478,7 @@
for (tried = 0; tried < 100; tried++) {
rc = osmo_get_rand_id((uint8_t *) &tmsi, sizeof(tmsi));
if (rc < 0) {
- LOGP(DVLR, LOGL_ERROR, "osmo_get_rand_id() failed: %s\n", strerror(-rc));
+ LOGVLR(LOGL_ERROR, "osmo_get_rand_id() failed: %s\n", strerror(-rc));
return rc;
}

@@ -486,7 +486,7 @@
int16_t nri_v;
osmo_tmsi_nri_v_limit_by_ranges(&tmsi, vlr->cfg.nri_ranges, vlr->cfg.nri_bitlen);
osmo_tmsi_nri_v_get(&nri_v, tmsi, vlr->cfg.nri_bitlen);
- LOGP(DVLR, LOGL_DEBUG, "New NRI from range [%s] = 0x%x --> TMSI 0x%08x\n",
+ LOGVLR(LOGL_DEBUG, "New NRI from range [%s] = 0x%x --> TMSI 0x%08x\n",
osmo_nri_ranges_to_str_c(OTC_SELECT, vlr->cfg.nri_ranges), nri_v, tmsi);
}

@@ -515,7 +515,7 @@
return 0;
}

- LOGP(DVLR, LOGL_ERROR, "subscr %s: unable to generate valid TMSI"
+ LOGVLR(LOGL_ERROR, "subscr %s: unable to generate valid TMSI"
" after %d tries\n", vlr_subscr_name(vsub), tried);
return -1;
}
@@ -544,7 +544,7 @@
return NULL;
vlr_subscr_get_src(vsub, use, file, line);
vlr_subscr_set_imsi(vsub, imsi);
- LOGP(DVLR, LOGL_INFO, "New subscr, IMSI: %s\n", vsub->imsi);
+ LOGVLR(LOGL_INFO, "New subscr, IMSI: %s\n", vsub->imsi);
if (created)
*created = true;
return vsub;
@@ -574,7 +574,7 @@
return NULL;
vlr_subscr_get_src(vsub, use, file, line);
vsub->tmsi = tmsi;
- LOGP(DVLR, LOGL_INFO, "New subscr, TMSI: 0x%08x\n", vsub->tmsi);
+ LOGVLR(LOGL_INFO, "New subscr, TMSI: 0x%08x\n", vsub->tmsi);
if (created)
*created = true;
return vsub;
@@ -585,7 +585,7 @@
struct vlr_instance *vlr = exists->vlr;
int i;
int j;
- LOGP(DVLR, LOGL_NOTICE,
+ LOGVLR(LOGL_NOTICE,
"There is an existing subscriber for IMSI %s used by %s, replacing with new VLR subscr: %s used by %s\n",
exists->imsi, osmo_use_count_to_str_c(OTC_SELECT, &exists->use_count),
vlr_subscr_name(vsub),
@@ -638,13 +638,13 @@

/* Set the IMSI on the new subscriber, here. */
if (OSMO_STRLCPY_ARRAY(vsub->imsi, imsi) >= sizeof(vsub->imsi)) {
- LOGP(DVLR, LOGL_NOTICE, "IMSI was truncated: full IMSI=%s, truncated IMSI=%s\n",
+ LOGVLR(LOGL_NOTICE, "IMSI was truncated: full IMSI=%s, truncated IMSI=%s\n",
imsi, vsub->imsi);
/* XXX Set truncated IMSI anyway, we currently cannot return an error from here. */
}

vsub->id = atoll(vsub->imsi);
- DEBUGP(DVLR, "set IMSI on subscriber; IMSI=%s id=%llu\n",
+ LOGVLR(LOGL_DEBUG, "set IMSI on subscriber; IMSI=%s id=%llu\n",
vsub->imsi, vsub->id);
}

@@ -653,7 +653,7 @@
if (!vsub)
return;
OSMO_STRLCPY_ARRAY(vsub->imei, imei);
- DEBUGP(DVLR, "set IMEI on subscriber; IMSI=%s IMEI=%s\n",
+ LOGVLR(LOGL_DEBUG, "set IMEI on subscriber; IMSI=%s IMEI=%s\n",
vsub->imsi, vsub->imei);
}

@@ -662,7 +662,7 @@
if (!vsub)
return;
OSMO_STRLCPY_ARRAY(vsub->imeisv, imeisv);
- DEBUGP(DVLR, "set IMEISV on subscriber; IMSI=%s IMEISV=%s\n",
+ LOGVLR(LOGL_DEBUG, "set IMEISV on subscriber; IMSI=%s IMEISV=%s\n",
vsub->imsi, vsub->imeisv);

/* Copy IMEISV to IMEI (additional SV digits get cut off) */
@@ -675,7 +675,7 @@
if (!vsub)
return;
OSMO_STRLCPY_ARRAY(vsub->msisdn, msisdn);
- DEBUGP(DVLR, "set MSISDN on subscriber; IMSI=%s MSISDN=%s\n",
+ LOGVLR(LOGL_DEBUG, "set MSISDN on subscriber; IMSI=%s MSISDN=%s\n",
vsub->imsi, vsub->msisdn);
}

@@ -690,7 +690,7 @@
} else {
vsub->sgs.last_eutran_plmn_present = false;
}
- DEBUGP(DVLR, "set Last E-UTRAN PLMN ID on subscriber: %s\n",
+ LOGVLR(LOGL_DEBUG, "set Last E-UTRAN PLMN ID on subscriber: %s\n",
vsub->sgs.last_eutran_plmn_present ?
osmo_plmn_name(&vsub->sgs.last_eutran_plmn) :
"(none)");
@@ -723,7 +723,7 @@
int vlr_subscr_changed(struct vlr_subscr *vsub)
{
/* FIXME */
- LOGP(DVLR, LOGL_ERROR, "Not implemented: %s\n", __func__);
+ LOGVLR(LOGL_ERROR, "Not implemented: %s\n", __func__);
return 0;
}

@@ -735,7 +735,7 @@
if (osmo_clock_gettime(CLOCK_MONOTONIC, &now) == 0) {
vsub->expire_lu = now.tv_sec + vlr_timer(vsub->vlr, 3212);
} else {
- LOGP(DVLR, LOGL_ERROR,
+ LOGVLR(LOGL_ERROR,
"%s: Could not enable Location Update expiry: unable to read current time\n", vlr_subscr_name(vsub));
/* Disable LU expiry for this subscriber. This subscriber will only be freed after an explicit IMSI detach. */
vsub->expire_lu = VLR_SUBSCRIBER_NO_EXPIRATION;
@@ -757,7 +757,7 @@
goto done;

if (osmo_clock_gettime(CLOCK_MONOTONIC, &now) != 0) {
- LOGP(DVLR, LOGL_ERROR, "Skipping Location Update expiry: Could not read current time\n");
+ LOGVLR(LOGL_ERROR, "Skipping Location Update expiry: Could not read current time\n");
goto done;
}

@@ -765,7 +765,7 @@
if (vsub->expire_lu == VLR_SUBSCRIBER_NO_EXPIRATION || vsub->expire_lu > now.tv_sec)
continue;

- LOGP(DVLR, LOGL_DEBUG, "%s: Location Update expired\n", vlr_subscr_name(vsub));
+ LOGVLR(LOGL_DEBUG, "%s: Location Update expired\n", vlr_subscr_name(vsub));
vlr_rate_ctr_inc(vlr, VLR_CTR_DETACH_BY_T3212);
vlr_subscr_detach(vsub);
}
@@ -843,20 +843,20 @@
const struct osmo_gsup_message *gsup_msg)
{
if (OSMO_GSUP_IS_MSGT_REQUEST(gsup_msg->message_type)) {
- LOGP(DVLR, LOGL_NOTICE,
+ LOGVLR(LOGL_NOTICE,
"Unknown IMSI %s, discarding GSUP request "
"of type 0x%02x\n",
gsup_msg->imsi, gsup_msg->message_type);
gsup_client_mux_tx_error_reply(vlr->gcm, gsup_msg, GMM_CAUSE_IMSI_UNKNOWN);
} else if (OSMO_GSUP_IS_MSGT_ERROR(gsup_msg->message_type)) {
- LOGP(DVLR, LOGL_NOTICE,
+ LOGVLR(LOGL_NOTICE,
"Unknown IMSI %s, discarding GSUP error "
"of type 0x%02x, cause '%s' (%d)\n",
gsup_msg->imsi, gsup_msg->message_type,
get_value_string(gsm48_gmm_cause_names, gsup_msg->cause),
gsup_msg->cause);
} else {
- LOGP(DVLR, LOGL_NOTICE,
+ LOGVLR(LOGL_NOTICE,
"Unknown IMSI %s, discarding GSUP response "
"of type 0x%02x\n",
gsup_msg->imsi, gsup_msg->message_type);
@@ -1028,13 +1028,13 @@
gsm48_decode_bcd_number2(vsub->msisdn, sizeof(vsub->msisdn),
gsup_msg->msisdn_enc,
gsup_msg->msisdn_enc_len, 0);
- LOGP(DVLR, LOGL_DEBUG, "IMSI:%s has MSISDN:%s\n",
+ LOGVLR(LOGL_DEBUG, "IMSI:%s has MSISDN:%s\n",
vsub->imsi, vsub->msisdn);
}

if (gsup_msg->hlr_enc) {
if (gsup_msg->hlr_enc_len > sizeof(vsub->hlr.buf)) {
- LOGP(DVLR, LOGL_ERROR, "HLR-Number too long (%zu)\n",
+ LOGVLR(LOGL_ERROR, "HLR-Number too long (%zu)\n",
gsup_msg->hlr_enc_len);
vsub->hlr.len = 0;
} else {
@@ -1047,7 +1047,7 @@
if (gsup_msg->pdp_info_compl) {
rc = vlr_subscr_pdp_data_clear(vsub);
if (rc > 0)
- LOGP(DVLR, LOGL_INFO, "Cleared existing PDP info\n");
+ LOGVLR(LOGL_INFO, "Cleared existing PDP info\n");
}

for (idx = 0; idx < gsup_msg->num_pdp_infos; idx++) {
@@ -1689,3 +1689,25 @@
} else
target->filter_map &= ~(1 << LOG_FLT_VLR_SUBSCR);
}
+
+int g_vlr_log_cat[_OSMO_VLR_LOGC_MAX];
+
+void osmo_vlr_set_log_cat(enum osmo_vlr_cat logc, int logc_num)
+{
+ if (logc <= OSMO_VLR_LOGC_VLR || logc >= _OSMO_VLR_LOGC_MAX)
+ return;
+
+ g_vlr_log_cat[logc] = logc_num;
+
+ switch (logc) {
+ case OSMO_VLR_LOGC_VLR:
+ vlr_auth_fsm.log_subsys = logc_num;
+ vlr_lu_fsm_set_loglevel(logc_num);
+ break;
+ case OSMO_VLR_LOGC_SGS:
+ vlr_sgs_fsm_set_loglevel(logc_num);
+ break;
+ default:
+ break;
+ }
+}
diff --git a/src/libvlr/vlr_access_req_fsm.c b/src/libvlr/vlr_access_req_fsm.c
index c2e185b..3b46ddb 100644
--- a/src/libvlr/vlr_access_req_fsm.c
+++ b/src/libvlr/vlr_access_req_fsm.c
@@ -650,7 +650,7 @@
.num_states = ARRAY_SIZE(proc_arq_vlr_states),
.allstate_event_mask = 0,
.allstate_action = NULL,
- .log_subsys = DVLR,
+ .log_subsys = DLGLOBAL,
.event_names = proc_arq_vlr_event_names,
.cleanup = proc_arq_vlr_cleanup,
};
@@ -809,3 +809,8 @@
//OSMO_ASSERT(osmo_fsm_register(&upd_loc_child_vlr_fsm) == 0);
OSMO_ASSERT(osmo_fsm_register(&proc_arq_vlr_fsm) == 0);
}
+
+void vlr_parq_fsm_set_loglevel(int log_level)
+{
+ proc_arq_vlr_fsm.log_subsys = log_level;
+}
diff --git a/src/libvlr/vlr_access_req_fsm.h b/src/libvlr/vlr_access_req_fsm.h
index 8386da6..1c4db24 100644
--- a/src/libvlr/vlr_access_req_fsm.h
+++ b/src/libvlr/vlr_access_req_fsm.h
@@ -15,3 +15,5 @@
PR_ARQ_S_WAIT_CECK_CONF,
PR_ARQ_S_DONE,
};
+
+void vlr_parq_fsm_set_loglevel(int log_level);
diff --git a/src/libvlr/vlr_auth_fsm.c b/src/libvlr/vlr_auth_fsm.c
index 3a74ec1..3b398dd 100644
--- a/src/libvlr/vlr_auth_fsm.c
+++ b/src/libvlr/vlr_auth_fsm.c
@@ -610,7 +610,7 @@
.num_states = ARRAY_SIZE(auth_fsm_states),
.allstate_event_mask = 0,
.allstate_action = NULL,
- .log_subsys = DVLR,
+ .log_subsys = DLGLOBAL,
.event_names = fsm_auth_event_names,
.cleanup = auth_fsm_cleanup,
};
diff --git a/src/libvlr/vlr_lu_fsm.c b/src/libvlr/vlr_lu_fsm.c
index b26eed7..1279801 100644
--- a/src/libvlr/vlr_lu_fsm.c
+++ b/src/libvlr/vlr_lu_fsm.c
@@ -150,7 +150,7 @@
.num_states = ARRAY_SIZE(upd_hlr_vlr_states),
.allstate_event_mask = 0,
.allstate_action = NULL,
- .log_subsys = DVLR,
+ .log_subsys = DLGLOBAL,
.event_names = upd_hlr_vlr_event_names,
};

@@ -262,7 +262,7 @@
.num_states = ARRAY_SIZE(sub_pres_vlr_states),
.allstate_event_mask = 0,
.allstate_action = NULL,
- .log_subsys = DVLR,
+ .log_subsys = DLGLOBAL,
.event_names = sub_pres_vlr_event_names,
};

@@ -601,7 +601,7 @@
.num_states = ARRAY_SIZE(lu_compl_vlr_states),
.allstate_event_mask = 0,
.allstate_action = NULL,
- .log_subsys = DVLR,
+ .log_subsys = DLGLOBAL,
.event_names = lu_compl_vlr_event_names,
};

@@ -1492,7 +1492,7 @@
.num_states = ARRAY_SIZE(vlr_lu_fsm_states),
.allstate_event_mask = 0,
.allstate_action = NULL,
- .log_subsys = DVLR,
+ .log_subsys = DLGLOBAL,
.event_names = fsm_lu_event_names,
.cleanup = fsm_lu_cleanup,
};
@@ -1595,3 +1595,11 @@
OSMO_ASSERT(osmo_fsm_register(&sub_pres_vlr_fsm) == 0);
OSMO_ASSERT(osmo_fsm_register(&lu_compl_vlr_fsm) == 0);
}
+
+void vlr_lu_fsm_set_loglevel(int log_level)
+{
+ vlr_lu_fsm.log_subsys = log_level;
+ upd_hlr_vlr_fsm.log_subsys = log_level;
+ sub_pres_vlr_fsm.log_subsys = log_level;
+ lu_compl_vlr_fsm.log_subsys = log_level;
+}
diff --git a/src/libvlr/vlr_lu_fsm.h b/src/libvlr/vlr_lu_fsm.h
index b5c4a5e..29cc24a 100644
--- a/src/libvlr/vlr_lu_fsm.h
+++ b/src/libvlr/vlr_lu_fsm.h
@@ -17,3 +17,4 @@
};

void vlr_lu_fsm_init(void);
+void vlr_lu_fsm_set_loglevel(int log_level);
diff --git a/src/libvlr/vlr_sgs.c b/src/libvlr/vlr_sgs.c
index a0147c0..ace2c5d 100644
--- a/src/libvlr/vlr_sgs.c
+++ b/src/libvlr/vlr_sgs.c
@@ -51,7 +51,7 @@

OSMO_ASSERT(vlr);

- LOGP(DVLR, LOGL_INFO, "dropping all SGs associations.\n");
+ LOGSGS(LOGL_INFO, "dropping all SGs associations.\n");

llist_for_each_entry(vsub, &vlr->subscribers, list) {
osmo_fsm_inst_dispatch(vsub->sgs_fsm, SGS_UE_E_RX_RESET_FROM_MME, NULL);
@@ -85,7 +85,7 @@

vsub = vlr_subscr_find_or_create_by_imsi(vlr, imsi, VSUB_USE_SGS_LU, NULL);
if (!vsub) {
- LOGP(DSGS, LOGL_ERROR, "VLR subscriber allocation failed\n");
+ LOGSGS(LOGL_ERROR, "VLR subscriber allocation failed\n");
return -EINVAL;
}

@@ -168,7 +168,7 @@
evt = SGS_UE_E_RX_DETACH_IND_FROM_MME;
break;
default:
- LOGP(DSGS, LOGL_ERROR, "(sub %s) invalid SGS IMSI detach type, detaching anyway...\n",
+ LOGSGS(LOGL_ERROR, "(sub %s) invalid SGS IMSI detach type, detaching anyway...\n",
vlr_subscr_msisdn_or_name(vsub));
evt = SGS_UE_E_RX_DETACH_IND_FROM_MME;
break;
@@ -206,7 +206,7 @@
evt = SGS_UE_E_RX_DETACH_IND_FROM_MME;
break;
default:
- LOGP(DSGS, LOGL_ERROR, "(sub %s) invalid SGS IMSI detach type, detaching anyway...\n",
+ LOGSGS(LOGL_ERROR, "(sub %s) invalid SGS IMSI detach type, detaching anyway...\n",
vlr_subscr_msisdn_or_name(vsub));
evt = SGS_UE_E_RX_DETACH_IND_FROM_MME;
break;
@@ -253,7 +253,7 @@
/* On the reception of a paging rej the VLR is supposed to stop Ts5,
also 3GPP TS 29.118, chapter 5.1.2.4 */
osmo_timer_del(&vsub->sgs.Ts5);
- LOGP(DSGS, LOGL_DEBUG, "(sub %s) Paging via SGs interface rejected by MME, %s stopped, cause: %s!\n",
+ LOGSGS(LOGL_DEBUG, "(sub %s) Paging via SGs interface rejected by MME, %s stopped, cause: %s!\n",
vlr_subscr_msisdn_or_name(vsub), vlr_sgs_state_timer_name(SGS_STATE_TS5), sgsap_sgs_cause_name(cause));

osmo_fsm_inst_dispatch(vsub->sgs_fsm, SGS_UE_E_RX_PAGING_FAILURE, &cause);
@@ -295,7 +295,7 @@
/* On the reception of an UE unreachable the VLR is supposed to stop
* Ts5, also 3GPP TS 29.118, chapter 5.1.2.5 */
osmo_timer_del(&vsub->sgs.Ts5);
- LOGP(DSGS, LOGL_DEBUG,
+ LOGSGS(LOGL_DEBUG,
"(sub %s) Paging via SGs interface not possible, UE unreachable, %s stopped, cause: %s\n",
vlr_subscr_msisdn_or_name(vsub), vlr_sgs_state_timer_name(SGS_STATE_TS5), sgsap_sgs_cause_name(cause));

@@ -313,7 +313,7 @@
* failed. Other actions may check the status of Ts5 to see if a paging
* is still ongoing or not. */

- LOGP(DSGS, LOGL_ERROR, "(sub %s) Paging via SGs interface timed out (%s expired)!\n",
+ LOGSGS(LOGL_ERROR, "(sub %s) Paging via SGs interface timed out (%s expired)!\n",
vlr_subscr_msisdn_or_name(vsub), vlr_sgs_state_timer_name(SGS_STATE_TS5));

/* Balance ref count increment from vlr_sgs_pag() */
diff --git a/src/libvlr/vlr_sgs_fsm.c b/src/libvlr/vlr_sgs_fsm.c
index c7a9fdd..4cea056 100644
--- a/src/libvlr/vlr_sgs_fsm.c
+++ b/src/libvlr/vlr_sgs_fsm.c
@@ -355,7 +355,7 @@
S(SGS_UE_E_RX_LU_FROM_A_IU_GS),
.allstate_action = sgs_ue_fsm_allstate,
.timer_cb = sgs_ue_fsm_timer_cb,
- .log_subsys = DSGS,
+ .log_subsys = DLGLOBAL,
.event_names = sgs_ue_fsm_event_names,
};

@@ -366,6 +366,12 @@
OSMO_ASSERT(osmo_fsm_register(&sgs_ue_fsm) == 0);
}

+/*! Set the log level of the fsm */
+void vlr_sgs_fsm_set_loglevel(int log_level)
+{
+ sgs_ue_fsm.log_subsys = log_level;
+}
+
/*! Crate SGs FSM in struct vlr_subscr.
* \param[in] vsub VLR subscriber for which the SGs FSM should be created. */
void vlr_sgs_fsm_create(struct vlr_subscr *vsub)
diff --git a/src/libvlr/vlr_sgs_fsm.h b/src/libvlr/vlr_sgs_fsm.h
index 6a09433..3dd84c3 100644
--- a/src/libvlr/vlr_sgs_fsm.h
+++ b/src/libvlr/vlr_sgs_fsm.h
@@ -39,6 +39,7 @@
};

void vlr_sgs_fsm_init(void);
+void vlr_sgs_fsm_set_loglevel(int log_level);
void vlr_sgs_fsm_create(struct vlr_subscr *vsub);
void vlr_sgs_fsm_remove(struct vlr_subscr *vsub);
void vlr_sgs_fsm_update_id(struct vlr_subscr *vsub);

To view, visit change 38410. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-MessageType: newchange
Gerrit-Project: osmo-msc
Gerrit-Branch: master
Gerrit-Change-Id: I6d87b38d6d7d704c7c7b2c90ad12187e4b953b8b
Gerrit-Change-Number: 38410
Gerrit-PatchSet: 1
Gerrit-Owner: lynxis lazus <lynxis@fe80.eu>