/* 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').  */
  char * apn_arg;	/* Access point name (default='internet').  */
  char * imsi_arg;	/* IMSI (default='240010123456789').  */
  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).  */
  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 apn_given ;	/* Whether apn was given.  */
  int imsi_given ;	/* Whether imsi 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 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 */
