diff options
author | jjako <jjako> | 2004-05-27 20:06:36 +0000 |
---|---|---|
committer | jjako <jjako> | 2004-05-27 20:06:36 +0000 |
commit | 7e051d37bb866b5b50b450569ad869f55299f765 (patch) | |
tree | 7b4050625e9bf1b0d63fe15101a6b4ae06ec1a5a /sgsnemu | |
parent | b62c3dd3c40c32c39466d83e589a846707d9ea99 (diff) |
Charging option
Diffstat (limited to 'sgsnemu')
-rw-r--r-- | sgsnemu/cmdline.c | 39 | ||||
-rw-r--r-- | sgsnemu/cmdline.ggo | 1 | ||||
-rw-r--r-- | sgsnemu/cmdline.h | 4 | ||||
-rw-r--r-- | sgsnemu/sgsnemu.c | 14 |
4 files changed, 48 insertions, 10 deletions
diff --git a/sgsnemu/cmdline.c b/sgsnemu/cmdline.c index be47cc1..fa7ad7f 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: - gengetopt --conf-parser + /mnt/hda5/bin/gengetopt --conf-parser The developers of gengetopt consider the fixed text that goes in all gengetopt output files to be in the public domain: @@ -56,9 +56,10 @@ cmdline_parser_print_help (void) printf(" --gtpversion=INT GTP version to use (default='1')\n"); printf(" -aSTRING --apn=STRING Access point name (default='internet')\n"); printf(" -iSTRING --imsi=STRING IMSI (default='240010123456789')\n"); - printf(" --nsapi=INT NSAPI (default='1')\n"); + printf(" --nsapi=INT NSAPI (default='0')\n"); printf(" -mSTRING --msisdn=STRING Mobile Station ISDN number (default='46702123456')\n"); printf(" -qINT --qos=INT Requested quality of service (default='0x0b921f')\n"); + printf(" --charging=INT Charging characteristics (default='0x0800')\n"); printf(" -uSTRING --uid=STRING Login user ID (default='mig')\n"); printf(" -pSTRING --pwd=STRING Login password (default='hemmelig')\n"); printf(" --createif Create local network interface (default=off)\n"); @@ -111,6 +112,7 @@ cmdline_parser (int argc, char * const *argv, struct gengetopt_args_info *args_i args_info->nsapi_given = 0 ; args_info->msisdn_given = 0 ; args_info->qos_given = 0 ; + args_info->charging_given = 0 ; args_info->uid_given = 0 ; args_info->pwd_given = 0 ; args_info->createif_given = 0 ; @@ -136,9 +138,10 @@ cmdline_parser (int argc, char * const *argv, struct gengetopt_args_info *args_i args_info->gtpversion_arg = 1 ;\ args_info->apn_arg = strdup("internet") ;\ args_info->imsi_arg = strdup("240010123456789") ;\ - args_info->nsapi_arg = 1 ;\ + args_info->nsapi_arg = 0 ;\ args_info->msisdn_arg = strdup("46702123456") ;\ args_info->qos_arg = 0x0b921f ;\ + args_info->charging_arg = 0x0800 ;\ args_info->uid_arg = strdup("mig") ;\ args_info->pwd_arg = strdup("hemmelig") ;\ args_info->createif_flag = 0;\ @@ -182,6 +185,7 @@ cmdline_parser (int argc, char * const *argv, struct gengetopt_args_info *args_i { "nsapi", 1, NULL, 0 }, { "msisdn", 1, NULL, 'm' }, { "qos", 1, NULL, 'q' }, + { "charging", 1, NULL, 0 }, { "uid", 1, NULL, 'u' }, { "pwd", 1, NULL, 'p' }, { "createif", 0, NULL, 0 }, @@ -427,6 +431,19 @@ cmdline_parser (int argc, char * const *argv, struct gengetopt_args_info *args_i args_info->nsapi_arg = strtol (optarg,&stop_char,0); break; } + /* Charging characteristics. */ + else if (strcmp (long_options[option_index].name, "charging") == 0) + { + if (args_info->charging_given) + { + fprintf (stderr, "%s: `--charging' option given more than once\n", PACKAGE); + clear_args (); + exit (EXIT_FAILURE); + } + args_info->charging_given = 1; + args_info->charging_arg = strtol (optarg,&stop_char,0); + break; + } /* Create local network interface. */ else if (strcmp (long_options[option_index].name, "createif") == 0) { @@ -850,6 +867,22 @@ cmdline_parser_configfile (char * const filename, struct gengetopt_args_info *ar } continue; } + if (!strcmp(fopt, "charging")) + { + if (override || !args_info->charging_given) + { + args_info->charging_given = 1; + if (fnum == 2) + args_info->charging_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, "uid")) { if (override || !args_info->uid_given) diff --git a/sgsnemu/cmdline.ggo b/sgsnemu/cmdline.ggo index 1d0ea75..203f60b 100644 --- a/sgsnemu/cmdline.ggo +++ b/sgsnemu/cmdline.ggo @@ -34,6 +34,7 @@ option "imsi" i "IMSI" string default="240010 option "nsapi" - "NSAPI" int default="0" no option "msisdn" m "Mobile Station ISDN number" string default="46702123456" no option "qos" q "Requested quality of service" int default="0x0b921f" no +option "charging" - "Charging characteristics" int default="0x0800" no option "uid" u "Login user ID" string default="mig" no option "pwd" p "Login password" string default="hemmelig" no diff --git a/sgsnemu/cmdline.h b/sgsnemu/cmdline.h index 2d9b7e5..7298f17 100644 --- a/sgsnemu/cmdline.h +++ b/sgsnemu/cmdline.h @@ -32,9 +32,10 @@ struct gengetopt_args_info int gtpversion_arg; /* GTP version to use (default='1'). */ char * apn_arg; /* Access point name (default='internet'). */ char * imsi_arg; /* IMSI (default='240010123456789'). */ - int nsapi_arg; /* NSAPI (default='1'). */ + int nsapi_arg; /* NSAPI (default='0'). */ char * msisdn_arg; /* Mobile Station ISDN number (default='46702123456'). */ int qos_arg; /* Requested quality of service (default='0x0b921f'). */ + int charging_arg; /* Charging characteristics (default='0x0800'). */ char * uid_arg; /* Login user ID (default='mig'). */ char * pwd_arg; /* Login password (default='hemmelig'). */ int createif_flag; /* Create local network interface (default=off). */ @@ -65,6 +66,7 @@ struct gengetopt_args_info int nsapi_given ; /* Whether nsapi was given. */ int msisdn_given ; /* Whether msisdn was given. */ int qos_given ; /* Whether qos was given. */ + int charging_given ; /* Whether charging was given. */ int uid_given ; /* Whether uid was given. */ int pwd_given ; /* Whether pwd was given. */ int createif_given ; /* Whether createif was given. */ diff --git a/sgsnemu/sgsnemu.c b/sgsnemu/sgsnemu.c index 388f736..2d281fb 100644 --- a/sgsnemu/sgsnemu.c +++ b/sgsnemu/sgsnemu.c @@ -106,6 +106,7 @@ struct { int gtpversion; struct ul255_t pco; struct ul255_t qos; + uint16_t cch; struct ul255_t apn; struct ul16_t msisdn; } options; @@ -224,6 +225,7 @@ int process_options(int argc, char **argv) { printf("debug: %d\n", args_info.debug_flag); if (args_info.imsi_arg) printf("imsi: %s\n", args_info.imsi_arg); printf("qos: %#08x\n", args_info.qos_arg); + printf("charging: %#04x\n", args_info.charging_arg); if (args_info.apn_arg) printf("apn: %s\n", args_info.apn_arg); if (args_info.msisdn_arg) printf("msisdn: %s\n", args_info.msisdn_arg); if (args_info.uid_arg) printf("uid: %s\n", args_info.uid_arg); @@ -257,6 +259,7 @@ int process_options(int argc, char **argv) { printf("debug: %d\n", args_info.debug_flag); if (args_info.imsi_arg) printf("imsi: %s\n", args_info.imsi_arg); printf("qos: %#08x\n", args_info.qos_arg); + printf("charging: %#04x\n", args_info.charging_arg); if (args_info.apn_arg) printf("apn: %s\n", args_info.apn_arg); if (args_info.msisdn_arg) printf("msisdn: %s\n", args_info.msisdn_arg); if (args_info.uid_arg) printf("uid: %s\n", args_info.uid_arg); @@ -411,6 +414,9 @@ int process_options(int argc, char **argv) { options.qos.v[2] = (args_info.qos_arg) & 0xff; options.qos.v[1] = ((args_info.qos_arg) >> 8) & 0xff; options.qos.v[0] = ((args_info.qos_arg) >> 16) & 0xff; + + /* charging */ + options.cch = args_info.charging_arg; /* contexts */ if (args_info.contexts_arg > MAXCONTEXTS) { @@ -1168,12 +1174,8 @@ int main(int argc, char **argv) pdp->hisaddr0 = options.remote; pdp->hisaddr1 = options.remote; - /* TODO: This could be an option */ - pdp->cch_pdp = 2048; /* Normal charging 3GPP 32.015 */ - /* 2048 = Normal - 1024 = Prepaid - 0512 = Flat rate - 0256 = Hot billing */ + pdp->cch_pdp = options.cch; /* 2048 = Normal, 1024 = Prepaid, + 512 = Flat rate, 256 = Hot billing */ /* Create context */ /* We send this of once. Retransmissions are handled by gtplib */ |