Change in osmo-bsc[master]: WIP: Support OSMO IPA multiplex

pespin gerrit-no-reply at lists.osmocom.org
Fri Jun 4 15:47:10 UTC 2021


pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bsc/+/24550 )


Change subject: WIP: Support OSMO IPA multiplex
......................................................................

WIP: Support OSMO IPA multiplex

Change-Id: I21beb4e5c101157cd0977fd9a607c2fe5350befe
---
M include/osmocom/bsc/Makefile.am
A include/osmocom/bsc/abis_osmo.h
M include/osmocom/bsc/bts.h
M include/osmocom/bsc/gsm_04_08_rr.h
M include/osmocom/bsc/gsm_data.h
M include/osmocom/bsc/pcuif_proto.h
M src/ipaccess/Makefile.am
M src/osmo-bsc/Makefile.am
A src/osmo-bsc/abis_osmo.c
M src/osmo-bsc/bsc_init.c
M src/osmo-bsc/bts.c
M src/osmo-bsc/bts_ipaccess_nanobts.c
M src/osmo-bsc/gsm_04_08_rr.c
M src/utils/Makefile.am
M tests/abis/Makefile.am
M tests/acc/Makefile.am
M tests/bsc/Makefile.am
M tests/gsm0408/Makefile.am
M tests/handover/Makefile.am
M tests/nanobts_omlattr/Makefile.am
20 files changed, 244 insertions(+), 1 deletion(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/50/24550/1

diff --git a/include/osmocom/bsc/Makefile.am b/include/osmocom/bsc/Makefile.am
index be27dae..5e866cc 100644
--- a/include/osmocom/bsc/Makefile.am
+++ b/include/osmocom/bsc/Makefile.am
@@ -2,6 +2,7 @@
 	a_reset.h \
 	abis_nm.h \
 	abis_om2000.h \
+	abis_osmo.h \
 	abis_rsl.h \
 	acc.h \
 	assignment_fsm.h \
diff --git a/include/osmocom/bsc/abis_osmo.h b/include/osmocom/bsc/abis_osmo.h
new file mode 100644
index 0000000..6083e1e
--- /dev/null
+++ b/include/osmocom/bsc/abis_osmo.h
@@ -0,0 +1,35 @@
+/* GSM Network Management messages on the A-bis interface
+ * 3GPP TS 12.21 version 8.0.0 Release 1999 / ETSI TS 100 623 V8.0.0 */
+
+/* (C) 2008-2009 by Harald Welte <laforge at gnumonks.org>
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#pragma once
+
+#include <stdint.h>
+
+#include <osmocom/core/msgb.h>
+
+#include <osmocom/gsm/protocol/gsm_04_08.h>
+
+struct gsm_bts;
+
+int abis_osmo_rcvmsg(struct msgb *msg);
+int abis_osmo_sendmsg(struct gsm_bts *bts, struct msgb *msg);
+
+int abis_osmo_pcu_measure_neighbours_req(struct gsm_bts *bts, const struct gsm48_cell_desc *cell_desc_li, unsigned int num_cells);
diff --git a/include/osmocom/bsc/bts.h b/include/osmocom/bsc/bts.h
index 7a491d9..545f92f 100644
--- a/include/osmocom/bsc/bts.h
+++ b/include/osmocom/bsc/bts.h
@@ -284,6 +284,8 @@
 
 	/* Connected PCU version (if any) */
 	char pcu_version[MAX_VERSION_LENGTH];
+	/* PCU sign_link, over OML line: */
+	struct e1inp_sign_link *osmo_link;
 
 	/* maximum Tx power that the MS is permitted to use in this cell */
 	int ms_max_power;
@@ -650,6 +652,9 @@
 #define BTS_STORE_UPTIME_INTERVAL 10 /* in seconds */
 void bts_store_uptime(struct gsm_bts *bts);
 
+#define ANR_REQUEST_INTERVAL 60 /* in seconds */
+int bts_anr_request(struct gsm_bts *bts, const struct gsm48_cell_desc *cell_desc_li, unsigned int num_cells);
+
 unsigned long long bts_uptime(const struct gsm_bts *bts);
 
 char *get_model_oml_status(const struct gsm_bts *bts);
diff --git a/include/osmocom/bsc/gsm_04_08_rr.h b/include/osmocom/bsc/gsm_04_08_rr.h
index 5ddee7f..ebba0f8 100644
--- a/include/osmocom/bsc/gsm_04_08_rr.h
+++ b/include/osmocom/bsc/gsm_04_08_rr.h
@@ -12,6 +12,7 @@
 struct gsm_meas_rep;
 struct gsm_network;
 struct gsm_subscriber_connection;
+struct gsm_bts;
 
 void gsm_net_update_ctype(struct gsm_network *network);
 enum gsm_chan_t get_ctype_by_chreq(struct gsm_network *network, uint8_t ra);
@@ -43,6 +44,8 @@
 struct msgb *gsm48_create_rr_status(uint8_t cause);
 int gsm48_tx_rr_status(struct gsm_subscriber_connection *conn, uint8_t cause);
 
+void gsm48_cell_desc(struct gsm48_cell_desc *cd, const struct gsm_bts *bts);
+
 #define GSM48_ALLOC_SIZE        2048
 #define GSM48_ALLOC_HEADROOM    256
 
diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h
index 831463a..5ebcccb 100644
--- a/include/osmocom/bsc/gsm_data.h
+++ b/include/osmocom/bsc/gsm_data.h
@@ -1271,6 +1271,9 @@
 	/* Timer to write each BTS's uptime counter state to the stats system. */
 	struct osmo_timer_list bts_store_uptime_timer;
 
+	/* Timer to submit Measure Neighbours Request from time to time. */
+	struct osmo_timer_list anr_request_timer;
+
 	struct {
 		struct mgcp_client_conf *conf;
 		struct mgcp_client *client;
diff --git a/include/osmocom/bsc/pcuif_proto.h b/include/osmocom/bsc/pcuif_proto.h
index 8f72602..771eb9c 100644
--- a/include/osmocom/bsc/pcuif_proto.h
+++ b/include/osmocom/bsc/pcuif_proto.h
@@ -23,6 +23,8 @@
 #define PCU_IF_MSG_TIME_IND	0x52	/* GSM time indication */
 #define PCU_IF_MSG_PAG_REQ	0x60	/* paging request */
 #define PCU_IF_MSG_TXT_IND	0x70	/* Text indication for BTS */
+/* msg_type coming from BSC */
+#define PCU_IF_MSG_ANR_REQ	0x80	/* Automatic Neighbor Registration Request */
 
 /* sapi */
 #define PCU_IF_SAPI_RACH	0x01	/* channel request on CCCH */
@@ -208,6 +210,12 @@
 	uint8_t		cause;
 } __attribute__ ((packed));
 
+/* BSC sends some message to PCU, potentially forwarded by BTS via IPA/PCU */
+struct gsm_pcu_if_anr_req {
+	uint8_t		num_cells;
+	uint16_t	cell_list[80];  /* struct gsm48_cell_desc */
+} __attribute__ ((packed));
+
 struct gsm_pcu_if {
 	/* context based information */
 	uint8_t		msg_type;	/* message type */
@@ -228,6 +236,7 @@
 		struct gsm_pcu_if_time_ind	time_ind;
 		struct gsm_pcu_if_pag_req	pag_req;
 		struct gsm_pcu_if_app_info_req	app_info_req;
+		struct gsm_pcu_if_anr_req	anr_req;
 	} u;
 } __attribute__ ((packed));
 
