diff options
author | Max <msuraev@sysmocom.de> | 2017-06-09 17:15:45 +0200 |
---|---|---|
committer | Neels Hofmeyr <neels@hofmeyr.de> | 2017-08-27 03:52:45 +0200 |
commit | e3dbd5d33a75ea363f4c64bb926b961349055df1 (patch) | |
tree | cbc49d61855019902f1cb072f4a689a0fa5dce26 /src/libbsc | |
parent | 47a50320a4a7870a7e24006dcb87b8b5e2f16c41 (diff) |
Fix BTS attribute requests
* fix BTS numbers: use 0 to indicate given BTS and 0xFF to indicate all
BTS' as it's explained in 3GPP TS 52.021 ยง9.3.
* only request attributes from supported (OsmoBTS) types
Change-Id: I8f43055c38000248033a8ff9ddaf0910d68d794b
Related: OS#2317
Diffstat (limited to 'src/libbsc')
-rw-r--r-- | src/libbsc/abis_nm.c | 9 | ||||
-rw-r--r-- | src/libbsc/bsc_init.c | 4 |
2 files changed, 10 insertions, 3 deletions
diff --git a/src/libbsc/abis_nm.c b/src/libbsc/abis_nm.c index 019d03952..cf20d7c49 100644 --- a/src/libbsc/abis_nm.c +++ b/src/libbsc/abis_nm.c @@ -1590,10 +1590,17 @@ int abis_nm_get_attr(struct gsm_bts *bts, uint8_t obj_class, uint8_t bts_nr, uin const uint8_t *attr, uint8_t attr_len) { struct abis_om_hdr *oh; - struct msgb *msg = nm_msgb_alloc(); + struct msgb *msg; + + if (bts->type != GSM_BTS_TYPE_OSMOBTS) { + LOGPC(DNM, LOGL_NOTICE, "Getting attributes from BTS%d type %s is not supported.\n", + bts->nr, btstype2str(bts->type)); + return -EINVAL; + } DEBUGP(DNM, "Get Attr (bts=%d)\n", bts->nr); + msg = nm_msgb_alloc(); oh = (struct abis_om_hdr *) msgb_put(msg, ABIS_OM_FOM_HDR_SIZE); fill_om_fom_hdr(oh, attr_len, NM_MT_GET_ATTR, obj_class, bts_nr, trx_nr, ts_nr); diff --git a/src/libbsc/bsc_init.c b/src/libbsc/bsc_init.c index 64dcd157b..6f80958a2 100644 --- a/src/libbsc/bsc_init.c +++ b/src/libbsc/bsc_init.c @@ -350,12 +350,12 @@ static int inp_sig_cb(unsigned int subsys, unsigned int signal, generate_cell_chan_list(ca, trx->bts); /* Request generic BTS-level attributes */ - abis_nm_get_attr(trx->bts, NM_OC_BTS, trx->bts->nr, trx->nr, 0xFF, bts_attr, sizeof(bts_attr)); + abis_nm_get_attr(trx->bts, NM_OC_BTS, 0xFF, 0xFF, 0xFF, bts_attr, sizeof(bts_attr)); llist_for_each_entry(cur_trx, &trx->bts->trx_list, list) { int i; /* Request TRX-level attributes */ - abis_nm_get_attr(cur_trx->bts, NM_OC_BASEB_TRANSC, cur_trx->bts->nr, cur_trx->nr, 0xFF, + abis_nm_get_attr(cur_trx->bts, NM_OC_BASEB_TRANSC, 0, cur_trx->nr, 0xFF, trx_attr, sizeof(trx_attr)); for (i = 0; i < ARRAY_SIZE(cur_trx->ts); i++) generate_ma_for_ts(&cur_trx->ts[i]); |