# OpenGGSN - Gateway GPRS Support Node
# Copyright (C) 2002, 2003 Mondru AB.
#  
# The contents of this file may be used under the terms of the GNU
# General Public License Version 2, provided that the above copyright
# notice and this permission notice is included in all copies or
# substantial portions of the software.
#  
# The initial developer of the original code is
# Jens Jakobsen <jj@openggsn.org>
#  
# Contributor(s):
#
#
# Use "gengetopt --conf-parser < cmdline.ggo" 
# to generate cmdline.c and cmdline.h

option  "fg"           f "Run in foreground"              flag   off
option  "debug"        d "Run in debug mode"              flag   off

option  "conf"         c "Read configuration file"        string no
option  "pidfile"      - "Filename of process id file"    string default="./sgsnemu.pid" no
option  "statedir"     - "Directory of nonvolatile data"  string default="./" no

option  "dns"          - "DNS Server to use"              string no
option  "listen"       l "Local interface"                string no
option  "remote"       r "Remote host"                    string no

option  "contexts"     - "Number of contexts"             int    default="1" no
option  "timelimit"    - "Exit after timelimit seconds"   int default="0" no

option  "apn"          a "Access point name"              string default="internet" no
option  "imsi"         i "IMSI"                           string default="240010123456789" no
option  "msisdn"       m "Mobile Station ISDN number"     string default="46702123456" no
option  "qos"          q "Requested quality of service"   int    default="0x0b921f" no
option  "uid"          u "Login user ID"                  string default="mig" no
option  "pwd"          p "Login password"                 string default="hemmelig" no

option  "createif"     - "Create local network interface" flag   off
option  "defaultroute" - "Create default route"           flag   off
option  "ipup"         - "Script to run after link-up"    string no
option  "ipdown"       - "Script to run after link-down"  string no

option  "pinghost"     - "Ping remote host"               string no
option  "pingrate"     - "Number of ping req per second"  int default="1" no
option  "pingsize"     - "Number of ping data bytes"      int default="56" no
option  "pingcount"    - "Number of ping req to send"     int default="0" no
option  "pingquiet"    - "Do not print ping packet info"  flag off

