ggsn: cmdline: no need to specify interface anymore

--gtpnl is now gone, instead you have --gtpkernel that behaves as an on/off
toggle. We full rely on the kernel routing base to select the real device to
transmit.

I have updated ggsn/cmdline.ggo and then run 'gengetopt' to refresh the
automatic code generation for command line options that openggsn uses.
diff --git a/ggsn/cmdline.c b/ggsn/cmdline.c
index a4c25d8..31c0744 100644
--- a/ggsn/cmdline.c
+++ b/ggsn/cmdline.c
@@ -1,7 +1,7 @@
 /*
-  File autogenerated by gengetopt version 2.22.5
+  File autogenerated by gengetopt version 2.22.6
   generated with the following command:
-  gengetopt --conf-parser 
+  gengetopt -i cmdline.ggo --conf-parser 
 
   The developers of gengetopt consider the fixed text that goes in all
   gengetopt output files to be in the public domain:
@@ -29,6 +29,8 @@
 
 const char *gengetopt_args_info_usage = "Usage: " CMDLINE_PARSER_PACKAGE " [OPTIONS]...";
 
+const char *gengetopt_args_info_versiontext = "";
+
 const char *gengetopt_args_info_description = "";
 
 const char *gengetopt_args_info_help[] = {
@@ -37,8 +39,8 @@
   "  -f, --fg               Run in foreground  (default=off)",
   "  -d, --debug            Run in debug mode  (default=off)",
   "  -c, --conf=STRING      Read configuration file  (default=`/etc/ggsn.conf')",
-  "      --pidfile=STRING   Filename of process id file  \n                           (default=`/var/run/ggsn.pid')",
-  "      --statedir=STRING  Directory of nonvolatile data  \n                           (default=`/var/lib/ggsn/')",
+  "      --pidfile=STRING   Filename of process id file\n                           (default=`/var/run/ggsn.pid')",
+  "      --statedir=STRING  Directory of nonvolatile data\n                           (default=`/var/lib/ggsn/')",
   "  -l, --listen=STRING    Local interface",
   "  -n, --net=STRING       Network  (default=`192.168.0.0/24')",
   "      --ipup=STRING      Script to run after link-up",
@@ -52,7 +54,7 @@
   "  -q, --qos=INT          Requested quality of service  (default=`0x0b921f')",
   "      --logfile=STRING   Logfile for errors",
   "      --loglevel=STRING  Global log ldevel  (default=`error')",
-  "  -g, --gtpnl=STRING     GTP kernel support  (default=`eth0')",
+  "  -g, --gtp-linux        GTP linux kernel support  (default=off)",
     0
 };
 
@@ -122,7 +124,7 @@
   args_info->qos_given = 0 ;
   args_info->logfile_given = 0 ;
   args_info->loglevel_given = 0 ;
-  args_info->gtpnl_given = 0 ;
+  args_info->gtp_linux_given = 0 ;
 }
 
 static
@@ -163,8 +165,7 @@
   args_info->logfile_orig = NULL;
   args_info->loglevel_arg = gengetopt_strdup ("error");
   args_info->loglevel_orig = NULL;
-  args_info->gtpnl_arg = gengetopt_strdup ("eth0");
-  args_info->gtpnl_orig = NULL;
+  args_info->gtp_linux_flag = 0;
   
 }
 
@@ -193,7 +194,7 @@
   args_info->qos_help = gengetopt_args_info_help[17] ;
   args_info->logfile_help = gengetopt_args_info_help[18] ;
   args_info->loglevel_help = gengetopt_args_info_help[19] ;
-  args_info->gtpnl_help = gengetopt_args_info_help[19] ;
+  args_info->gtp_linux_help = gengetopt_args_info_help[20] ;
   
 }
 
@@ -203,6 +204,9 @@
   printf ("%s %s\n",
      (strlen(CMDLINE_PARSER_PACKAGE_NAME) ? CMDLINE_PARSER_PACKAGE_NAME : CMDLINE_PARSER_PACKAGE),
      CMDLINE_PARSER_VERSION);
+
+  if (strlen(gengetopt_args_info_versiontext) > 0)
+    printf("\n%s\n", gengetopt_args_info_versiontext);
 }
 
 static void print_help_common(void) {
@@ -304,8 +308,6 @@
   free_string_field (&(args_info->logfile_orig));
   free_string_field (&(args_info->loglevel_arg));
   free_string_field (&(args_info->loglevel_orig));
-  free_string_field (&(args_info->gtpnl_arg));
-  free_string_field (&(args_info->gtpnl_orig));
   
   
 
@@ -376,8 +378,8 @@
     write_into_file(outfile, "logfile", args_info->logfile_orig, 0);
   if (args_info->loglevel_given)
     write_into_file(outfile, "loglevel", args_info->loglevel_orig, 0);
-  if (args_info->gtpnl_given)
-    write_into_file(outfile, "gtpnl", args_info->gtpnl_orig, 0);
+  if (args_info->gtp_linux_given)
+    write_into_file(outfile, "gtp-linux", 0, 0 );
   
 
   i = EXIT_SUCCESS;
@@ -602,7 +604,7 @@
 {
   int c;	/* Character of the parsed option.  */
 
