aboutsummaryrefslogtreecommitdiffstats
path: root/include/openbsc/gsm_data.h
diff options
context:
space:
mode:
authorHolger Freyther <zecke@selfish.org>2008-12-31 18:53:57 +0000
committerHolger Freyther <zecke@selfish.org>2008-12-31 18:53:57 +0000
commit73487a23da124d841886e83329d5e108b9d5d48e (patch)
treec4e5beb3736ed1db07d0ca56539ccc8af85afba5 /include/openbsc/gsm_data.h
parent41ed300aabfb341482f0255f19f320a9e4882540 (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.h20
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