pespin has uploaded this change for review.

View Change

vty: Allow setting cnlink msc/sgsn name

This is useful to identify each individual CN link towards a specific
MSC/SGSN, be it checking VTY config, looking at logs, reporting over
statsd, etc.

Change-Id: Ic557f20f40fec49ce2c83a73f6e5c8b027d57ef5
---
M include/osmocom/hnbgw/cnlink.h
M src/osmo-hnbgw/cnlink.c
M src/osmo-hnbgw/hnbgw_vty.c
M tests/cnpool.vty
4 files changed, 58 insertions(+), 1 deletion(-)

git pull ssh://gerrit.osmocom.org:29418/osmo-hnbgw refs/changes/70/40270/1
diff --git a/include/osmocom/hnbgw/cnlink.h b/include/osmocom/hnbgw/cnlink.h
index ee1a8dd..1d413a9 100644
--- a/include/osmocom/hnbgw/cnlink.h
+++ b/include/osmocom/hnbgw/cnlink.h
@@ -104,6 +104,7 @@
struct hnbgw_cnlink *hnbgw_cnlink_alloc(struct hnbgw_cnpool *cnpool, int nr);
void hnbgw_cnlink_term_and_free(struct hnbgw_cnlink *cnlink);
void hnbgw_cnlink_drop_sccp(struct hnbgw_cnlink *cnlink);
+int hnbgw_cnlink_set_name(struct hnbgw_cnlink *cnlink, const char *name);
int hnbgw_cnlink_tx_ranap_reset(struct hnbgw_cnlink *cnlink);
int hnbgw_cnlink_tx_ranap_reset_ack(struct hnbgw_cnlink *cnlink);

diff --git a/src/osmo-hnbgw/cnlink.c b/src/osmo-hnbgw/cnlink.c
index 8d312c6..0bd2b3d 100644
--- a/src/osmo-hnbgw/cnlink.c
+++ b/src/osmo-hnbgw/cnlink.c
@@ -230,6 +230,17 @@
return cnlink;
}

+int hnbgw_cnlink_set_name(struct hnbgw_cnlink *cnlink, const char *name)
+{
+ talloc_free(cnlink->name);
+ cnlink->name = talloc_strdup(cnlink, name);
+ osmo_fsm_inst_update_id_f_sanitize(cnlink->fi, '-', cnlink->name);
+ /* Update rate_ctr/stats to report by name instead of index: */
+ rate_ctr_group_set_name(cnlink->ctrs, cnlink->name);
+ osmo_stat_item_group_set_name(cnlink->statg, cnlink->name);
+ return 0;
+}
+
void hnbgw_cnlink_drop_sccp(struct hnbgw_cnlink *cnlink)
{
struct hnbgw_context_map *map, *map2;
diff --git a/src/osmo-hnbgw/hnbgw_vty.c b/src/osmo-hnbgw/hnbgw_vty.c
index 52c5ba6..7d78909 100644
--- a/src/osmo-hnbgw/hnbgw_vty.c
+++ b/src/osmo-hnbgw/hnbgw_vty.c
@@ -149,7 +149,8 @@
return;
}

