forgot the header files in last commit. sigh.

diff --git a/include/openbsc/gsm_04_08.h b/include/openbsc/gsm_04_08.h
index 5fa92fa..edff769 100644
--- a/include/openbsc/gsm_04_08.h
+++ b/include/openbsc/gsm_04_08.h
@@ -480,6 +480,7 @@
 
 struct msgb;
 struct gsm_bts;
+struct gsm_subscriber;
 
 /* config options controlling the behaviour of the lower leves */
 void gsm0408_allow_everyone(int allow);
@@ -488,7 +489,7 @@
 int gsm0408_rcvmsg(struct msgb *msg);
 void gsm0408_generate_lai(struct gsm48_loc_area_id *lai48, u_int16_t mcc, 
 		u_int16_t mnc, u_int16_t lac);
-int gsm48_cc_tx_setup(struct gsm_lchan *lchan);
+int gsm48_cc_tx_setup(struct gsm_lchan *lchan, struct gsm_subscriber *calling);
 enum gsm_chan_t get_ctype_by_chreq(struct gsm_bts *bts, u_int8_t ra);
 enum gsm_chreq_reason_t get_reason_by_chreq(struct gsm_bts *bts, u_int8_t ra);
 
@@ -499,4 +500,9 @@
 
 int gsm48_send_rr_release(struct gsm_lchan *lchan);
 
+/* convert a ASCII phone number to call-control BCD */
+int encode_bcd_number(u_int8_t *bcd_lv, u_int8_t max_len,
+		      u_int8_t type, const char *input);
+u_int8_t decode_bcd_number(char *output, int output_len, const u_int8_t *bcd_lv);
+
 #endif
diff --git a/include/openbsc/gsm_data.h b/include/openbsc/gsm_data.h
index 2048abc..25da171 100644
--- a/include/openbsc/gsm_data.h
+++ b/include/openbsc/gsm_data.h
@@ -17,6 +17,12 @@
 
 enum gsm_hooks {
 	GSM_HOOK_NM_SWLOAD,
+	GSM_HOOK_RR_PAGING,
+};
+
+enum gsm_paging_event {
+	GSM_PAGING_SUCCEEDED,
+	GSM_PAGING_EXPIRED,
 };
 
 struct msgb;
@@ -63,6 +69,8 @@
 
 	/* the 'local' subscriber */
 	struct gsm_subscriber *subscr;
+	/* the 'remote' subscriber */
+	struct gsm_subscriber *called_subscr;
 };
 
 
@@ -212,13 +220,22 @@
  * A pending paging request 
  */
 struct gsm_paging_request {
+	/* list_head for list of all paging requests */
 	struct llist_head entry;
+	/* the subscriber which we're paging. Later gsm_paging_request
+	 * should probably become a part of the gsm_subscriber struct? */
 	struct gsm_subscriber *subscr;
+	/* back-pointer to the BTS on which we are paging */
 	struct gsm_bts *bts;
+	/* what kind of channel type do we ask the MS to establish */
 	int chan_type;
 
 	/* Timer 3113: how long do we try to page? */
 	struct timer_list T3113;
+
+	/* callback to be called in case paging completes */
+	gsm_cbfn *cbfn;
+	void *cbfn_param;
 };
 #define T3113_VALUE	60, 0
 
diff --git a/include/openbsc/paging.h b/include/openbsc/paging.h
index 0e5a0d4..8fdae02 100644
--- a/include/openbsc/paging.h
+++ b/include/openbsc/paging.h
@@ -33,7 +33,8 @@
 void paging_init(struct gsm_bts *bts);
 
 /* schedule paging request */
-void paging_request(struct gsm_bts *bts, struct gsm_subscriber *subscr, int type);
+void paging_request(struct gsm_bts *bts, struct gsm_subscriber *subscr,
+		    int type, gsm_cbfn *cbfn, void *data);
 
 /* stop paging requests */
 void paging_request_stop(struct gsm_bts *bts, struct gsm_subscriber *subscr);