diff options
Diffstat (limited to 'openbsc/src')
-rw-r--r-- | openbsc/src/gsm_data.c | 2 | ||||
-rw-r--r-- | openbsc/src/gsm_subscriber.c | 2 | ||||
-rw-r--r-- | openbsc/src/vty_interface.c | 7 |
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; |