This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Harald Welte gerrit-no-reply at lists.osmocom.orgHarald Welte has submitted this change and it was merged. Change subject: hnbgw: parameterize IuCS and IuPS ips and ports: add vty cmds ...................................................................... hnbgw: parameterize IuCS and IuPS ips and ports: add vty cmds Basically copy-paste the Iuh local-ip and local-port code to provide parameterization of the IuCS and IuPS remote addresses. Add IUCS and IUPS nodes, enhance go_parent_cb and config writing accordingly. Change-Id: I2c28977011009df4e1fa472290bbbc359e406971 --- M include/osmocom/iuh/hnbgw.h M include/osmocom/iuh/vty.h M src/hnbgw.c M src/hnbgw_vty.c 4 files changed, 139 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/iuh/hnbgw.h b/include/osmocom/iuh/hnbgw.h index 850c4d9..4880d48 100644 --- a/include/osmocom/iuh/hnbgw.h +++ b/include/osmocom/iuh/hnbgw.h @@ -20,6 +20,8 @@ #define HNBGW_LOCAL_IP_DEFAULT "0.0.0.0" +#define HNBGW_IUCS_REMOTE_IP_DEFAULT "127.0.0.1" +#define HNBGW_IUPS_REMOTE_IP_DEFAULT "127.0.0.2" /* 25.467 Section 7.1 */ #define IUH_DEFAULT_SCTP_PORT 29169 @@ -116,6 +118,10 @@ /*! The UDP port where we receive multiplexed CS user * plane traffic from HNBs */ uint16_t iuh_cs_mux_port; + const char *iucs_remote_ip; + uint16_t iucs_remote_port; + const char *iups_remote_ip; + uint16_t iups_remote_port; uint16_t rnc_id; bool hnbap_allow_tmsi; } config; diff --git a/include/osmocom/iuh/vty.h b/include/osmocom/iuh/vty.h index 905a949..3d05da5 100644 --- a/include/osmocom/iuh/vty.h +++ b/include/osmocom/iuh/vty.h @@ -5,5 +5,7 @@ enum osmo_iuh_vty_node { HNBGW_NODE = _LAST_OSMOVTY_NODE + 1, IUH_NODE, + IUCS_NODE, + IUPS_NODE, }; diff --git a/src/hnbgw.c b/src/hnbgw.c index 16a2e43..acca643 100644 --- a/src/hnbgw.c +++ b/src/hnbgw.c @@ -80,6 +80,14 @@ gw->config.iuh_local_ip = talloc_strdup(gw, HNBGW_LOCAL_IP_DEFAULT); gw->config.iuh_local_port = IUH_DEFAULT_SCTP_PORT; + gw->config.iucs_remote_ip = talloc_strdup(gw, + HNBGW_IUCS_REMOTE_IP_DEFAULT); + gw->config.iucs_remote_port = SUA_PORT; + + gw->config.iups_remote_ip = talloc_strdup(gw, + HNBGW_IUPS_REMOTE_IP_DEFAULT); + gw->config.iups_remote_port = SUA_PORT; + gw->next_ue_ctx_id = 23; INIT_LLIST_HEAD(&gw->hnb_list); INIT_LLIST_HEAD(&gw->ue_list); @@ -498,8 +506,16 @@ osmo_sua_set_log_area(DSUA); ranap_set_log_area(DRANAP); - g_hnb_gw->cnlink_cs = hnbgw_cnlink_init(g_hnb_gw, "127.0.0.1", SUA_PORT, 0); - g_hnb_gw->cnlink_ps = hnbgw_cnlink_init(g_hnb_gw, "127.0.0.2", SUA_PORT, 1); + OSMO_ASSERT(g_hnb_gw->config.iucs_remote_ip); + g_hnb_gw->cnlink_cs = hnbgw_cnlink_init(g_hnb_gw, + g_hnb_gw->config.iucs_remote_ip, + g_hnb_gw->config.iucs_remote_port, + 0); + OSMO_ASSERT(g_hnb_gw->config.iups_remote_ip); + g_hnb_gw->cnlink_ps = hnbgw_cnlink_init(g_hnb_gw, + g_hnb_gw->config.iups_remote_ip, + g_hnb_gw->config.iups_remote_port, + 1); OSMO_ASSERT(g_hnb_gw->config.iuh_local_ip); LOGP(DMAIN, LOGL_NOTICE, "Listening for Iuh at %s %d\n", diff --git a/src/hnbgw_vty.c b/src/hnbgw_vty.c index a458c76..59871da 100644 --- a/src/hnbgw_vty.c +++ b/src/hnbgw_vty.c @@ -24,6 +24,7 @@ #include <osmocom/iuh/hnbgw.h> #include <osmocom/iuh/context_map.h> +#include <osmocom/sigtran/protocol/sua.h> static void *tall_hnb_ctx = NULL; static struct hnb_gw *g_hnb_gw = NULL; @@ -54,10 +55,38 @@ return CMD_SUCCESS; } +static struct cmd_node iucs_node = { + IUCS_NODE, + "%s(config-hnbgw-iucs)# ", + 1, +}; + +DEFUN(cfg_hnbgw_iucs, cfg_hnbgw_iucs_cmd, + "iucs", "Configure IuCS options") +{ + vty->node = IUCS_NODE; + return CMD_SUCCESS; +} + +static struct cmd_node iups_node = { + IUPS_NODE, + "%s(config-hnbgw-iups)# ", + 1, +}; + +DEFUN(cfg_hnbgw_iups, cfg_hnbgw_iups_cmd, + "iups", "Configure IuPS options") +{ + vty->node = IUPS_NODE; + return CMD_SUCCESS; +} + int hnbgw_vty_go_parent(struct vty *vty) { switch (vty->node) { case IUH_NODE: + case IUCS_NODE: + case IUPS_NODE: vty->node = HNBGW_NODE; vty->index = NULL; break; @@ -153,6 +182,40 @@ return CMD_SUCCESS; } +DEFUN(cfg_hnbgw_iucs_remote_ip, cfg_hnbgw_iucs_remote_ip_cmd, "remote-ip A.B.C.D", + "Address to establish IuCS core network link to\n" + "Remote IuCS IP address (default: " HNBGW_IUCS_REMOTE_IP_DEFAULT ")") +{ + talloc_free((void*)g_hnb_gw->config.iucs_remote_ip); + g_hnb_gw->config.iucs_remote_ip = talloc_strdup(tall_hnb_ctx, argv[0]); + return CMD_SUCCESS; +} + +DEFUN(cfg_hnbgw_iucs_remote_port, cfg_hnbgw_iucs_remote_port_cmd, "remote-port <1-65535>", + "Remote port to establish IuCS core network link to\n" + "Remote IuCS port (default: 14001)") +{ + g_hnb_gw->config.iucs_remote_port = atoi(argv[0]); + return CMD_SUCCESS; +} + +DEFUN(cfg_hnbgw_iups_remote_ip, cfg_hnbgw_iups_remote_ip_cmd, "remote-ip A.B.C.D", + "Address to establish IuPS core network link to\n" + "Remote IuPS IP address (default: " HNBGW_IUPS_REMOTE_IP_DEFAULT ")") +{ + talloc_free((void*)g_hnb_gw->config.iups_remote_ip); + g_hnb_gw->config.iups_remote_ip = talloc_strdup(tall_hnb_ctx, argv[0]); + return CMD_SUCCESS; +} + +DEFUN(cfg_hnbgw_iups_remote_port, cfg_hnbgw_iups_remote_port_cmd, "remote-port <1-65535>", + "Remote port to establish IuPS core network link to\n" + "Remote IuPS port (default: 14001)") +{ + g_hnb_gw->config.iups_remote_port = atoi(argv[0]); + return CMD_SUCCESS; +} + static int config_write_hnbgw(struct vty *vty) { vty_out(vty, "hnbgw%s", VTY_NEWLINE); @@ -180,6 +243,42 @@ return CMD_SUCCESS; } +static int config_write_hnbgw_iucs(struct vty *vty) +{ + const char *addr; + uint16_t port; + + vty_out(vty, " iucs%s", VTY_NEWLINE); + + addr = g_hnb_gw->config.iucs_remote_ip; + if (addr && (strcmp(addr, HNBGW_IUCS_REMOTE_IP_DEFAULT) != 0)) + vty_out(vty, " remote-ip %s%s", addr, VTY_NEWLINE); + + port = g_hnb_gw->config.iucs_remote_port; + if (port && port != SUA_PORT) + vty_out(vty, " remote-port %u%s", port, VTY_NEWLINE); + + return CMD_SUCCESS; +} + +static int config_write_hnbgw_iups(struct vty *vty) +{ + const char *addr; + uint16_t port; + + vty_out(vty, " iups%s", VTY_NEWLINE); + + addr = g_hnb_gw->config.iups_remote_ip; + if (addr && (strcmp(addr, HNBGW_IUPS_REMOTE_IP_DEFAULT) != 0)) + vty_out(vty, " remote-ip %s%s", addr, VTY_NEWLINE); + + port = g_hnb_gw->config.iups_remote_port; + if (port && port != SUA_PORT) + vty_out(vty, " remote-port %u%s", port, VTY_NEWLINE); + + return CMD_SUCCESS; +} + void hnbgw_vty_init(struct hnb_gw *gw, void *tall_ctx) { g_hnb_gw = gw; @@ -197,6 +296,20 @@ install_element(IUH_NODE, &cfg_hnbgw_iuh_local_port_cmd); install_element(IUH_NODE, &cfg_hnbgw_iuh_hnbap_allow_tmsi_cmd); + install_element(HNBGW_NODE, &cfg_hnbgw_iucs_cmd); + install_node(&iucs_node, config_write_hnbgw_iucs); + vty_install_default(IUCS_NODE); + + install_element(IUCS_NODE, &cfg_hnbgw_iucs_remote_ip_cmd); + install_element(IUCS_NODE, &cfg_hnbgw_iucs_remote_port_cmd); + + install_element(HNBGW_NODE, &cfg_hnbgw_iups_cmd); + install_node(&iups_node, config_write_hnbgw_iups); + vty_install_default(IUPS_NODE); + + install_element(IUPS_NODE, &cfg_hnbgw_iups_remote_ip_cmd); + install_element(IUPS_NODE, &cfg_hnbgw_iups_remote_port_cmd); + install_element_ve(&show_hnb_cmd); install_element_ve(&show_ue_cmd); install_element_ve(&show_talloc_cmd); -- To view, visit https://gerrit.osmocom.org/1062 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I2c28977011009df4e1fa472290bbbc359e406971 Gerrit-PatchSet: 2 Gerrit-Project: osmo-iuh Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr <nhofmeyr at sysmocom.de> Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Neels Hofmeyr <nhofmeyr at sysmocom.de>