aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src
diff options
context:
space:
mode:
Diffstat (limited to 'openbsc/src')
-rw-r--r--openbsc/src/gsm_data.c2
-rw-r--r--openbsc/src/gsm_subscriber.c2
-rw-r--r--openbsc/src/vty_interface.c7
3 files changed, 9 insertions, 2 deletions
diff --git a/openbsc/src/gsm_data.c b/openbsc/src/gsm_data.c
index 9db246cec..a50ba8c20 100644
--- a/openbsc/src/gsm_data.c
+++ b/openbsc/src/gsm_data.c
@@ -274,7 +274,7 @@ struct gsm_bts *gsm_bts_by_lac(struct gsm_network *net, unsigned int lac,
continue;
}
- if (lac == 0 || bts->location_area_code == lac)
+ if (lac == GSM_LAC_RESERVED_ALL_BTS || bts->location_area_code == lac)
return bts;
}
return NULL;
diff --git a/openbsc/src/gsm_subscriber.c b/openbsc/src/gsm_subscriber.c
index a4e35c7b1..c81b522d4 100644
--- a/openbsc/src/gsm_subscriber.c
+++ b/openbsc/src/gsm_subscriber.c
@@ -105,7 +105,7 @@ int subscr_update(struct gsm_subscriber *s, struct gsm_bts *bts, int reason)
case GSM_SUBSCRIBER_UPDATE_DETACHED:
/* Only detach if we are currently in this area */
if (bts->location_area_code == s->lac)
- s->lac = 0;
+ s->lac = GSM_LAC_RESERVED_DETACHED;
dispatch_signal(SS_SUBSCR, S_SUBSCR_DETACHED, s);
break;
default:
diff --git a/openbsc/src/vty_interface.c b/openbsc/src/vty_interface.c
index 79124d934..d6f1bb54e 100644
--- a/openbsc/src/vty_interface.c
+++ b/openbsc/src/vty_interface.c
@@ -872,6 +872,13 @@ DEFUN(cfg_bts_lac,
lac, VTY_NEWLINE);
return CMD_WARNING;
}
+
+ if (lac == GSM_LAC_RESERVED_DETACHED || lac == GSM_LAC_RESERVED_ALL_BTS) {
+ vty_out(vty, "%% LAC %d is reserved by GSM 04.08%s",
+ lac, VTY_NEWLINE);
+ return CMD_WARNING;
+ }
+
bts->location_area_code = lac;
return CMD_SUCCESS;