/* 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').  */
  char * imsi_arg;	/* IMSI (default='240010123456789').  */
  int nsapi_arg;	/* NSAPI (default='1').  */
  char * msisdn_arg;	/* Mobile Station ISDN number (default='46702123456').  */
  int qos_arg;	/* Requested quality of service (default='0x0b921f').  */
  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 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 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 */
