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.
This commit is contained in:
parent
1bc7de50be
commit
e97f7fba97
|
@ -380,7 +380,10 @@ enum gsm48_reject_value {
|
||||||
struct msgb;
|
struct msgb;
|
||||||
struct gsm_bts;
|
struct gsm_bts;
|
||||||
|
|
||||||
|
/* config options controlling the behaviour of the lower leves */
|
||||||
void gsm0408_allow_everyone(int allow);
|
void gsm0408_allow_everyone(int allow);
|
||||||
|
void gsm0408_set_reject_cause(int cause);
|
||||||
|
|
||||||
int gsm0408_rcvmsg(struct msgb *msg);
|
int gsm0408_rcvmsg(struct msgb *msg);
|
||||||
void gsm0408_generate_lai(struct gsm48_loc_area_id *lai48, u_int16_t mcc,
|
void gsm0408_generate_lai(struct gsm48_loc_area_id *lai48, u_int16_t mcc,
|
||||||
u_int16_t mnc, u_int16_t lac);
|
u_int16_t mnc, u_int16_t lac);
|
||||||
|
|
|
@ -674,6 +674,7 @@ static void print_help()
|
||||||
printf(" -c --country-code number (MCC) \n");
|
printf(" -c --country-code number (MCC) \n");
|
||||||
printf(" -l --database db-name The database to use\n");
|
printf(" -l --database db-name The database to use\n");
|
||||||
printf(" -a --authorize-everyone Allow everyone into the network.\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");
|
printf(" -h --help this text\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -689,10 +690,11 @@ static void handle_options(int argc, char** argv)
|
||||||
{"country-code", 1, 0, 'c'},
|
{"country-code", 1, 0, 'c'},
|
||||||
{"database", 1, 0, 'l'},
|
{"database", 1, 0, 'l'},
|
||||||
{"authorize-everyone", 0, 0, 'a'},
|
{"authorize-everyone", 0, 0, 'a'},
|
||||||
|
{"reject-cause", 1, 0, 'r'},
|
||||||
{0, 0, 0, 0}
|
{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);
|
long_options, &option_index);
|
||||||
if (c == -1)
|
if (c == -1)
|
||||||
break;
|
break;
|
||||||
|
@ -720,6 +722,9 @@ static void handle_options(int argc, char** argv)
|
||||||
case 'a':
|
case 'a':
|
||||||
gsm0408_allow_everyone(1);
|
gsm0408_allow_everyone(1);
|
||||||
break;
|
break;
|
||||||
|
case 'r':
|
||||||
|
gsm0408_set_reject_cause(atoi(optarg));
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
/* ignore */
|
/* ignore */
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -59,6 +59,12 @@ void gsm0408_allow_everyone(int everyone)
|
||||||
authorize_everonye = everyone;
|
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)
|
static int authorize_subscriber(struct gsm_subscriber *subscriber)
|
||||||
{
|
{
|
||||||
if (!subscriber)
|
if (!subscriber)
|
||||||
|
@ -360,8 +366,7 @@ static void loc_upd_rej_cb(void *data)
|
||||||
{
|
{
|
||||||
struct gsm_lchan *lchan = data;
|
struct gsm_lchan *lchan = data;
|
||||||
|
|
||||||
/* 0x16 is congestion */
|
gsm0408_loc_upd_rej(lchan, reject_cause);
|
||||||
gsm0408_loc_upd_rej(lchan, 0x04);
|
|
||||||
rsl_chan_release(lchan);
|
rsl_chan_release(lchan);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue