Add an option to set the global reject cause

This will need to be moved into bsc_hack.c together with the
policy to accept/reject a UPDATING LOCATION REQUEST.
diff --git a/src/bsc_hack.c b/src/bsc_hack.c
index fe3431e..39301e6 100644
--- a/src/bsc_hack.c
+++ b/src/bsc_hack.c
@@ -674,6 +674,7 @@
 	printf("  -c --country-code number (MCC) \n");
 	printf("  -l --database db-name The database to use\n");
 	printf("  -a --authorize-everyone Allow everyone into the network.\n");
+	printf("  -r --reject-cause number The reject cause for LOCATION UPDATING REJECT.\n");
 	printf("  -h --help this text\n");
 }
 
@@ -689,10 +690,11 @@
 			{"country-code", 1, 0, 'c'},
 			{"database", 1, 0, 'l'},
 			{"authorize-everyone", 0, 0, 'a'},
+			{"reject-cause", 1, 0, 'r'},
 			{0, 0, 0, 0}
 		};
 
-		c = getopt_long(argc, argv, "hc:n:d:sa",
+		c = getopt_long(argc, argv, "hc:n:d:sar:",
 				long_options, &option_index);
 		if (c == -1)
 			break;
@@ -720,6 +722,9 @@
 		case 'a':
 			gsm0408_allow_everyone(1);
 			break;
+		case 'r':
+			gsm0408_set_reject_cause(atoi(optarg));
+			break;
 		default:
 			/* ignore */
 			break;
diff --git a/src/gsm_04_08.c b/src/gsm_04_08.c
index 80aeaa4..65d2f64 100644
--- a/src/gsm_04_08.c
+++ b/src/gsm_04_08.c
@@ -59,6 +59,12 @@
 	authorize_everonye = everyone;
 }
 
+static int reject_cause = 0;
+void gsm0408_set_reject_cause(int cause)
+{
+	reject_cause = cause;
+}
+
 static int authorize_subscriber(struct gsm_subscriber *subscriber)
 {
 	if (!subscriber)
@@ -360,8 +366,7 @@
 {
 	struct gsm_lchan *lchan = data;
 
-	/* 0x16 is congestion */
-	gsm0408_loc_upd_rej(lchan, 0x04);
+	gsm0408_loc_upd_rej(lchan, reject_cause);
 	rsl_chan_release(lchan);
 }