diff --git a/src/ipaccess/Makefile.am b/src/ipaccess/Makefile.am
index e282c6f..351f618 100644
--- a/src/ipaccess/Makefile.am
+++ b/src/ipaccess/Makefile.am
@@ -50,6 +50,7 @@
 	$(top_builddir)/src/osmo-bsc/bts_sm.o \
 	$(top_builddir)/src/osmo-bsc/bts_trx.o \
 	$(top_builddir)/src/osmo-bsc/abis_nm.o \
+	$(top_builddir)/src/osmo-bsc/abis_osmo.o \
 	$(top_builddir)/src/osmo-bsc/acc.o \
 	$(top_builddir)/src/osmo-bsc/bts_ipaccess_nanobts.o \
 	$(top_builddir)/src/osmo-bsc/bts_ipaccess_nanobts_omlattr.o \
@@ -74,6 +75,7 @@
 
 ipaccess_proxy_LDADD = \
 	$(top_builddir)/src/osmo-bsc/abis_nm.o \
+	$(top_builddir)/src/osmo-bsc/abis_osmo.o \
 	$(top_builddir)/src/osmo-bsc/acc.o \
 	$(top_builddir)/src/osmo-bsc/bts.o \
 	$(top_builddir)/src/osmo-bsc/bts_sm.o \
