/* cmdline.h */

/* File autogenerated by gengetopt version 2.8  */

#ifndef _cmdline_h
#define _cmdline_h

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

/* Don't define PACKAGE and VERSION if we use automake.  */
#ifndef PACKAGE
#define PACKAGE ""
#endif

#ifndef VERSION
#define VERSION ""
#endif

struct gengetopt_args_info
{
  int debug_flag;	/* Run in debug mode (default=off).  */
  char * conf_arg;	/* Read configuration file.  */
  char * pidfile_arg;	/* Filename of process id file (default='./sgsnemu.pid').  */
  char * statedir_arg;	/* Directory of nonvolatile data (default='./').  */
  char * dns_arg;	/* DNS Server to use.  */
  char * listen_arg;	/* Local interface.  */
  char * remote_arg;	/* Remote host.  */
  int contexts_arg;	/* Number of contexts (default='1').  */
  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').  */
  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).  */
  char * net_arg;	/* Network address for local interface.  */
  int defaultroute_flag;	/* Create default route (default=off).  */
  char * ipup_arg;	/* Script to run after link-up.  */
  char * ipdown_arg;	/* Script to run after link-down.  */
  char * pinghost_arg;	/* Ping remote host.  */
  int pingrate_arg;	/* Number of ping req per second (default='1').  */
  int pingsize_arg;	/* Number of ping data bytes (default='56').  */
  int pingcount_arg;	/* Number of ping req to send (default='0').  */
  int pingquiet_flag;	/* Do not print ping packet info (default=off).  */

  int help_given ;	/* Whether help was given.  */
  int version_given ;	/* Whether version was given.  */
  int debug_given ;	/* Whether debug was given.  */
  int conf_given ;	/* Whether conf was given.  */
  int pidfile_given ;	/* Whether pidfile was given.  */
  int statedir_given ;	/* Whether statedir was given.  */
  int dns_given ;	/* Whether dns was given.  */
  int listen_given ;	/* Whether listen was given.  */
  int remote_given ;	/* Whether remote was given.  */
  int contexts_given ;	/* Whether contexts was given.  */
  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.  */
  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.  */
  int net_given ;	/* Whether net was given.  */
  int defaultroute_given ;	/* Whether defaultroute was given.  */
  int ipup_given ;	/* Whether ipup was given.  */
  int ipdown_given ;	/* Whether ipdown was given.  */
  int pinghost_given ;	/* Whether pinghost was given.  */
  int pingrate_given ;	/* Whether pingrate was given.  */
  int pingsize_given ;	/* Whether pingsize was given.  */
  int pingcount_given ;	/* Whether pingcount was given.  */
  int pingquiet_given ;	/* Whether pingquiet was given.  */

} ;

int cmdline_parser (int argc, char * const *argv, struct gengetopt_args_info *args_info);

void cmdline_parser_print_help(void);
void cmdline_parser_print_version(void);

int cmdline_parser_configfile (char * const filename, struct gengetopt_args_info *args_info, int override);

#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _cmdline_h */
