[mobile] Adding security warning, if default IMEI is not changed
[osmocom-bb.git] / src / host / layer23 / src / mobile / app_mobile.c
index a1b4731..164f3ed 100644 (file)
 #include <osmocom/bb/mobile/mncc.h>
 #include <osmocom/vty/telnet_interface.h>
 
-#include <osmocore/msgb.h>
-#include <osmocore/talloc.h>
-#include <osmocore/select.h>
-#include <osmocore/signal.h>
+#include <osmocom/core/msgb.h>
+#include <osmocom/core/talloc.h>
+#include <osmocom/core/select.h>
+#include <osmocom/core/signal.h>
+
+#include <l1ctl_proto.h>
 
 extern void *l23_ctx;
 extern struct llist_head ms_list;
@@ -143,8 +145,7 @@ int mobile_exit(struct osmocom_ms *ms, int force)
        gsm_subscr_exit(ms);
        gsm48_cc_exit(ms);
        gsm_sim_exit(ms);
-       lapdm_exit(&ms->l2_entity.lapdm_acch);
-       lapdm_exit(&ms->l2_entity.lapdm_dcch);
+       lapdm_channel_exit(&ms->lapdm_channel);
 
        ms->shutdown = 2; /* being down */
        vty_notify(ms, NULL);
@@ -159,8 +160,11 @@ int mobile_init(struct osmocom_ms *ms)
 {
        int rc;
 
-       lapdm_init(&ms->l2_entity.lapdm_dcch, ms);
-       lapdm_init(&ms->l2_entity.lapdm_acch, ms);
+       gsm_settings_arfcn(ms);
+
+       lapdm_channel_init(&ms->lapdm_channel, LAPDM_MODE_MS);
+       lapdm_channel_set_l1(&ms->lapdm_channel, l1ctl_ph_prim_cb, ms);
+
        gsm_sim_init(ms);
        gsm48_cc_init(ms);
        gsm_subscr_init(ms);
@@ -199,6 +203,13 @@ int mobile_init(struct osmocom_ms *ms)
        ms->shutdown = 0;
        ms->started = 0;
 
+       if (!strcmp(ms->settings.imei, "000000000000000")) {
+               printf("***\nWarning: Mobile '%s' has default IMEI: %s\n",
+                       ms->name, ms->settings.imei);
+               printf("This could relate your identitiy to other users with "
+                       "default IMEI.\n***\n");
+       }
+
        l1ctl_tx_reset_req(ms, L1CTL_RES_T_FULL);
        printf("Mobile '%s' initialized, please start phone now!\n", ms->name);
        return 0;
@@ -329,9 +340,9 @@ int l23_app_work(int *_quit)
 /* global exit */
 int l23_app_exit(void)
 {
-       unregister_signal_handler(SS_L1CTL, &gsm322_l1_signal, NULL);
-       unregister_signal_handler(SS_L1CTL, &mobile_signal_cb, NULL);
-       unregister_signal_handler(SS_GLOBAL, &global_signal_cb, NULL);
+       osmo_signal_unregister_handler(SS_L1CTL, &gsm322_l1_signal, NULL);
+       osmo_signal_unregister_handler(SS_L1CTL, &mobile_signal_cb, NULL);
+       osmo_signal_unregister_handler(SS_GLOBAL, &global_signal_cb, NULL);
 
        osmo_gps_close();
 
@@ -375,9 +386,9 @@ int l23_app_init(int (*mncc_recv)(struct osmocom_ms *ms, int, void *),
                return rc;
        printf("VTY available on port %u.\n", vty_port);
 
-       register_signal_handler(SS_GLOBAL, &global_signal_cb, NULL);
-       register_signal_handler(SS_L1CTL, &mobile_signal_cb, NULL);
-       register_signal_handler(SS_L1CTL, &gsm322_l1_signal, NULL);
+       osmo_signal_register_handler(SS_GLOBAL, &global_signal_cb, NULL);
+       osmo_signal_register_handler(SS_L1CTL, &mobile_signal_cb, NULL);
+       osmo_signal_register_handler(SS_L1CTL, &gsm322_l1_signal, NULL);
 
        if (llist_empty(&ms_list)) {
                struct osmocom_ms *ms;