diff --git a/src/osmo-bsc/Makefile.am b/src/osmo-bsc/Makefile.am
index f91c6bf..df4e0c3 100644
--- a/src/osmo-bsc/Makefile.am
+++ b/src/osmo-bsc/Makefile.am
@@ -31,6 +31,7 @@
 	abis_nm_vty.c \
 	abis_om2000.c \
 	abis_om2000_vty.c \
+	abis_osmo.c \
 	abis_rsl.c \
 	acc.c \
 	assignment_fsm.c \
diff --git a/src/osmo-bsc/abis_osmo.c b/src/osmo-bsc/abis_osmo.c
new file mode 100644
index 0000000..7745ac5
--- /dev/null
+++ b/src/osmo-bsc/abis_osmo.c
@@ -0,0 +1,119 @@
+/* Osmocom specific protocols over Abis (IPA) */
+
+/* (C) 2021 sysmocom - s.f.m.c. GmbH <info at sysmocom.de>
+ * Author: Pau Espin Pedrol <pespin at sysmocom.de>
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <errno.h>
+#include <osmocom/core/logging.h>
+
+#include <osmocom/core/msgb.h>
+
+#include <osmocom/gsm/protocol/ipaccess.h>
+#include <osmocom/gsm/ipa.h>
+#include <osmocom/gsm/protocol/gsm_12_21.h>
+#include <osmocom/gsm/protocol/osmo_pcu.h>
+
+#include <osmocom/bsc/abis_osmo.h>
+#include <osmocom/bsc/debug.h>
+#include <osmocom/bsc/bts.h>
+#include <osmocom/bsc/pcuif_proto.h>
+
+
+#define OM_ALLOC_SIZE		1024
+#define OM_HEADROOM_SIZE	128
+#define IPACC_SEGMENT_SIZE	245
+
+////////////////////////////////////////
+// OSMO ABIS extensions (PCU)
+///////////////////////////////////////
+static struct msgb *abis_osmo_pcu_msgb_alloc(uint8_t msg_type, uint8_t bts_nr)
+{
+	struct msgb *msg;
+	struct gsm_pcu_if *pcu_prim;
+	msg = msgb_alloc_headroom(sizeof(struct gsm_pcu_if) + OM_HEADROOM_SIZE,
+				  OM_HEADROOM_SIZE, "IPA/ABIS/OSMO");
+	msgb_put(msg, sizeof(struct gsm_pcu_if));
+	pcu_prim = (struct gsm_pcu_if *) msg->data;
+	pcu_prim->msg_type = msg_type;
+	pcu_prim->bts_nr = bts_nr;
+	return msg;
+}
+
+/* Send a OML NM Message from BSC to BTS */
+static int abis_osmo_pcu_sendmsg(struct gsm_bts *bts, struct msgb *msg)
+{
+	ipa_prepend_header_ext(msg, IPAC_PROTO_EXT_PCU);
+	return abis_osmo_sendmsg(bts, msg);
+}
+
+int abis_osmo_pcu_measure_neighbours_req(struct gsm_bts *bts, const struct gsm48_cell_desc *cell_desc_li, unsigned int num_cells)
+{
+	struct msgb *msg = abis_osmo_pcu_msgb_alloc(PCU_IF_MSG_ANR_REQ, 0);
+	struct gsm_pcu_if *pcu_prim = (struct gsm_pcu_if *) msgb_data(msg);
+	struct gsm_pcu_if_anr_req *anr_req = &pcu_prim->u.anr_req;
+
+	anr_req->num_cells = num_cells;
+	if (num_cells)
+		memcpy(anr_req->cell_list, cell_desc_li, sizeof(*cell_desc_li) * num_cells);
+
+	return abis_osmo_pcu_sendmsg(bts, msg);
+}
+
+static int rcvmsg_pcu(struct msgb *msg)
+{
+	return 0;
+}
+
+////////////////////////////////////////
+// OSMO ABIS extensions (generic code)
+///////////////////////////////////////
+
+/* High-Level API */
+/* Entry-point where L2 OSMO from BTS enters the NM code */
+int abis_osmo_rcvmsg(struct msgb *msg)
+{
+	int rc;
+	uint8_t *osmo_type = msgb_l2(msg);
+	msg->l2h = osmo_type + 1;
+
+	switch (*osmo_type) {
+	case IPAC_PROTO_EXT_PCU:
+		rc = rcvmsg_pcu(msg);
+		break;
+	default:
+		LOGP(DNM, LOGL_ERROR, "IPAC_PROTO_EXT 0x%x not supported!\n",
+		     *osmo_type);
+		rc = -EINVAL;
+	}
+
+	msgb_free(msg);
+	return rc;
+}
+
+
+/* Send a OML NM Message from BSC to BTS */
+int abis_osmo_sendmsg(struct gsm_bts *bts, struct msgb *msg)
+{
+	msg->dst = bts->osmo_link;
+
+	msg->l2h = msg->data;
+
+	return abis_sendmsg(msg);
+
+}
diff --git a/src/osmo-bsc/bsc_init.c b/src/osmo-bsc/bsc_init.c
index 24596f4..55a507b 100644
--- a/src/osmo-bsc/bsc_init.c
+++ b/src/osmo-bsc/bsc_init.c
@@ -97,6 +97,32 @@
 	osmo_timer_schedule(&net->bts_store_uptime_timer, BTS_STORE_UPTIME_INTERVAL, 0);
 }
 
