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);
}