diff options
author | Holger Freyther <zecke@selfish.org> | 2008-12-31 18:53:57 +0000 |
---|---|---|
committer | Holger Freyther <zecke@selfish.org> | 2008-12-31 18:53:57 +0000 |
commit | 73487a23da124d841886e83329d5e108b9d5d48e (patch) | |
tree | c4e5beb3736ed1db07d0ca56539ccc8af85afba5 /include/openbsc/gsm_data.h | |
parent | 41ed300aabfb341482f0255f19f320a9e4882540 (diff) |
Introduce logical updating request operation on the gsm_lchan
We are going to have logical operations like Phone Call, SMS,
Paging, Updating Request on a logical channel and for each of
these operations we might need to store state. For now pointers
in gsm_lchan look like the best way of doing this and we start
by introducing an operation for the location updating request.
The new flow of things are:
- We get the location updating request and update/create
the subscriber and maybe send the identity requests to
the mobile station
- We start the updating timer, if it times out we will
reject the mobile station.
- Once we get the Identity Responses we have asked for
and the reject timer did not fire yet we might accept
the user.
Diffstat (limited to 'include/openbsc/gsm_data.h')
-rw-r--r-- | include/openbsc/gsm_data.h | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/include/openbsc/gsm_data.h b/include/openbsc/gsm_data.h index 986f33127..30e8b4617 100644 --- a/include/openbsc/gsm_data.h +++ b/include/openbsc/gsm_data.h @@ -82,6 +82,19 @@ enum gsm_chreq_reason_t { GSM_CHREQ_REASON_OTHER, }; +/* + * LOCATION UPDATING REQUEST state + * + * Our current operation is: + * - Get imei/tmsi + * - Accept/Reject according to global policy + */ +struct gsm_loc_updating_operation { + struct timer_list updating_timer; + int waiting_for_imsi : 1; + int waiting_for_imei : 1; +}; + struct gsm_lchan { /* The TS that we're part of */ struct gsm_bts_trx_ts *ts; @@ -94,7 +107,6 @@ struct gsm_lchan { /* Timer started to release the channel */ struct timer_list release_timer; - struct timer_list updating_timer; /* local end of a call, if any */ struct gsm_call call; @@ -102,9 +114,13 @@ struct gsm_lchan { /* temporary user data, to be removed... and merged into gsm_call */ void *user_data; + /* + * Operations that have a state and might be pending + */ + struct gsm_loc_updating_operation *loc_operation; + /* use count. how many users use this channel */ unsigned int use_count; - unsigned int pending_update_request : 1; }; #define BTS_TRX_F_ACTIVATED 0x0001 |