##############################################################################
#
# Sample sgsnemu configuration file
#
##############################################################################

# TAG: fg
# Include this flag if process is to run in the foreground
#
fg

# TAG: debug
# Include this flag to include debug information.
#debug


# TAG: conf
# Configuration file to use. This file is the configuration file, 
# so changing this parameter in the configuration file does not make
# sense. Use it on the command line instead.

# TAG: pidfile
# File to store information about the pricess id of the program.
# The program must have write access to this file/directory.
#pidfile ./sgsnemu.pid

# TAG: statedir
# Directory to use for nonvolatile storage. 
# The program must have write access to this directory.
#statedir ./


# TAG: dns
# DNS server to use for ns lookups.
# If this tag is not set the system default DNS will be used.
#dns 10.1.2.3

# TAG: listen
# Specifies the local IP address to listen to
listen 10.0.0.217

# TAG: remote
# Specifies the remote IP address to connect to
# If DNS is setup correctly it should be possible to specify the 
# access point name (APN) as the remote address.
remote 10.0.0.240

# TAG: contexts
# Number of contexts to establish from the emulator to the ggsn.
# Set this tag to zero to not establish any contexts.
#contexts 1

# TAG: timelimit
# Disconnect contexts after timelimit seconds, and exit the program.
# Setting timelimit to zero will cause the program not to disconnect.
#timelimit 0


# TAG: apn
# Access point name to connect to when run in client mode.
#apn internet

# TAG: imsi
# IMSI number used when run in client mode.
#imsi 2400101234567890

# TAG: msisdn
# MSISDN number used when run in client mode.
#msisdn 46702123456

# TAG: qos
# Requested Quality of Service used when run in client mode.
# 3 bytes corresponding to ????
#qos 0x0b921f

# TAG: uid
# User ID used when run in client mode.
#uid mig

# TAG: pwd
# Password used when run in client mode.
#pwd hemlig


# TAG: createif
# Use this flag if you want to set up a local network interface after
# a PDP context has been established.
#createif

# TAG: defaultroute
# Use this flag if you want to add a default route after a network interface
# had been established.
#defaultroute

# TAG: ipup
# Script executed after network interface has been brought up.
# Executed with the following parameters: <devicename> <ip address>
#ipup /etc/sgsnemu/ip-up

# TAG: ipdown
# Script executed after network interface has been taken down.
# Executed with the following parameters: <devicename> <ip address>
#ipdown /etc/sgsnemu/ip-down

# TAG: pinghost
# Ping a remote host through a PDP context by using ICMP echo messages.
# If more than one PDP context has been established the ICMP messages will
# be distributed between all available contexts.
#pinghost 192.168.0.0

# TAG: pingrate
# Number of ping messages to send off each second.
#pingrate 1

# TAG: pingsize
# Size of ICMP echo message payload. Add 28 to get the full IP packet size.
#pingsize 56

# TAG: pingcount
# Number of ping messages to send off.
#pingcount 0

# TAG: pingquiet
# Do not print ping packet info.
#pingquiet





