diff options
Diffstat (limited to 'openbsc/src/bsc_msc_ip.c')
-rw-r--r-- | openbsc/src/bsc_msc_ip.c | 37 |
1 files changed, 21 insertions, 16 deletions
diff --git a/openbsc/src/bsc_msc_ip.c b/openbsc/src/bsc_msc_ip.c index deba7d3ba..9b43d7cea 100644 --- a/openbsc/src/bsc_msc_ip.c +++ b/openbsc/src/bsc_msc_ip.c @@ -59,7 +59,7 @@ static struct log_target *stderr_target; struct gsm_network *bsc_gsmnet = 0; static const char *config_file = "openbsc.cfg"; -static char *msc_address = "127.0.0.1"; +static char *msc_address = NULL; static struct bsc_msc_connection *msc_con; static struct in_addr local_addr; static LLIST_HEAD(active_connections); @@ -938,7 +938,7 @@ static void handle_options(int argc, char** argv) ipacc_rtp_direct = 0; break; case 'm': - msc_address = strdup(optarg); + msc_address = optarg; break; case 'l': inet_aton(optarg, &local_addr); @@ -1030,6 +1030,7 @@ extern int bts_model_nanobts_init(void); int main(int argc, char **argv) { + char *msc; int rc; log_init(&log_info); @@ -1070,20 +1071,6 @@ int main(int argc, char **argv) /* initialize ipaccess handling */ register_signal_handler(SS_ABISIP, handle_abisip_signal, NULL); - - /* setup MSC Connection handling */ - msc_con = bsc_msc_create(msc_address, 5000); - if (!msc_con) { - fprintf(stderr, "Creating a bsc_msc_connection failed.\n"); - exit(1); - } - - msc_con->connection_loss = msc_connection_was_lost; - msc_con->write_queue.read_cb = ipaccess_a_fd_cb; - msc_con->write_queue.write_cb = msc_sccp_do_write; - bsc_msc_connect(msc_con); - - fprintf(stderr, "Bootstraping the network. Sending GSM08.08 reset.\n"); rc = bsc_bootstrap_network(NULL, config_file); if (rc < 0) { @@ -1100,6 +1087,24 @@ int main(int argc, char **argv) } } + /* setup MSC Connection handling */ + msc = bsc_gsmnet->msc_ip; + if (msc_address) + msc = msc_address; + + msc_con = bsc_msc_create(msc, bsc_gsmnet->msc_port); + if (!msc_con) { + fprintf(stderr, "Creating a bsc_msc_connection failed.\n"); + exit(1); + } + + msc_con->connection_loss = msc_connection_was_lost; + msc_con->write_queue.read_cb = ipaccess_a_fd_cb; + msc_con->write_queue.write_cb = msc_sccp_do_write; + bsc_msc_connect(msc_con); + + + while (1) { bsc_select_main(0); } |