# 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"

defmode "createif"  modedesc="any option of this mode is related to tun interface, \
all payload going in and out  via tunN interface"
defmode "pinghost"  modedesc="generate ICMP payload inside G-PDU without setting up tun interface"

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 host"                     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

modeoption   "createif"     - "Create local network interface" flag   off                           mode="createif"
modeoption   "net"          n "Network address for local interface" string dependon="createif" no   mode="createif"
modeoption   "defaultroute" - "Create default route"           flag   dependon="createif" off       mode="createif"
modeoption   "ipup"         - "Script to run after link-up"    string dependon="createif" no        mode="createif"
modeoption   "ipdown"       - "Script to run after link-down"  string dependon="createif" no        mode="createif"
modeoption   "tun-device"   - "Name of the local network interface" string dependon="createif" no   mode="createif"
modeoption   "netns"        - "Network namespace to use"       string dependon="createif" no        mode="createif"

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

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)"
