#
# logger:
#
#  o Set OGS_LOG_INFO to all domain level
#   - If `level` is omitted, the default level is OGS_LOG_INFO)
#   - If `domain` is omitted, the all domain level is set from 'level'
#    (Nothing is needed)
#
#  o Set OGS_LOG_ERROR to all domain level
#   - `level` can be set with none, fatal, error, warn, info, debug, trace
#    level: error
#
#  o Set OGS_LOG_DEBUG to mme/emm domain level
#    level: debug
#    domain: mme,emm
#
#  o Set OGS_LOG_TRACE to all domain level
#    level: trace
#    domain: core,pfcp,gtp,upf,event,tlv,mem,sock
#
logger:
    file: ${upf.log_filename}
    level: info

#
# upf:
#
#  <PFCP Server>
#
#  o PFCP Server(127.0.0.7:8805, ::1:8805)
#    pfcp:
#      - addr: 127.0.0.7
#      - addr: ::1
#
#  o PFCP-U Server(127.0.0.1:2152, [::1]:2152)
#    pfcp:
#      name: localhost
#
#  <GTP-U Server>>
#
#  o GTP-U Server(127.0.0.7:2152, [::1]:2152)
#    gtpu:
#      - addr: 127.0.0.7
#      - addr: ::1
#
#  o GTP-U Server(127.0.0.1:2152, [::1]:2152)
#    gtpu:
#      name: localhost
#
#  <Subnet for UE network>
#
#  Note that you need to setup your UE network using TUN device.
#  (ogstun, ogstun2, ogstunX, ..)
#
#  o IPv4 Pool
#    $ sudo ip addr add 10.45.0.1/16 dev ogstun
#
#    subnet:
#      addr: 10.45.0.1/16
#
#  o IPv4/IPv6 Pool
#    $ sudo ip addr add 10.45.0.1/16 dev ogstun
#    $ sudo ip addr add 2001:230:cafe::1/48 dev ogstun
#
#    subnet:
#      - addr: 10.45.0.1/16
#      - addr: 2001:230:cafe::1/48
#
#
#  o Specific DNN/APN(e.g 'ims') uses 10.46.0.1/16, 2001:230:babe::1/48
#    All other APNs use 10.45.0.1/16, 2001:230:cafe::1/48
#    $ sudo ip addr add 10.45.0.1/16 dev ogstun
#    $ sudo ip addr add 10.46.0.1/16 dev ogstun
#    $ sudo ip addr add 2001:230:cafe::1/48 dev ogstun
#    $ sudo ip addr add 2001:230:babe::1/48 dev ogstun
#
#    subnet:
#      - addr: 10.45.0.1/16
#        dnn: internet
#      - addr: 2001:230:cafe::1/48
#        dnn: internet
#      - addr: 10.46.0.1/16
#        dnn: ims
#      - addr: 2001:230:babe::1/48
#        dnn: ims
#
#  o Multiple Devices (default: ogstun)
#    $ sudo ip addr add 10.45.0.1/16 dev ogstun
#    $ sudo ip addr add 2001:230:cafe::1/48 dev ogstun2
#    $ sudo ip addr add 10.46.0.1/16 dev ogstun3
#    $ sudo ip addr add 2001:230:babe::1/48 dev ogstun3
#
#    subnet:
#      - addr: 10.45.0.1/16
#        dnn: internet
#      - addr: 2001:230:cafe::1/48
#        dnn: internet
#        dev: ogstun2
#      - addr: 10.46.0.1/16
#        dnn: ims
#        dev: ogstun3
#      - addr: 2001:230:babe::1/48
#        dnn: ims
#        dev: ogstun3
#
upf:
    pfcp:
      - addr: ${epc.addr_upf}
    gtpu:
      - addr: ${epc.run_addr}
        port: 2154
    subnet:
      - addr: ${epc.tun_addr}/16

#
# smf:
#
#  <PFCP Client>>
#
#  o PFCP Client(127.0.0.3:8805)
#
#    pfcp:
#      addr: 127.0.0.3
#
smf:
    pfcp:
      - addr: ${epc.addr_smf}

#
# parameter:
#
#  o Number of output streams per SCTP associations.
#      sctp_streams: 30
#
#  o Disable use of IPv4 addresses (only IPv6)
#      no_ipv4: true
#
#  o Disable use of IPv6 addresses (only IPv4)
#      no_ipv6: true
#
#  o Prefer IPv4 instead of IPv6 for estabishing new GTP connections.
#      prefer_ipv4: true
#
#  o Enable Multicast traffic to the UE
#      multicast: true
#
#  o Disable Stateless Address Autoconfiguration for IPv6
#      no_slaac: true
#
#
parameter:

#
# max:
#
# o Maximum Number of UE per AMF/MME
#    ue: 1024
# o Maximum Number of gNB/eNB per AMF/MME
#    gnb: 32
#
max:

#
# pool:
#
# o The default memory pool size was set assuming 1024 UEs.
#   To connect more UEs, you need to increase the size further.
#
#   - Pool-size 128         => 65536 Number
#   - Pool-size 256         => 16384 Number
#   - Pool-size 512         => 4096 Number
#   - Pool-size 1024        => 1024 Number
#   - Pool-size 2048        => 512 Number
#   - Pool-size 8192        => 128 Number
#   - Pool-size 1024*1024   => 8 Number
#
#    128:  65536
#    256:  16384
#    512:  4096
#    1024: 1024
#    2048: 512
#    8192: 128
#    big:  8
#
pool:

#
# time:
#
#  o Message Wait Duration (Default : 10,000 ms = 10 seconds)
#
#  o Message Wait Duration (3000 ms)
#    message:
#        duration: 3000
time:
