struct gsm322_cellsel *cs = &ms->cellsel;
struct gsm48_sysinfo *s = &cs->sel_si;
struct gsm_subscriber *subscr = &ms->subscr;
+ struct gsm_settings *set = &ms->settings;
struct msgb *nmsg;
int msg_type;
return 0;
}
+ /* deny network, if disabled */
+ if (set->no_lupd) {
+ LOGP(DMM, LOGL_INFO, "Loc. upd. disabled, adding "
+ "forbidden PLMN.\n");
+ gsm_subscr_add_forbidden_plmn(subscr, cs->sel_mcc,
+ cs->sel_mnc, GSM48_REJECT_PLMN_NOT_ALLOWED);
+ msg_type = GSM322_EVENT_ROAMING_NA;
+ goto stop;
+ }
+
/* if LAI is forbidden, don't start */
if (gsm_subscr_is_forbidden_plmn(subscr, cs->sel_mcc, cs->sel_mnc)) {
LOGP(DMM, LOGL_INFO, "Loc. upd. not allowed PLMN.\n");
uint8_t cause, uint8_t cm_serv)
{
struct gsm_subscriber *subscr = &ms->subscr;
- struct gsm_settings *settings = &ms->settings;
+ struct gsm_settings *set = &ms->settings;
struct msgb *nmsg;
struct gsm48_hdr *ngh;
struct gsm48_service_request *nsr; /* NOTE: includes MI length */
gsm48_rr_enc_cm2(ms, (struct gsm48_classmark2 *)(cm2lv + 1));
/* MI */
if (!subscr->sim_valid) { /* have no SIM ? */
- if (settings->emergency_imsi[0])
+ if (set->emergency_imsi[0])
gsm48_generate_mid_from_imsi(buf,
- settings->emergency_imsi);
+ set->emergency_imsi);
else
gsm48_encode_mi(buf, NULL, ms, GSM_MI_TYPE_IMEI);
} else if (subscr->tmsi_valid) /* have TMSI ? */
VTY_NEWLINE);
else
vty_out(vty, " no stick%s", VTY_NEWLINE);
+ if (set->no_lupd)
+ vty_out(vty, " no location-updating%s", VTY_NEWLINE);
+ else
+ vty_out(vty, " location-updating%s", VTY_NEWLINE);
vty_out(vty, "exit%s", VTY_NEWLINE);
vty_out(vty, "!%s", VTY_NEWLINE);
}
return CMD_SUCCESS;
}
+DEFUN(cfg_ms_lupd, cfg_ms_lupd_cmd, "location-updating",
+ "Allow location updating")
+{
+ struct osmocom_ms *ms = vty->index;
+
+ ms->settings.no_lupd = 0;
+
+ return CMD_SUCCESS;
+}
+
+DEFUN(cfg_ms_no_lupd, cfg_ms_no_lupd_cmd, "no location-updating",
+ NO_STR "Do not allow location updating")
+{
+ struct osmocom_ms *ms = vty->index;
+
+ ms->settings.no_lupd = 1;
+
+ return CMD_SUCCESS;
+}
+
/* per testsim config */
DEFUN(cfg_ms_testsim, cfg_ms_testsim_cmd, "test-sim",
"Configure test SIM emulation")
install_element(MS_NODE, &cfg_ms_no_sim_delay_cmd);
install_element(MS_NODE, &cfg_ms_stick_cmd);
install_element(MS_NODE, &cfg_ms_no_stick_cmd);
+ install_element(MS_NODE, &cfg_ms_lupd_cmd);
+ install_element(MS_NODE, &cfg_ms_no_lupd_cmd);
install_node(&testsim_node, config_write_dummy);
install_default(TESTSIM_NODE);