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.
diff --git a/include/openbsc/gsm_data.h b/include/openbsc/gsm_data.h
index 986f331..30e8b46 100644
--- a/include/openbsc/gsm_data.h
+++ b/include/openbsc/gsm_data.h
@@ -82,6 +82,19 @@
 	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 @@
 
 	/* 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 @@
 	/* 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