aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOliver Smith <osmith@sysmocom.de>2022-04-28 12:04:36 +0200
committerOliver Smith <osmith@sysmocom.de>2022-05-02 15:14:05 +0200
commitaa6404f3f82fb05111d92b57d4db1546002ebca2 (patch)
tree5f9e2912cdc2a939a6fd1cb4edba9046e3982aa1
parentad1f436512670b5b54cee7de1b6b93209998d1ba (diff)
abis_nm: add bts model features to reported ones
As pointed out in code review, for nanobts we need to be able to combine the reported features with a list of features we assume that the bts model supports. This is because the enum of features is based on what nanobts is able to report, but was extended for osmo-bts. Related: SYS#5922, OS#5538 Change-Id: I7bdbf28c148877275048e070dce7f503ca5e6226
-rwxr-xr-xcontrib/jenkins.sh4
-rw-r--r--src/osmo-bsc/abis_nm.c14
2 files changed, 17 insertions, 1 deletions
diff --git a/contrib/jenkins.sh b/contrib/jenkins.sh
index 53b30bfa0..4380f162c 100755
--- a/contrib/jenkins.sh
+++ b/contrib/jenkins.sh
@@ -28,7 +28,9 @@ osmo-build-dep.sh libosmocore "" '--disable-doxygen --enable-gnutls'
verify_value_string_arrays_are_terminated.py $(find . -name "*.[hc]")
# Check for wrong use of osmo_bts_has_feature (OS#5538)
-bts_features_wrong_use="$(grep -r -n 'osmo_bts_has_feature.*->model->features' | grep -v 'jenkins.sh')" || true
+bts_features_wrong_use="$(grep -r -n 'osmo_bts_has_feature.*->model->features' \
+ | grep -v 'jenkins.sh' \
+ | grep -v 'intentional check against bts model')" || true
if [ -n "$bts_features_wrong_use" ]; then
set +x
echo
diff --git a/src/osmo-bsc/abis_nm.c b/src/osmo-bsc/abis_nm.c
index 62f62b6a6..b7009940f 100644
--- a/src/osmo-bsc/abis_nm.c
+++ b/src/osmo-bsc/abis_nm.c
@@ -613,6 +613,20 @@ static int parse_attr_resp_info_attr(struct gsm_bts *bts, const struct gsm_bts_t
LOGPMO(&bts->mo, DNM, LOGL_NOTICE, "Get Attributes Response: feature '%s' is"
" supported\n", osmo_bts_features_name(i));
}
+
+ /* Add features from the BTS model: nanobts may support more
+ * features than it reports, since we extend the enum of
+ * features for osmo-bts. */
+ if (bts->type == GSM_BTS_TYPE_NANOBTS) {
+ for (i = 0; i < _NUM_BTS_FEAT; i++) {
+ if (osmo_bts_has_feature(&bts->model->features, i) /* intentional check against bts model */
+ && !osmo_bts_has_feature(&bts->features, i)) {
+ LOGPMO(&bts->mo, DNM, LOGL_NOTICE, "Get Attributes Response: feature '%s' is"
+ " assumed to be supported\n", osmo_bts_features_name(i));
+ osmo_bts_set_feature(&bts->features, i);
+ }
+ }
+ }
}
/* Parse Attribute Response Info content for 3GPP TS 52.021 ยง9.4.28 Manufacturer Dependent State */