aboutsummaryrefslogtreecommitdiffstats
path: root/sgsnemu
diff options
context:
space:
mode:
authorjjako <jjako>2004-07-20 08:30:21 +0000
committerjjako <jjako>2004-07-20 08:30:21 +0000
commit1a51df711157545307f842f575ecb305f528deab (patch)
tree84b6574f450f158925c7d6a4c12269075700cda8 /sgsnemu
parent9b4971d4a64af27c96a31473f0aff2f74b1dbacf (diff)
Added selmode
Diffstat (limited to 'sgsnemu')
-rw-r--r--sgsnemu/cmdline.c35
-rw-r--r--sgsnemu/cmdline.ggo1
-rw-r--r--sgsnemu/cmdline.h2
-rw-r--r--sgsnemu/sgsnemu.c9
4 files changed, 45 insertions, 2 deletions
diff --git a/sgsnemu/cmdline.c b/sgsnemu/cmdline.c
index fa7ad7f..08582c9 100644
--- a/sgsnemu/cmdline.c
+++ b/sgsnemu/cmdline.c
@@ -1,7 +1,7 @@
/*
File autogenerated by gengetopt version 2.8
generated with the following command:
- /mnt/hda5/bin/gengetopt --conf-parser
+ gengetopt --conf-parser
The developers of gengetopt consider the fixed text that goes in all
gengetopt output files to be in the public domain:
@@ -55,6 +55,7 @@ cmdline_parser_print_help (void)
printf(" --timelimit=INT Exit after timelimit seconds (default='0')\n");
printf(" --gtpversion=INT GTP version to use (default='1')\n");
printf(" -aSTRING --apn=STRING Access point name (default='internet')\n");
+ printf(" --selmode=INT Selection mode (default='0x01')\n");
printf(" -iSTRING --imsi=STRING IMSI (default='240010123456789')\n");
printf(" --nsapi=INT NSAPI (default='0')\n");
printf(" -mSTRING --msisdn=STRING Mobile Station ISDN number (default='46702123456')\n");
@@ -108,6 +109,7 @@ cmdline_parser (int argc, char * const *argv, struct gengetopt_args_info *args_i
args_info->timelimit_given = 0 ;
args_info->gtpversion_given = 0 ;
args_info->apn_given = 0 ;
+ args_info->selmode_given = 0 ;
args_info->imsi_given = 0 ;
args_info->nsapi_given = 0 ;
args_info->msisdn_given = 0 ;
@@ -137,6 +139,7 @@ cmdline_parser (int argc, char * const *argv, struct gengetopt_args_info *args_i
args_info->timelimit_arg = 0 ;\
args_info->gtpversion_arg = 1 ;\
args_info->apn_arg = strdup("internet") ;\
+ args_info->selmode_arg = 0x01 ;\
args_info->imsi_arg = strdup("240010123456789") ;\
args_info->nsapi_arg = 0 ;\
args_info->msisdn_arg = strdup("46702123456") ;\
@@ -181,6 +184,7 @@ cmdline_parser (int argc, char * const *argv, struct gengetopt_args_info *args_i
{ "timelimit", 1, NULL, 0 },
{ "gtpversion", 1, NULL, 0 },
{ "apn", 1, NULL, 'a' },
+ { "selmode", 1, NULL, 0 },
{ "imsi", 1, NULL, 'i' },
{ "nsapi", 1, NULL, 0 },
{ "msisdn", 1, NULL, 'm' },
@@ -418,6 +422,19 @@ cmdline_parser (int argc, char * const *argv, struct gengetopt_args_info *args_i
args_info->gtpversion_arg = strtol (optarg,&stop_char,0);
break;
}
+ /* Selection mode. */
+ else if (strcmp (long_options[option_index].name, "selmode") == 0)
+ {
+ if (args_info->selmode_given)
+ {
+ fprintf (stderr, "%s: `--selmode' option given more than once\n", PACKAGE);
+ clear_args ();
+ exit (EXIT_FAILURE);
+ }
+ args_info->selmode_given = 1;
+ args_info->selmode_arg = strtol (optarg,&stop_char,0);
+ break;
+ }
/* NSAPI. */
else if (strcmp (long_options[option_index].name, "nsapi") == 0)
{
@@ -803,6 +820,22 @@ cmdline_parser_configfile (char * const filename, struct gengetopt_args_info *ar
}
continue;
}
+ if (!strcmp(fopt, "selmode"))
+ {
+ if (override || !args_info->selmode_given)
+ {
+ args_info->selmode_given = 1;
+ if (fnum == 2)
+ args_info->selmode_arg = strtol (farg,&stop_char,0);
+ else
+ {
+ fprintf (stderr, "%s:%d: required <option_name> <option_val>\n",
+ filename, line_num);
+ exit (EXIT_FAILURE);
+ }
+ }
+ continue;
+ }
if (!strcmp(fopt, "imsi"))
{
if (override || !args_info->imsi_given)
diff --git a/sgsnemu/cmdline.ggo b/sgsnemu/cmdline.ggo
index 203f60b..c3e2943 100644
--- a/sgsnemu/cmdline.ggo
+++ b/sgsnemu/cmdline.ggo
@@ -30,6 +30,7 @@ option "timelimit" - "Exit after timelimit seconds" int default="0" no
option "gtpversion" - "GTP version to use" int default="1" no
option "apn" a "Access point name" string default="internet" no
+option "selmode" - "Selection mode" int default="0x01" no
option "imsi" i "IMSI" string default="240010123456789" no
option "nsapi" - "NSAPI" int default="0" no
option "msisdn" m "Mobile Station ISDN number" string default="46702123456" no
diff --git a/sgsnemu/cmdline.h b/sgsnemu/cmdline.h
index 7298f17..c462ef0 100644
--- a/sgsnemu/cmdline.h
+++ b/sgsnemu/cmdline.h
@@ -31,6 +31,7 @@ struct gengetopt_args_info
int timelimit_arg; /* Exit after timelimit seconds (default='0'). */
int gtpversion_arg; /* GTP version to use (default='1'). */
char * apn_arg; /* Access point name (default='internet'). */
+ int selmode_arg; /* Selection mode (default='0x01'). */
char * imsi_arg; /* IMSI (default='240010123456789'). */
int nsapi_arg; /* NSAPI (default='0'). */
char * msisdn_arg; /* Mobile Station ISDN number (default='46702123456'). */
@@ -62,6 +63,7 @@ struct gengetopt_args_info
int timelimit_given ; /* Whether timelimit was given. */
int gtpversion_given ; /* Whether gtpversion was given. */
int apn_given ; /* Whether apn was given. */
+ int selmode_given ; /* Whether selmode was given. */
int imsi_given ; /* Whether imsi was given. */
int nsapi_given ; /* Whether nsapi was given. */
int msisdn_given ; /* Whether msisdn was given. */
diff --git a/sgsnemu/sgsnemu.c b/sgsnemu/sgsnemu.c
index 2d281fb..c6cf20d 100644
--- a/sgsnemu/sgsnemu.c
+++ b/sgsnemu/sgsnemu.c
@@ -108,6 +108,7 @@ struct {
struct ul255_t qos;
uint16_t cch;
struct ul255_t apn;
+ uint8_t selmode;
struct ul16_t msisdn;
} options;
@@ -447,6 +448,12 @@ int process_options(int argc, char **argv) {
options.apn.v[0] = (char) strlen(args_info.apn_arg);
strncpy(&options.apn.v[1], args_info.apn_arg, sizeof(options.apn.v)-1);
printf("Using APN: %s\n", args_info.apn_arg);
+
+
+ /* selmode */
+ options.selmode = args_info.selmode_arg;
+ printf("Using selection mode: %d\n", args_info.selmode_arg);
+
/* msisdn */
if (strlen(args_info.msisdn_arg)>(sizeof(options.msisdn.v)-1)) {
@@ -1134,7 +1141,7 @@ int main(int argc, char **argv)
pdp->qos_req.v[0] = 0x00;
memcpy(pdp->qos_req.v+1, options.qos.v, options.qos.l);
- pdp->selmode = 0x01; /* MS provided APN, subscription not verified */
+ pdp->selmode = options.selmode;
if (options.apn.l > sizeof(pdp->apn_use.v)) {
sys_err(LOG_ERR, __FILE__, __LINE__, 0, "APN length too big");