aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVadim Yanitskiy <vyanitskiy@sysmocom.de>2023-09-08 03:21:23 +0700
committerVadim Yanitskiy <vyanitskiy@sysmocom.de>2023-09-15 05:29:05 +0700
commit4454350b4278e8a471aa93de2c1146c70a491bbf (patch)
tree992100f3c1f55200e25facb1206de50d26211219 /src
parent5bdf6432f95098d65699ea58e7e7791f2415d361 (diff)
oml: ipacc: parse Object Version from SW Activated Report
Diffstat (limited to 'src')
-rw-r--r--src/osmo-bsc/bts_ipaccess_nanobts.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/osmo-bsc/bts_ipaccess_nanobts.c b/src/osmo-bsc/bts_ipaccess_nanobts.c
index 941fe557e..24966a73d 100644
--- a/src/osmo-bsc/bts_ipaccess_nanobts.c
+++ b/src/osmo-bsc/bts_ipaccess_nanobts.c
@@ -199,6 +199,7 @@ static int sw_activ_rep(struct msgb *mb)
struct e1inp_sign_link *sign_link = mb->dst;
struct gsm_bts *bts = sign_link->trx->bts;
struct gsm_abis_mo *mo;
+ struct tlv_parsed tp;
if (!is_ipa_abisip_bts(bts))
return 0;
@@ -209,6 +210,20 @@ static int sw_activ_rep(struct msgb *mb)
return -ENOENT;
}
+ if (abis_nm_tlv_parse(&tp, bts, &foh->data[0], msgb_l3len(mb) - sizeof(*foh)) < 0) {
+ LOGPFOH(DNM, LOGL_ERROR, foh, "%s(): tlv_parse failed\n", __func__);
+ return -EINVAL;
+ }
+
+ mo->ipaccess.obj_version = 0; /* implicit default */
+ if (TLVP_PRES_LEN(&tp, NM_ATT_IPACC_OBJ_VERSION, 1)) {
+ /* nanoBTS may report several Object Versions; the first one will
+ * be used by default unless requested explicitly before OPSTARTing. */
+ mo->ipaccess.obj_version = *TLVP_VAL(&tp, NM_ATT_IPACC_OBJ_VERSION);
+ LOGPFOH(DNM, LOGL_INFO, foh, "IPA Object Version is %u (default)\n",
+ mo->ipaccess.obj_version);
+ }
+
osmo_fsm_inst_dispatch(mo->fi, NM_EV_SW_ACT_REP, NULL);
return 0;
}