+static void bsc_anr_request(void *data)
+{
+	struct gsm_network *net = data;
+	struct gsm_bts *bts;
+	struct gsm48_cell_desc cell_desc[256];
+	unsigned int num_cells = 0;
+
+	/* Build list of ARFCN+BSIC: */
+	llist_for_each_entry(bts, &net->bts_list, list) {
+		if (num_cells == ARRAY_SIZE(cell_desc)) {
+			LOGP(DNM, LOGL_ERROR,
+			    "ANR Req: Unable to build list larger than %zu elements",
+			    ARRAY_SIZE(cell_desc));
+			break;
+		}
+		gsm48_cell_desc(&cell_desc[num_cells], bts);
+		num_cells++;
+	}
+
+	llist_for_each_entry(bts, &net->bts_list, list)
+		bts_anr_request(bts, cell_desc, num_cells);
+
+	/* Keep this timer ticking. */
+	osmo_timer_schedule(&net->anr_request_timer, ANR_REQUEST_INTERVAL, 0);
+}
+
 static struct gsm_network *bsc_network_init(void *ctx)
 {
 	struct gsm_network *net = gsm_network_init(ctx);
@@ -144,6 +170,10 @@
 	osmo_timer_setup(&net->bts_store_uptime_timer, bsc_store_bts_uptime, net);
 	osmo_timer_schedule(&net->bts_store_uptime_timer, BTS_STORE_UPTIME_INTERVAL, 0);
 
+	/* Init uptime tracking timer. */
+	osmo_timer_setup(&net->anr_request_timer, bsc_anr_request, net);
+	osmo_timer_schedule(&net->anr_request_timer, ANR_REQUEST_INTERVAL, 0);
+
 	net->cbc->net = net;
 	net->cbc->mode = BSC_CBC_LINK_MODE_DISABLED;
 	net->cbc->server.local_addr = bsc_cbc_default_server_local_addr;
diff --git a/src/osmo-bsc/bts.c b/src/osmo-bsc/bts.c
index 857ddd2..87cfb9a 100644
--- a/src/osmo-bsc/bts.c
+++ b/src/osmo-bsc/bts.c
@@ -24,6 +24,7 @@
 #include <osmocom/bsc/bts.h>
 #include <osmocom/bsc/debug.h>
 #include <osmocom/bsc/nm_common_fsm.h>
+#include <osmocom/bsc/abis_osmo.h>
 
 const struct value_string bts_attribute_names[] = {
 	OSMO_VALUE_STRING(BTS_TYPE_VARIANT),
@@ -579,6 +580,20 @@
 	return difftime(tp.tv_sec, bts->uptime);
 }
 
+int bts_anr_request(struct gsm_bts *bts, const struct gsm48_cell_desc *cell_desc_li, unsigned int num_cells)
+{
+	if (!bts->osmo_link) {
+		LOGP(DNM, LOGL_INFO, "BTS%u: ANR Req: OSMO link is down\n", bts->nr);
+		return 0;
+	}
+	if (!osmo_bts_has_feature(&bts->features, BTS_FEAT_ABIS_OSMO_PCU)) {
+		LOGP(DNM, LOGL_INFO, "BTS%u: ANR Req: Abis OSMO_PCU proto not supported\n", bts->nr);
+		return 0;
+	}
+	LOGP(DNM, LOGL_INFO, "BTS%u: ANR Req (%u cells)\n", bts->nr, num_cells);
+	return abis_osmo_pcu_measure_neighbours_req(bts, cell_desc_li, num_cells);
+}
+
 char *get_model_oml_status(const struct gsm_bts *bts)
 {
 	if (bts->model->oml_status)
diff --git a/src/osmo-bsc/bts_ipaccess_nanobts.c b/src/osmo-bsc/bts_ipaccess_nanobts.c
index 1e3e9c1..db91b01 100644
--- a/src/osmo-bsc/bts_ipaccess_nanobts.c
+++ b/src/osmo-bsc/bts_ipaccess_nanobts.c
@@ -37,6 +37,7 @@
 #include <osmocom/bsc/gsm_data.h>
 #include <osmocom/bsc/abis_nm.h>
 #include <osmocom/bsc/abis_rsl.h>
+#include <osmocom/bsc/abis_osmo.h>
 #include <osmocom/bsc/debug.h>
 #include <osmocom/abis/subchan_demux.h>
 #include <osmocom/gsm/ipa.h>
@@ -557,6 +558,10 @@
 	bts->uptime = 0;
 	osmo_stat_item_dec(bts->bts_statg->items[BTS_STAT_OML_CONNECTED], 1);
 
+	/* Also drop the associated OSMO link */
+	e1inp_sign_link_destroy(bts->osmo_link);
+	bts->osmo_link = NULL;
+
 	/* we have issues reconnecting RSL, drop everything. */
 	llist_for_each_entry(trx, &bts->trx_list, list) {
 		ipaccess_drop_rsl(trx, "OML link drop");
@@ -713,6 +718,10 @@
 			sign_link->trx->bts->ip_access.flags |= OML_UP;
 		}
 		osmo_stat_item_inc(bts->bts_statg->items[BTS_STAT_OML_CONNECTED], 1);
+
+		/* Create link for E1INP_SIGN_OSMO */
+		//SAPI must be 0, no IPAC_PROTO_EXT_PCU, see ipaccess_bts_read_cb
+		bts->osmo_link = e1inp_sign_link_create(sign_ts, E1INP_SIGN_OSMO, bts->c0, IPAC_PROTO_OSMO, 0);
 		break;
 	case E1INP_SIGN_RSL: {
 		struct e1inp_ts *ts;
@@ -785,6 +794,9 @@
 	case E1INP_SIGN_OML:
 	        ret = abis_nm_rcvmsg(msg);
 	        break;
+	case E1INP_SIGN_OSMO:
+	        ret = abis_osmo_rcvmsg(msg);
+	        break;
 	default:
 		LOGP(DLINP, LOGL_ERROR, "Unknown signal link type %d\n",
 			link->type);
diff --git a/src/osmo-bsc/gsm_04_08_rr.c b/src/osmo-bsc/gsm_04_08_rr.c
index 058a107..be1eadc 100644
--- a/src/osmo-bsc/gsm_04_08_rr.c
+++ b/src/osmo-bsc/gsm_04_08_rr.c
@@ -387,7 +387,7 @@
 	return rsl_encryption_cmd(msg);
 }
 
-static void gsm48_cell_desc(struct gsm48_cell_desc *cd,
+void gsm48_cell_desc(struct gsm48_cell_desc *cd,
 			    const struct gsm_bts *bts)
 {
 	cd->ncc = (bts->bsic >> 3 & 0x7);
diff --git a/src/utils/Makefile.am b/src/utils/Makefile.am
index c180390..39d2417 100644
--- a/src/utils/Makefile.am
+++ b/src/utils/Makefile.am
@@ -48,6 +48,7 @@
 
 bs11_config_LDADD = \
 	$(top_builddir)/src/osmo-bsc/abis_nm.o \
+	$(top_builddir)/src/osmo-bsc/abis_osmo.o \
 	$(top_builddir)/src/osmo-bsc/acc.o \
 	$(top_builddir)/src/osmo-bsc/bts.o \
 	$(top_builddir)/src/osmo-bsc/bts_sm.o \
@@ -132,6 +133,7 @@
 
 meas_json_LDADD = \
 	$(top_builddir)/src/osmo-bsc/abis_nm.o \
+	$(top_builddir)/src/osmo-bsc/abis_osmo.o \
 	$(top_builddir)/src/osmo-bsc/acc.o \
 	$(top_builddir)/src/osmo-bsc/bts.o \
 	$(top_builddir)/src/osmo-bsc/bts_sm.o \
diff --git a/tests/abis/Makefile.am b/tests/abis/Makefile.am
index cb327fb..0612827 100644
--- a/tests/abis/Makefile.am
+++ b/tests/abis/Makefile.am
@@ -26,6 +26,7 @@
 
 abis_test_LDADD = \
 	$(top_builddir)/src/osmo-bsc/abis_nm.o \
+	$(top_builddir)/src/osmo-bsc/abis_osmo.o \
 	$(top_builddir)/src/osmo-bsc/acc.o \
 	$(top_builddir)/src/osmo-bsc/bts.o \
 	$(top_builddir)/src/osmo-bsc/bts_ipaccess_nanobts_omlattr.o \
diff --git a/tests/acc/Makefile.am b/tests/acc/Makefile.am
index 9351545..e0044d0 100644
--- a/tests/acc/Makefile.am
+++ b/tests/acc/Makefile.am
@@ -26,6 +26,7 @@
 
 acc_test_LDADD = \
 	$(top_builddir)/src/osmo-bsc/abis_nm.o \
+	$(top_builddir)/src/osmo-bsc/abis_osmo.o \
 	$(top_builddir)/src/osmo-bsc/acc.o \
 	$(top_builddir)/src/osmo-bsc/bts.o \
 	$(top_builddir)/src/osmo-bsc/bts_sm.o \
diff --git a/tests/bsc/Makefile.am b/tests/bsc/Makefile.am
index d08ca18..a0bbb81 100644
--- a/tests/bsc/Makefile.am
+++ b/tests/bsc/Makefile.am
@@ -35,6 +35,7 @@
 
 bsc_test_LDADD = \
 	$(top_builddir)/src/osmo-bsc/abis_nm.o \
+	$(top_builddir)/src/osmo-bsc/abis_osmo.o \
 	$(top_builddir)/src/osmo-bsc/acc.o \
 	$(top_builddir)/src/osmo-bsc/osmo_bsc_filter.o \
 	$(top_builddir)/src/osmo-bsc/bsc_subscriber.o \
diff --git a/tests/gsm0408/Makefile.am b/tests/gsm0408/Makefile.am
index 271a0fd..186dc39 100644
--- a/tests/gsm0408/Makefile.am
+++ b/tests/gsm0408/Makefile.am
@@ -25,6 +25,7 @@
 
 gsm0408_test_LDADD = \
 	$(top_builddir)/src/osmo-bsc/abis_nm.o \
+	$(top_builddir)/src/osmo-bsc/abis_osmo.o \
 	$(top_builddir)/src/osmo-bsc/acc.o \
 	$(top_builddir)/src/osmo-bsc/gsm_04_08_rr.o \
 	$(top_builddir)/src/osmo-bsc/bts.o \
diff --git a/tests/handover/Makefile.am b/tests/handover/Makefile.am
index f0b2e7a..65eb6a8 100644
--- a/tests/handover/Makefile.am
+++ b/tests/handover/Makefile.am
@@ -45,6 +45,7 @@
 	$(top_builddir)/src/osmo-bsc/abis_nm_vty.o \
 	$(top_builddir)/src/osmo-bsc/abis_om2000.o \
 	$(top_builddir)/src/osmo-bsc/abis_om2000_vty.o \
+	$(top_builddir)/src/osmo-bsc/abis_osmo.o \
 	$(top_builddir)/src/osmo-bsc/abis_rsl.o \
 	$(top_builddir)/src/osmo-bsc/acc.o \
 	$(top_builddir)/src/osmo-bsc/assignment_fsm.o \
diff --git a/tests/nanobts_omlattr/Makefile.am b/tests/nanobts_omlattr/Makefile.am
index f2afa2b..e31b8e9 100644
--- a/tests/nanobts_omlattr/Makefile.am
+++ b/tests/nanobts_omlattr/Makefile.am
@@ -24,6 +24,7 @@
 
 nanobts_omlattr_test_LDADD = \
 	$(top_builddir)/src/osmo-bsc/abis_nm.o \
+	$(top_builddir)/src/osmo-bsc/abis_osmo.o \
 	$(top_builddir)/src/osmo-bsc/acc.o \
 	$(top_builddir)/src/osmo-bsc/bts_ipaccess_nanobts_omlattr.o \
 	$(top_builddir)/src/osmo-bsc/bts.o \

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/24550
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: I21beb4e5c101157cd0977fd9a607c2fe5350befe
Gerrit-Change-Number: 24550
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20210604/2405d651/attachment.htm>


More information about the gerrit-log mailing list