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 @@
   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 @@
   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 @@
   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 @@
         { "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 @@
             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 @@
                 }
               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)
