enable telnet VTY bind address config for various programs
Following the 'line vty'/'bind A.B.C.D' command added in libosmocore, use the configured address to set the telnet bind for the VTY line. It is now possible to publish the VTY on a specific local interface (including 0.0.0.0 aka "any"). Implement in all of: osmo-gbproxy osmo-gtphub osmo-sgsn osmo-bsc osmo-bsc_nat osmo-bsc_mgcp osmo-nitb In some of these main programs, move the telnet initialization below the configuration parsing. Historically, this was not a good idea for programs using bsc_init.c (aka bsc_bootstrap_network()), since they expected a gsm_network struct pointer in ((struct telnet_connection*)vty->priv)->priv, so that telnet had to be either initialized or replaced by a dummy struct. In the meantime, the gsm_network struct is not actually looked up in a priv pointer but in the static bsc_vty.c scope (bsc_gsmnet), so this limitation is mere legacy (even though said legacy is still there in an "#if 0" chunk). In the other binaries I have briefly looked at the init sequence dependencies and found no reason to initialize telnet above the config file parsing. In any case, I have tested every single one of abovementioned binaries to verify that they still parse the example config successfully and launch, allowing VTY connections on the configured address(es). I hope this suffices. In all of the above, log VTY address and port. LOGL_INFO is disabled by default in some of the logging scopes, and since it is a single log message right at program launch, I decided for the slightly more aggressive LOGL_NOTICE.
This commit is contained in:
parent
58d5430dd5
commit
fa0f71526c
|
@ -252,10 +252,6 @@ int main(int argc, char **argv)
|
|||
rate_ctr_init(tall_bsc_ctx);
|
||||
osmo_stats_init(tall_bsc_ctx);
|
||||
|
||||
rc = telnet_init(tall_bsc_ctx, &dummy_network, OSMO_VTY_PORT_GBPROXY);
|
||||
if (rc < 0)
|
||||
exit(1);
|
||||
|
||||
bssgp_nsi = gprs_ns_instantiate(&proxy_ns_cb, tall_bsc_ctx);
|
||||
if (!bssgp_nsi) {
|
||||
LOGP(DGPRS, LOGL_ERROR, "Unable to instantiate NS\n");
|
||||
|
@ -274,6 +270,14 @@ int main(int argc, char **argv)
|
|||
exit(2);
|
||||
}
|
||||
|
||||
/* start telnet after reading config for vty_get_bind_addr() */
|
||||
LOGP(DGPRS, LOGL_NOTICE, "VTY at %s %d\n",
|
||||
vty_get_bind_addr(), OSMO_VTY_PORT_GBPROXY);
|
||||
rc = telnet_init_dynif(tall_bsc_ctx, &dummy_network,
|
||||
vty_get_bind_addr(), OSMO_VTY_PORT_GBPROXY);
|
||||
if (rc < 0)
|
||||
exit(1);
|
||||
|
||||
if (!gprs_nsvc_by_nsei(gbcfg.nsi, gbcfg.nsip_sgsn_nsei)) {
|
||||
LOGP(DGPRS, LOGL_FATAL, "You cannot proxy to NSEI %u "
|
||||
"without creating that NSEI before\n",
|
||||
|
|
|
@ -314,9 +314,6 @@ int main(int argc, char **argv)
|
|||
gtphub_vty_init(hub, cfg);
|
||||
|
||||
rate_ctr_init(osmo_gtphub_ctx);
|
||||
rc = telnet_init(osmo_gtphub_ctx, 0, OSMO_VTY_PORT_GTPHUB);
|
||||
if (rc < 0)
|
||||
exit(1);
|
||||
|
||||
handle_options(ccfg, argc, argv);
|
||||
|
||||
|
@ -327,6 +324,14 @@ int main(int argc, char **argv)
|
|||
exit(2);
|
||||
}
|
||||
|
||||
/* start telnet after reading config for vty_get_bind_addr() */
|
||||
LOGP(DGTPHUB, LOGL_NOTICE, "VTY at %s %d\n",
|
||||
vty_get_bind_addr(), OSMO_VTY_PORT_GTPHUB);
|
||||
rc = telnet_init_dynif(osmo_gtphub_ctx, 0, vty_get_bind_addr(),
|
||||
OSMO_VTY_PORT_GTPHUB);
|
||||
if (rc < 0)
|
||||
exit(1);
|
||||
|
||||
if (gtphub_start(hub, cfg,
|
||||
next_restart_count(ccfg->restart_counter_file))
|
||||
!= 0)
|
||||
|
|
|
@ -315,9 +315,6 @@ int main(int argc, char **argv)
|
|||
handle_options(argc, argv);
|
||||
|
||||
rate_ctr_init(tall_bsc_ctx);
|
||||
rc = telnet_init(tall_bsc_ctx, &dummy_network, OSMO_VTY_PORT_SGSN);
|
||||
if (rc < 0)
|
||||
exit(1);
|
||||
|
||||
ctrl = sgsn_controlif_setup(NULL, OSMO_CTRL_PORT_SGSN);
|
||||
if (!ctrl) {
|
||||
|
@ -357,6 +354,14 @@ int main(int argc, char **argv)
|
|||
exit(2);
|
||||
}
|
||||
|
||||
/* start telnet after reading config for vty_get_bind_addr() */
|
||||
LOGP(DGPRS, LOGL_NOTICE, "VTY at %s %d\n",
|
||||
vty_get_bind_addr(), OSMO_VTY_PORT_SGSN);
|
||||
rc = telnet_init_dynif(tall_bsc_ctx, &dummy_network,
|
||||
vty_get_bind_addr(), OSMO_VTY_PORT_SGSN);
|
||||
if (rc < 0)
|
||||
exit(1);
|
||||
|
||||
rc = sgsn_gtp_init(&sgsn_inst);
|
||||
if (rc) {
|
||||
LOGP(DGPRS, LOGL_FATAL, "Cannot bind/listen on GTP socket\n");
|
||||
|
|
|
@ -495,7 +495,11 @@ int bsc_bootstrap_network(int (*mncc_recv)(struct gsm_network *, struct msgb *),
|
|||
return rc;
|
||||
}
|
||||
|
||||
rc = telnet_init(tall_bsc_ctx, bsc_gsmnet, OSMO_VTY_PORT_NITB_BSC);
|
||||
/* start telnet after reading config for vty_get_bind_addr() */
|
||||
LOGP(DNM, LOGL_NOTICE, "VTY at %s %d\n",
|
||||
vty_get_bind_addr(), OSMO_VTY_PORT_NITB_BSC);
|
||||
rc = telnet_init_dynif(tall_bsc_ctx, bsc_gsmnet, vty_get_bind_addr(),
|
||||
OSMO_VTY_PORT_NITB_BSC);
|
||||
if (rc < 0)
|
||||
return rc;
|
||||
|
||||
|
|
|
@ -232,7 +232,11 @@ int main(int argc, char **argv)
|
|||
if (rc < 0)
|
||||
return rc;
|
||||
|
||||
rc = telnet_init(tall_bsc_ctx, &dummy_network, OSMO_VTY_PORT_BSC_MGCP);
|
||||
/* start telnet after reading config for vty_get_bind_addr() */
|
||||
LOGP(DMGCP, LOGL_NOTICE, "VTY at %s %d\n",
|
||||
vty_get_bind_addr(), OSMO_VTY_PORT_BSC_MGCP);
|
||||
rc = telnet_init_dynif(tall_bsc_ctx, &dummy_network,
|
||||
vty_get_bind_addr(), OSMO_VTY_PORT_BSC_MGCP);
|
||||
if (rc < 0)
|
||||
return rc;
|
||||
|
||||
|
|
|
@ -1628,15 +1628,20 @@ int main(int argc, char **argv)
|
|||
osmo_stats_init(tall_bsc_ctx);
|
||||
|
||||
/* init vty and parse */
|
||||
if (telnet_init(tall_bsc_ctx, NULL, OSMO_VTY_PORT_BSC_NAT)) {
|
||||
fprintf(stderr, "Creating VTY telnet line failed\n");
|
||||
return -5;
|
||||
}
|
||||
if (mgcp_parse_config(config_file, nat->mgcp_cfg, MGCP_BSC_NAT) < 0) {
|
||||
fprintf(stderr, "Failed to parse the config file: '%s'\n", config_file);
|
||||
return -3;
|
||||
}
|
||||
|
||||
/* start telnet after reading config for vty_get_bind_addr() */
|
||||
LOGP(DNAT, LOGL_NOTICE, "VTY at %s %d\n",
|
||||
vty_get_bind_addr(), OSMO_VTY_PORT_BSC_NAT);
|
||||
if (telnet_init_dynif(tall_bsc_ctx, NULL, vty_get_bind_addr(),
|
||||
OSMO_VTY_PORT_BSC_NAT)) {
|
||||
fprintf(stderr, "Creating VTY telnet line failed\n");
|
||||
return -5;
|
||||
}
|
||||
|
||||
/* over rule the VTY config for MSC IP */
|
||||
if (msc_ip)
|
||||
bsc_nat_set_msc_ip(nat, msc_ip);
|
||||
|
|
Loading…
Reference in New Issue