X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=lcr.git;a=blobdiff_plain;f=gsm_bs.cpp;h=bf8bf6466bd58a5a7370f128f5af9b75be4b71de;hp=fafe7f6ae1e77cfb1cebb9671d931285cc66b870;hb=3a8f58ec8946b7f1683208d1cc3b054486f12e6c;hpb=a12d7eee22a72f4c999535892763dde15212e89e diff --git a/gsm_bs.cpp b/gsm_bs.cpp index fafe7f6..bf8bf64 100644 --- a/gsm_bs.cpp +++ b/gsm_bs.cpp @@ -10,6 +10,7 @@ \*****************************************************************************/ #include "main.h" +#include "config.h" #ifndef _GNU_SOURCE #define _GNU_SOURCE @@ -24,6 +25,8 @@ extern "C" { #include #include #include +#include +//#include struct gsm_network *bsc_gsmnet = 0; extern int ipacc_rtp_direct; extern int bsc_bootstrap_network(int (*mmc_rev)(struct gsm_network *, int, void *), @@ -37,10 +40,36 @@ int bts_model_unknown_init(void); int bts_model_bs11_init(void); int bts_model_nanobts_init(void); static struct log_target *stderr_target; +extern const char *openbsc_copyright; /* timer to store statistics */ #define DB_SYNC_INTERVAL 60, 0 static struct timer_list db_sync_timer; + +/* FIXME: copied from the include file, because it will con compile with C++ */ +struct vty_app_info { + const char *name; + const char *version; + const char *copyright; + void *tall_ctx; + int (*go_parent_cb)(struct vty *vty); + int (*is_config_node)(struct vty *vty, int node); +}; + +extern int bsc_vty_go_parent(struct vty *vty); +extern int bsc_vty_is_config_node(struct vty *vty, int node); +static struct vty_app_info vty_info = { + "OpenBSC", + PACKAGE_VERSION, + NULL, + NULL, + bsc_vty_go_parent, + bsc_vty_is_config_node, +}; + +void vty_init(struct vty_app_info *app_info); +int bsc_vty_init(void); + } /* timer handling */ @@ -407,7 +436,7 @@ static int message_bsc(struct gsm_network *net, int msg_type, void *arg) if (msg_type == GSM_TCHF_FRAME) { if (port) - pgsm_bs->frame_receive((struct gsm_trau_frame *)arg); + pgsm_bs->frame_receive(arg); return 0; } @@ -754,6 +783,8 @@ int gsm_bs_init(void) mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH; int pcapfd, rc; + vty_info.copyright = openbsc_copyright; + log_init(&log_info); tall_bsc_ctx = talloc_named_const(NULL, 1, "openbsc"); talloc_ctx_init(); @@ -770,6 +801,10 @@ int gsm_bs_init(void) /* enable filters */ log_set_all_filter(stderr_target, 1); + /* Init VTY (need to preceed options) */ + vty_init(&vty_info); + bsc_vty_init(); + /* set debug */ if (gsm->conf.debug[0]) log_parse_category_mask(stderr_target, gsm->conf.debug); @@ -791,6 +826,19 @@ int gsm_bs_init(void) /* use RTP proxy for audio streaming */ ipacc_rtp_direct = 0; + /* bootstrap network */ + if (gsm->conf.openbsc_cfg[0] == '/') + SCPY(cfg, gsm->conf.openbsc_cfg); + else + SPRINT(cfg, "%s/%s", CONFIG_DATA, gsm->conf.openbsc_cfg); + rc = bsc_bootstrap_network(&message_bsc, cfg); + if (rc < 0) { + PERROR("Failed to bootstrap GSM network.\n"); + return gsm_exit(-1); + } + bsc_api_init(bsc_gsmnet, msc_bsc_api()); + gsm->network = bsc_gsmnet; + /* init database */ if (gsm->conf.hlr[0] == '/') SCPY(hlr, gsm->conf.hlr); @@ -812,18 +860,6 @@ int gsm_bs_init(void) db_sync_timer.data = NULL; bsc_schedule_timer(&db_sync_timer, DB_SYNC_INTERVAL); - /* bootstrap network */ - if (gsm->conf.openbsc_cfg[0] == '/') - SCPY(cfg, gsm->conf.openbsc_cfg); - else - SPRINT(cfg, "%s/%s", CONFIG_DATA, gsm->conf.openbsc_cfg); - rc = bsc_bootstrap_network(&message_bsc, cfg); - if (rc < 0) { - PERROR("Failed to bootstrap GSM network.\n"); - return gsm_exit(-1); - } - gsm->network = bsc_gsmnet; - return 0; }