/* 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 fg_flag;	/* Run in foreground (default=off).  */
  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 fg_given ;	/* Whether fg 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 */
