nat: Move MSC ip address into the config..
The address can still be specified on the cli and it will overwrite the config in the config file.
This commit is contained in:
parent
1395948e18
commit
a88742cf5e
|
@ -204,6 +204,7 @@ struct bsc_nat {
|
|||
int mgcp_length;
|
||||
|
||||
/* msc things */
|
||||
char *msc_ip;
|
||||
int first_contact;
|
||||
|
||||
struct bsc_endpoint *bsc_endpoints;
|
||||
|
@ -223,6 +224,7 @@ struct bsc_config *bsc_config_alloc(struct bsc_nat *nat, const char *token, unsi
|
|||
struct bsc_config *bsc_config_num(struct bsc_nat *nat, int num);
|
||||
struct bsc_nat *bsc_nat_alloc(void);
|
||||
struct bsc_connection *bsc_connection_alloc(struct bsc_nat *nat);
|
||||
void bsc_nat_set_msc_ip(struct bsc_nat *bsc, const char *ip);
|
||||
|
||||
void sccp_connection_destroy(struct sccp_connections *);
|
||||
|
||||
|
|
|
@ -51,10 +51,10 @@
|
|||
|
||||
struct log_target *stderr_target;
|
||||
static const char *config_file = "bsc-nat.cfg";
|
||||
static char *msc_address = "127.0.0.1";
|
||||
static struct in_addr local_addr;
|
||||
static struct bsc_msc_connection *msc_con;
|
||||
static struct bsc_fd bsc_listen;
|
||||
static const char *msc_ip = NULL;
|
||||
|
||||
|
||||
static struct bsc_nat *nat;
|
||||
|
@ -782,7 +782,7 @@ static void handle_options(int argc, char** argv)
|
|||
log_set_print_timestamp(stderr_target, 1);
|
||||
break;
|
||||
case 'm':
|
||||
msc_address = strdup(optarg);
|
||||
msc_ip = optarg;
|
||||
break;
|
||||
case 'l':
|
||||
inet_aton(optarg, &local_addr);
|
||||
|
@ -815,10 +815,6 @@ int main(int argc, char** argv)
|
|||
log_add_target(stderr_target);
|
||||
log_set_all_filter(stderr_target, 1);
|
||||
|
||||
/* parse options */
|
||||
local_addr.s_addr = INADDR_ANY;
|
||||
handle_options(argc, argv);
|
||||
|
||||
nat = bsc_nat_alloc();
|
||||
if (!nat) {
|
||||
fprintf(stderr, "Failed to allocate the BSC nat.\n");
|
||||
|
@ -826,6 +822,14 @@ int main(int argc, char** argv)
|
|||
}
|
||||
|
||||
nat->mgcp_cfg = talloc_zero(nat, struct mgcp_config);
|
||||
if (!nat->mgcp_cfg) {
|
||||
fprintf(stderr, "Failed to allocate MGCP cfg.\n");
|
||||
return -5;
|
||||
}
|
||||
|
||||
/* parse options */
|
||||
local_addr.s_addr = INADDR_ANY;
|
||||
handle_options(argc, argv);
|
||||
|
||||
/* init vty and parse */
|
||||
bsc_nat_vty_init(nat);
|
||||
|
@ -835,6 +839,10 @@ int main(int argc, char** argv)
|
|||
return -3;
|
||||
}
|
||||
|
||||
/* over rule the VTY config */
|
||||
if (msc_ip)
|
||||
bsc_nat_set_msc_ip(nat, msc_ip);
|
||||
|
||||
/* seed the PRNG */
|
||||
srand(time(NULL));
|
||||
|
||||
|
@ -845,7 +853,7 @@ int main(int argc, char** argv)
|
|||
return -4;
|
||||
|
||||
/* connect to the MSC */
|
||||
msc_con = bsc_msc_create(msc_address, 5000);
|
||||
msc_con = bsc_msc_create(nat->msc_ip, 5000);
|
||||
if (!msc_con) {
|
||||
fprintf(stderr, "Creating a bsc_msc_connection failed.\n");
|
||||
exit(1);
|
||||
|
|
|
@ -51,9 +51,17 @@ struct bsc_nat *bsc_nat_alloc(void)
|
|||
nat->stats.bsc.reconn = counter_alloc("nat.bsc.conn");
|
||||
nat->stats.bsc.auth_fail = counter_alloc("nat.bsc.auth_fail");
|
||||
nat->stats.msc.reconn = counter_alloc("nat.msc.conn");
|
||||
nat->msc_ip = talloc_strdup(nat, "127.0.0.1");
|
||||
return nat;
|
||||
}
|
||||
|
||||
void bsc_nat_set_msc_ip(struct bsc_nat *nat, const char *ip)
|
||||
{
|
||||
if (nat->msc_ip)
|
||||
talloc_free(nat->msc_ip);
|
||||
nat->msc_ip = talloc_strdup(nat, ip);
|
||||
}
|
||||
|
||||
struct bsc_connection *bsc_connection_alloc(struct bsc_nat *nat)
|
||||
{
|
||||
struct bsc_connection *con = talloc_zero(nat, struct bsc_connection);
|
||||
|
|
|
@ -55,6 +55,7 @@ static int config_write_nat(struct vty *vty)
|
|||
vty_out(vty, " imsi allow %s%s", _nat->imsi_allow, VTY_NEWLINE);
|
||||
if (_nat->imsi_deny)
|
||||
vty_out(vty, " insi deny %s%s", _nat->imsi_deny, VTY_NEWLINE);
|
||||
vty_out(vty, " msc ip %s%s", _nat->msc_ip, VTY_NEWLINE);
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -203,6 +204,15 @@ DEFUN(cfg_nat_imsi_deny,
|
|||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN(cfg_nat_msc_ip,
|
||||
cfg_nat_msc_ip_cmd,
|
||||
"msc ip IP",
|
||||
"Set the IP address of the MSC.")
|
||||
{
|
||||
bsc_nat_set_msc_ip(_nat, argv[0]);
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
/* per BSC configuration */
|
||||
DEFUN(cfg_bsc, cfg_bsc_cmd, "bsc BSC_NR", "Select a BSC to configure\n")
|
||||
{
|
||||
|
@ -316,6 +326,7 @@ int bsc_nat_vty_init(struct bsc_nat *nat)
|
|||
install_default(NAT_NODE);
|
||||
install_element(NAT_NODE, &cfg_nat_imsi_allow_cmd);
|
||||
install_element(NAT_NODE, &cfg_nat_imsi_deny_cmd);
|
||||
install_element(NAT_NODE, &cfg_nat_msc_ip_cmd);
|
||||
|
||||
/* BSC subgroups */
|
||||
install_element(NAT_NODE, &cfg_bsc_cmd);
|
||||
|
|
Loading…
Reference in New Issue