- vty_out(vty, "%s <->",
+ vty_out(vty, "%s: %s <->",
+ cnlink->name,
osmo_sccp_user_name(cnlink->hnbgw_sccp_user->sccp_user));
vty_out(vty, " %s%s%s%s",
cnlink->use.remote_addr_name ? : "",
@@ -526,6 +527,18 @@
/* 'msc 0' / 'remote-addr my-msc' and
* 'sgsn 0' / 'remote-addr my-sgsn'
*/
+DEFUN(cfg_cnlink_name,
+ cfg_cnlink_name_cmd,
+ "name NAME",
+ "Set user defined name for this msc/sgsn\n"
+ "The user defined name to be set for this msc/sgsn\n")
+{
+ struct hnbgw_cnlink *cnlink = vty->index;
+ if (hnbgw_cnlink_set_name(cnlink, argv[0]) < 0)
+ return CMD_WARNING;
+ return CMD_SUCCESS;
+}
+
DEFUN(cfg_cnlink_remote_addr,
cfg_cnlink_remote_addr_cmd,
"remote-addr NAME",
@@ -1057,6 +1070,7 @@

llist_for_each_entry(cnlink, &cnpool->cnlinks, entry) {
vty_out(vty, "%s %d%s", cnpool->peer_name, cnlink->nr, VTY_NEWLINE);
+ vty_out(vty, " name %s%s", cnlink->name, VTY_NEWLINE);
if (cnlink->vty.remote_addr_name)
vty_out(vty, " remote-addr %s%s", cnlink->vty.remote_addr_name, VTY_NEWLINE);
cnlink_write_nri(vty, cnlink, false);
@@ -1098,6 +1112,7 @@

static void install_cnlink_elements(int node)
{
+ install_element(node, &cfg_cnlink_name_cmd);
install_element(node, &cfg_cnlink_remote_addr_cmd);
install_element(node, &cfg_cnlink_nri_add_cmd);
install_element(node, &cfg_cnlink_nri_del_cmd);
diff --git a/tests/cnpool.vty b/tests/cnpool.vty
index 2de56a7..78f660f 100644
--- a/tests/cnpool.vty
+++ b/tests/cnpool.vty
@@ -135,7 +135,9 @@
OsmoHNBGW(config)# show running-config
...
msc 0
+ name msc-0
sgsn 0
+ name sgsn-0
...

OsmoHNBGW(config)# msc 1
@@ -224,9 +226,13 @@
OsmoHNBGW(config)# show running-config
...
msc 0
+ name msc-0
msc 1
+ name msc-1
sgsn 0
+ name sgsn-0
sgsn 1
+ name sgsn-1
...

OsmoHNBGW(config)# ### Add {msc,sgsn}x{2,3}
@@ -252,18 +258,26 @@
OsmoHNBGW(config)# show running-config
...
msc 0
+ name msc-0
msc 1
+ name msc-1
msc 2
+ name msc-2
remote-addr addr-msc2
no allow-attach
msc 3
+ name msc-3
remote-addr addr-msc3
allow-emergency
sgsn 0
+ name sgsn-0
sgsn 1
+ name sgsn-1
sgsn 2
+ name sgsn-2
remote-addr addr-sgsn2
sgsn 3
+ name sgsn-3
remote-addr addr-sgsn3
...

@@ -282,16 +296,24 @@
OsmoHNBGW(config)# show running-config
...
msc 0
+ name msc-0
msc 1
+ name msc-1
msc 2
+ name msc-2
remote-addr addr-msc2
msc 3
+ name msc-3
remote-addr addr-msc4
sgsn 0
+ name sgsn-0
sgsn 1
+ name sgsn-1
sgsn 2
+ name sgsn-2
remote-addr addr-sgsn4
sgsn 3
+ name sgsn-3
remote-addr addr-sgsn3
...

@@ -321,18 +343,26 @@
hnbgw
...
msc 0
+ name msc-0
remote-addr addr-msc0
msc 1
+ name msc-1
msc 2
+ name msc-2
remote-addr addr-msc2
msc 3
+ name msc-3
remote-addr addr-msc4
sgsn 0
+ name sgsn-0
remote-addr addr-sgsn0
sgsn 1
+ name sgsn-1
sgsn 2
+ name sgsn-2
remote-addr addr-sgsn4
sgsn 3
+ name sgsn-3
remote-addr addr-sgsn3
...


To view, visit change 40270. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-MessageType: newchange
Gerrit-Project: osmo-hnbgw
Gerrit-Branch: master
Gerrit-Change-Id: Ic557f20f40fec49ce2c83a73f6e5c8b027d57ef5
Gerrit-Change-Number: 40270
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin@sysmocom.de>