[SGSN] Gb Proxy: Simplify configuration
Almost all parameters about the SGSNs NS-VC can be specified in the NS protocol node. All that needs to remain in the gbproxy config node is "nsip sgsn nsei XXX".
This commit is contained in:
parent
ab1d5626ac
commit
7af4962e07
|
@ -13,11 +13,7 @@ struct gbproxy_config {
|
|||
u_int32_t nsip_listen_ip;
|
||||
u_int16_t nsip_listen_port;
|
||||
|
||||
u_int32_t nsip_sgsn_ip;
|
||||
u_int16_t nsip_sgsn_port;
|
||||
|
||||
u_int16_t nsip_sgsn_nsei;
|
||||
u_int16_t nsip_sgsn_nsvci;
|
||||
|
||||
/* misc */
|
||||
struct gprs_ns_inst *nsi;
|
||||
|
|
|
@ -188,7 +188,6 @@ extern void *tall_msgb_ctx;
|
|||
int main(int argc, char **argv)
|
||||
{
|
||||
struct gsm_network dummy_network;
|
||||
struct sockaddr_in sin;
|
||||
int rc;
|
||||
|
||||
tall_bsc_ctx = talloc_named_const(NULL, 0, "nsip_proxy");
|
||||
|
@ -207,7 +206,7 @@ int main(int argc, char **argv)
|
|||
|
||||
vty_init("Osmocom Gb Proxy", PACKAGE_VERSION, openbsc_copyright);
|
||||
logging_vty_add_cmds();
|
||||
gbproxy_vty_init();
|
||||
gbproxy_vty_init();
|
||||
|
||||
handle_options(argc, argv);
|
||||
|
||||
|
@ -232,15 +231,18 @@ int main(int argc, char **argv)
|
|||
exit(2);
|
||||
}
|
||||
|
||||
nsip_listen(bssgp_nsi, gbcfg.nsip_listen_port);
|
||||
|
||||
/* 'establish' the outgoing connection to the SGSN */
|
||||
sin.sin_family = AF_INET;
|
||||
sin.sin_port = htons(gbcfg.nsip_sgsn_port);
|
||||
sin.sin_addr.s_addr = htonl(gbcfg.nsip_sgsn_ip);
|
||||
nsip_connect(bssgp_nsi, &sin, gbcfg.nsip_sgsn_nsei,
|
||||
gbcfg.nsip_sgsn_nsvci);
|
||||
if (!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",
|
||||
gbcfg.nsip_sgsn_nsei);
|
||||
exit(2);
|
||||
}
|
||||
|
||||
rc = nsip_listen(bssgp_nsi, gbcfg.nsip_listen_port);
|
||||
if (rc < 0) {
|
||||
LOGP(DGPRS, LOGL_FATAL, "Cannot bind/listen on NSIP socket\n");
|
||||
exit(2);
|
||||
}
|
||||
|
||||
/* Reset all the persistent NS-VCs that we've read from the config */
|
||||
gbprox_reset_persistent_nsvcs(bssgp_nsi);
|
||||
|
|
|
@ -58,15 +58,8 @@ static int config_write_gbproxy(struct vty *vty)
|
|||
}
|
||||
vty_out(vty, " nsip bss local port %u%s", g_cfg->nsip_listen_port,
|
||||
VTY_NEWLINE);
|
||||
ia.s_addr = htonl(g_cfg->nsip_sgsn_ip);
|
||||
vty_out(vty, " nsip sgsn remote ip %s%s", inet_ntoa(ia),
|
||||
VTY_NEWLINE);
|
||||
vty_out(vty, " nsip sgsn remote port %u%s", g_cfg->nsip_sgsn_port,
|
||||
VTY_NEWLINE);
|
||||
vty_out(vty, " nsip sgsn nsei %u%s", g_cfg->nsip_sgsn_nsei,
|
||||
VTY_NEWLINE);
|
||||
vty_out(vty, " nsip sgsn nsvci %u%s", g_cfg->nsip_sgsn_nsvci,
|
||||
VTY_NEWLINE);
|
||||
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
@ -104,31 +97,6 @@ DEFUN(cfg_nsip_bss_local_port,
|
|||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
DEFUN(cfg_nsip_sgsn_ip,
|
||||
cfg_nsip_sgsn_ip_cmd,
|
||||
"nsip sgsn remote ip A.B.C.D",
|
||||
"Set the IP of the SGSN to which the proxy shall connect")
|
||||
{
|
||||
struct in_addr ia;
|
||||
|
||||
inet_aton(argv[0], &ia);
|
||||
g_cfg->nsip_sgsn_ip = ntohl(ia.s_addr);
|
||||
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN(cfg_nsip_sgsn_port,
|
||||
cfg_nsip_sgsn_port_cmd,
|
||||
"nsip sgsn remote port <0-65534>",
|
||||
"Set the UDP port of the SGSN to which the proxy shall connect")
|
||||
{
|
||||
unsigned int port = atoi(argv[0]);
|
||||
|
||||
g_cfg->nsip_sgsn_port = port;
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN(cfg_nsip_sgsn_nsei,
|
||||
cfg_nsip_sgsn_nsei_cmd,
|
||||
"nsip sgsn nsei <0-65534>",
|
||||
|
@ -140,17 +108,6 @@ DEFUN(cfg_nsip_sgsn_nsei,
|
|||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN(cfg_nsip_sgsn_nsvci,
|
||||
cfg_nsip_sgsn_nsvci_cmd,
|
||||
"nsip sgsn nsvci <0-65534>",
|
||||
"Set the NSVCI to be used in the connection with the SGSN")
|
||||
{
|
||||
unsigned int port = atoi(argv[0]);
|
||||
|
||||
g_cfg->nsip_sgsn_nsvci = port;
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
int gbproxy_vty_init(void)
|
||||
{
|
||||
install_element_ve(&show_gbproxy_cmd);
|
||||
|
@ -162,10 +119,7 @@ int gbproxy_vty_init(void)
|
|||
install_element(GBPROXY_NODE, &ournode_end_cmd);
|
||||
install_element(GBPROXY_NODE, &cfg_nsip_bss_local_ip_cmd);
|
||||
install_element(GBPROXY_NODE, &cfg_nsip_bss_local_port_cmd);
|
||||
install_element(GBPROXY_NODE, &cfg_nsip_sgsn_ip_cmd);
|
||||
install_element(GBPROXY_NODE, &cfg_nsip_sgsn_port_cmd);
|
||||
install_element(GBPROXY_NODE, &cfg_nsip_sgsn_nsei_cmd);
|
||||
install_element(GBPROXY_NODE, &cfg_nsip_sgsn_nsvci_cmd);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -6,8 +6,10 @@ line vty
|
|||
no login
|
||||
!
|
||||
gbproxy
|
||||
nsip bss local port 23000
|
||||
nsip sgsn remote ip 127.0.0.1
|
||||
nsip sgsn remote port 7777
|
||||
nsip sgsn nsei 101
|
||||
nsip sgsn nsvci 101
|
||||
nsip bss local port 23000
|
||||
nsip sgsn nsei 101
|
||||
ns
|
||||
nse 101 nsvci 101
|
||||
nse 101 remote-ip 192.168.100.239
|
||||
nse 101 remote-port 7777
|
||||
nse 101 remote-role sgsn
|
||||
|
|
Loading…
Reference in New Issue