Unite the acked/nacked handling in a common response...
diff --git a/src/bsc_hack.c b/src/bsc_hack.c
index a0b635d..6091b5d 100644
--- a/src/bsc_hack.c
+++ b/src/bsc_hack.c
@@ -52,8 +52,7 @@
 static void bsc_hack_update_request_accepted(struct gsm_bts *bts, u_int32_t assigned_tmi);
 static void bsc_hack_channel_allocated(struct gsm_lchan *chan,
 			enum gsm_chreq_reason_t reason);
-static void bsc_hack_channel_acked(struct gsm_lchan *chan);
-static void bsc_hack_channel_nacked(struct gsm_lchan *chan);
+static void bsc_hack_channel_response(struct gsm_lchan *chan, int acked);
 
 
 /* The following definitions are for OM and NM packets that we cannot yet
@@ -645,8 +644,7 @@
 	bts->trx[0].arfcn = HARDCODED_ARFCN;
 	gsmnet->update_request_accepted = bsc_hack_update_request_accepted;
 	gsmnet->channel_allocated = bsc_hack_channel_allocated;
-	gsmnet->channel_acked = bsc_hack_channel_acked;
-	gsmnet->channel_nacked = bsc_hack_channel_nacked;
+	gsmnet->channel_response = bsc_hack_channel_response;
 
 	if (mi_setup(bts, 0, mi_cb) < 0)
 		return -EIO;
@@ -840,7 +838,7 @@
 	del_timer(&pag_timer);
 }
 
-static void bsc_hack_channel_acked(struct gsm_lchan *lchan)
+static void bsc_hack_channel_response(struct gsm_lchan *lchan, int ack)
 {
 	struct pending_registered_station *station;
 	if (llist_empty(&pending_stations)) {
@@ -856,37 +854,20 @@
 		return;
 	}
 
-	DEBUGP(DPAG, "We have probably paged a channel for tmsi: %u on %d\n",
-			station->tmsi, lchan->nr);
+	if (ack) {
+		DEBUGP(DPAG, "We have probably paged a channel for tmsi: %u on %d\n",
+				station->tmsi, lchan->nr);
 		
-	llist_del(&station->entry);
-	free(station);
-}
-
-/* failed... remove from the list */
-static void bsc_hack_channel_nacked(struct gsm_lchan *lchan)
-{
-	struct pending_registered_station *station;
-	if (llist_empty(&pending_stations)) {
-		DEBUGP(DPAG, "Channel nacked but nothing pending\n");
-		return;
+		llist_del(&station->entry);
+		free(station);
+	} else {
+		/*
+		 * give up and go to the next channel
+		*/
+		llist_del(&station->entry);
+		free(station);
+		pag_timer_cb(0);
 	}
-
-	station = (struct pending_registered_station*) pending_stations.next;
-	if (station->tmsi != (u_int32_t)lchan->user_data) {
-		DEBUGP(DPAG, "Hmmm the channel is not allocated by the"
-					 "station we wanted channel: %u us:%u\n",
-					  (u_int32_t)(lchan->user_data), station->tmsi);
-		return;
-	}
-
-
-	/*
-	 * give up and go to the next channel
-	 */
-	llist_del(&station->entry);
-	free(station);
-	pag_timer_cb(0);
 }
 
 int main(int argc, char **argv)