-  int error = 0;
+  int error_occurred = 0;
   struct gengetopt_args_info local_args_info;
   
   int override;
@@ -652,11 +654,11 @@
         { "qos",	1, NULL, 'q' },
         { "logfile",	1, NULL, 0 },
         { "loglevel",	1, NULL, 0 },
-        { "gtpnl",	1, NULL, 'g' },
+        { "gtp-linux",	0, NULL, 'g' },
         { 0,  0, 0, 0 }
       };
 
-      c = getopt_long (argc, argv, "hVfdc:l:n:a:q:g:", long_options, &option_index);
+      c = getopt_long (argc, argv, "hVfdc:l:n:a:q:g", long_options, &option_index);
 
       if (c == -1) break;	/* Exit from `while (1)' loop.  */
 
@@ -752,14 +754,12 @@
             goto failure;
         
           break;
-        case 'g':	/* GTP kernel support.  */
+        case 'g':	/* GTP linux kernel support.  */
         
         
-          if (update_arg( (void *)&(args_info->gtpnl_arg), 
-               &(args_info->gtpnl_orig), &(args_info->gtpnl_given),
-              &(local_args_info.gtpnl_given), optarg, 0, "eth0", ARG_STRING,
-              check_ambiguity, override, 0, 0,
-              "gtpnl", 'g',
+          if (update_arg((void *)&(args_info->gtp_linux_flag), 0, &(args_info->gtp_linux_given),
+              &(local_args_info.gtp_linux_given), optarg, 0, 0, ARG_FLAG,
+              check_ambiguity, override, 1, 0, "gtp-linux", 'g',
               additional_error))
             goto failure;
         
@@ -937,7 +937,7 @@
 
   cmdline_parser_release (&local_args_info);
 
-  if ( error )
+  if ( error_occurred )
     return (EXIT_FAILURE);
 
   return 0;
diff --git a/ggsn/cmdline.ggo b/ggsn/cmdline.ggo
index 47ff102..7426707 100644
--- a/ggsn/cmdline.ggo
+++ b/ggsn/cmdline.ggo
@@ -34,5 +34,5 @@
 option  "logfile"     - "Logfile for errors"            string no
 option  "loglevel"    - "Global log ldevel"		string default="error" no
 
-option  "gtpnl"       g "GTP kernel support"            string default="eth0" no
+option  "gtp-linux"   g "GTP linux kernel support"      flag	off
 
diff --git a/ggsn/cmdline.h b/ggsn/cmdline.h
index 150fb4d..57f5cae 100644
--- a/ggsn/cmdline.h
+++ b/ggsn/cmdline.h
@@ -1,6 +1,6 @@
 /** @file cmdline.h
  *  @brief The header file for the command line option parser
- *  generated by GNU Gengetopt version 2.22.5
+ *  generated by GNU Gengetopt version 2.22.6
  *  http://www.gnu.org/software/gengetopt.
  *  DO NOT modify this file, since it can be overwritten
  *  @author GNU Gengetopt by Lorenzo Bettini */
@@ -95,9 +95,8 @@
   char * loglevel_arg;	/**< @brief Global log ldevel (default='error').  */
   char * loglevel_orig;	/**< @brief Global log ldevel original value given at command line.  */
   const char *loglevel_help; /**< @brief Global log ldevel help description.  */
-  char * gtpnl_arg;	/**< @brief GTP kernel support (default='eth0').  */
-  char * gtpnl_orig;	/**< @brief GTP kernel support original value given at command line.  */
-  const char *gtpnl_help; /**< @brief GTP kernel support help description.  */
+  int gtp_linux_flag;	/**< @brief GTP linux kernel support (default=off).  */
+  const char *gtp_linux_help; /**< @brief GTP linux kernel support help description.  */
   
   unsigned int help_given ;	/**< @brief Whether help was given.  */
   unsigned int version_given ;	/**< @brief Whether version was given.  */
@@ -119,7 +118,7 @@
   unsigned int qos_given ;	/**< @brief Whether qos was given.  */
   unsigned int logfile_given ;	/**< @brief Whether logfile was given.  */
   unsigned int loglevel_given ;	/**< @brief Whether loglevel was given.  */
-  unsigned int gtpnl_given ;	/**< @brief Whether gtpnl was given.  */
+  unsigned int gtp_linux_given ;	/**< @brief Whether gtp-linux was given.  */
 
 } ;
 
@@ -137,6 +136,8 @@
 extern const char *gengetopt_args_info_purpose;
 /** @brief the usage string of the program */
 extern const char *gengetopt_args_info_usage;
+/** @brief the description string of the program */
+extern const char *gengetopt_args_info_description;
 /** @brief all the lines making the help output */
 extern const char *gengetopt_args_info_help[];
 
diff --git a/ggsn/ggsn.c b/ggsn/ggsn.c
index 9e8e213..7725016 100644
--- a/ggsn/ggsn.c
+++ b/ggsn/ggsn.c
@@ -260,8 +260,8 @@
 			printf("pidfile: %s\n", args_info.pidfile_arg);
 		if (args_info.statedir_arg)
 			printf("statedir: %s\n", args_info.statedir_arg);
-		if (args_info.gtpnl_arg)
-			printf("gtpnl: %s\n", args_info.gtpnl_arg);
+		if (args_info.gtp_linux_flag)
+			printf("gtp_linux: %d\n", args_info.gtp_linux_flag);
 		printf("timelimit: %d\n", args_info.timelimit_arg);
 	}
 
@@ -322,8 +322,8 @@
 			printf("pidfile: %s\n", args_info.pidfile_arg);
 		if (args_info.statedir_arg)
 			printf("statedir: %s\n", args_info.statedir_arg);
-		if (args_info.gtpnl_arg)
-			printf("gtpnl: %s\n", args_info.gtpnl_arg);
+		if (args_info.gtp_linux_flag)
+			printf("gtp-linux: %d\n", args_info.gtp_linux_flag);
 		printf("timelimit: %d\n", args_info.timelimit_arg);
 	}
 
diff --git a/ggsn/gtp-kernel.c b/ggsn/gtp-kernel.c
index 9b298ef..93dea23 100644
--- a/ggsn/gtp-kernel.c
+++ b/ggsn/gtp-kernel.c
@@ -94,7 +94,7 @@
 		    struct in_addr *mask,
 		    struct gengetopt_args_info *args_info)
 {
-	if (!args_info->gtpnl_given)
+	if (!args_info->gtp_linux_given)
 		return 0;
 
 	if (gtp_dev_create(-1, GTP_DEVNAME, gsn->fd0, gsn->fd1u) < 0) {