# OsmoGGSN - Gateway GPRS Support Node
# Copyright (C) 2002, 2003, 2004 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.
#  
# Use
# 	gengetopt --conf-parser < cmdline.ggo
# 	linux-2.6/scripts/Lindent cmdline.c
# 	linux-2.6/scripts/Lindent cmdline.h
# 	sed -i -e 's/int qose1_arg;/unsigned long long int qose1_arg;/' cmdline.h
# to generate cmdline.c and cmdline.h

package "sgsnemu"

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  "gtpversion"   - "GTP version to use"             int    default="1" no
option  "apn"          a "Access point name"              string default="internet" no
option  "selmode"      - "Selection mode"                 int    default="0x01" no
option  "rattype"      - "Radio Access Technology Type"   int    default="1" no typestr="1..5"
option  "userloc"      - "User Location Information"      string    default="02509946241207" no typestr="type.MCC.MNC.LAC.CIorSACorRAC"
option  "rai"          - "Routing Area Information"       string    default="02509946241207" no typestr="MCC.MNC.LAC.RAC"
option  "mstz"         - "MS Time Zone"                   string    default="0" no typestr="sign.NbQuartersOfAnHour.DSTAdjustment"
option  "imeisv"       - "IMEI(SV) International Mobile Equipment Identity (and Software Version)" string default="2143658709214365" no
option  "norecovery"   - "Do not send recovery"           flag off
option  "imsi"         i "IMSI"                           string default="240010123456789" no
option  "nsapi"        - "NSAPI"                          int default="0" no
option  "msisdn"       m "Mobile Station ISDN number"     string default="46702123456" no
option  "qos"          q "Requested quality of service"   int    default="0x000b921f" no
option  "qose1"        - "Requested quality of service Extension 1"   int    default="0x9396404074f9ffff" no
option  "qose2"        - "Requested quality of service Extension 2"   int    default="0x11" no
option  "qose3"        - "Requested quality of service Extension 3"   int    default="0x0101" no
option  "qose4"        - "Requested quality of service Extension 4"   int    default="0x4040" no
option  "charging"     - "Charging characteristics"       int    default="0x0800" 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  "net"          n "Network address for local interface" string no
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
option  "no-tx-gpdu-seq" - "Don't transmit G-PDU sequence nums"   flag    off
option  "pdp-type"     t "PDP Type"                       string default="v4" no typestr="(v4|v6)"
