From 55a015dddf7fa1467b2b9b9def0174990a514490 Mon Sep 17 00:00:00 2001 From: Pau Espin Pedrol Date: Mon, 21 Dec 2020 18:12:58 +0100 Subject: Introduce Neighbor Resolution Service This new CTRL interface allows users of this BSC (such as attached PCU) to gather neighbor information. This interface is needed for PCU to translate ARFCN+BSIC keys provided by MS in the Um side into CGI + RAC keys used to identify target cells in RIM procedures against SGSNs on the Gb interface. This patch extends the already existing neighbor information storage in the VTY by allowing storage of CGI + RAC (RAC couldn't be stored beforehand). Related: SYS#4909 Depends: libosmocore.git Change-Id If48f412c32e8e5a3e604a78d12b74787a4786374 Change-Id: Ib07c9d23026332a207d4b7a0f7b4e76c0094e379 --- include/osmocom/bsc/gsm_data.h | 6 ++++++ include/osmocom/bsc/neighbor_ident.h | 13 ++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h index 233c3b683..8b539028c 100644 --- a/include/osmocom/bsc/gsm_data.h +++ b/include/osmocom/bsc/gsm_data.h @@ -1213,6 +1213,12 @@ struct gsm_network { /* Remote BSS Cell Identifier Lists */ struct neighbor_ident_list *neighbor_bss_cells; + /* Remote BSS resolution sevice (CTRL iface) */ + struct { + char *addr; + uint16_t port; + struct ctrl_handle *handle; + } neigh_ctrl; /* Don't refuse to start with mutually exclusive codec settings */ bool allow_unusable_timeslots; diff --git a/include/osmocom/bsc/neighbor_ident.h b/include/osmocom/bsc/neighbor_ident.h index aa3827635..c8580e22b 100644 --- a/include/osmocom/bsc/neighbor_ident.h +++ b/include/osmocom/bsc/neighbor_ident.h @@ -5,6 +5,7 @@ #include #include +#include struct vty; struct gsm_network; @@ -45,7 +46,8 @@ void neighbor_ident_iter(const struct neighbor_ident_list *nil, void *cb_data); void neighbor_ident_vty_init(struct gsm_network *net, struct neighbor_ident_list *nil); -void neighbor_ident_vty_write(struct vty *vty, const char *indent, struct gsm_bts *bts); +void neighbor_ident_vty_write_bts(struct vty *vty, const char *indent, struct gsm_bts *bts); +void neighbor_ident_vty_write_network(struct vty *vty, const char *indent); bool neighbor_ident_bts_entry_exists(uint8_t from_bts); @@ -58,3 +60,12 @@ bool neighbor_ident_vty_parse_key_params(struct vty *vty, const char **argv, struct neighbor_ident_key *key); bool neighbor_ident_bts_parse_key_params(struct vty *vty, struct gsm_bts *bts, const char **argv, struct neighbor_ident_key *key); + + +struct ctrl_handle *neighbor_controlif_setup(struct gsm_network *net); +int neighbor_ctrl_cmds_install(struct gsm_network *net); + +enum neighbor_ctrl_node { + CTRL_NODE_NEIGH = _LAST_CTRL_NODE, + _LAST_CTRL_NODE_NEIGHBOR +}; -- cgit v1.2.3