---
# Copyright 2018-present Open Networking Foundation
# Copyright 2018 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

apiVersion: v1
kind: ConfigMap
metadata:
  name: ngiccp-config
data:
  adc_rules.cfg: |
    [GLOBAL]
    NUM_ADC_RULES = 5

    ;FORMAT ::
    ;ADC_TYPE : [ DOMAIN = 0 | IP = 1 | IP PREFIX =2 ]
    ;
    ;if ADC_TYPE = 0
    ;   DOMAIN
    ;elseif ADC_TYPE = 1
    ;   IP
    ;elseif ADC_TYPE = 2
    ;   IP
    ;   PREFIX
    ;else
    ;   NONE
    ;
    ;NOTE :
    ;Rules defined first have a higher priority, unless DROP is specified
    ;(i.e. multiple rules for the same IP).
    ;When specifying DROP with an IP address, use a prefix of 32 to prevent DNS
    ;results from overwriting rule.


    [ADC_RULE_1]
    ADC_TYPE = 2
    IP = 0.0.0.0
    PREFIX = 0

    [ADC_RULE_2]
    ADC_TYPE = 2
    IP = 13.1.1.0
    PREFIX = 24

    [ADC_RULE_3]
    ADC_TYPE = 1
    IP = 13.1.1.254

    [ADC_RULE_4]
    ADC_TYPE = 0
    DOMAIN = www.example.gov

    [ADC_RULE_5]
    ADC_TYPE = 0
    DOMAIN = www.drop_example.com
  cdr.cfg: |
    CDR_PATH=./cdr
    MASTER_CDR=./cdr/master.csv
  cp_config.cfg: |
    if [ ! -d "/dev/hugepages" ]; then
        MEMORY="--no-huge -m $((MEM_LIMIT-1024))"
    fi

    MGMT_INFO="-s ${SGW_S11_IP} -m ${MME_S11_IP} -w ${SGW_S1U_IP}"
    APN_INFO="-i ${IP_POOL_IP} -p ${IP_POOL_MASK} -a ${APN}"
    SPGW_CFG="-d 03 -l 2 -r 7.7.7.7 -g 6.6.6.6 -v 4.4.4.4  -u 5.5.5.5"

    TEID_INFO="-t ${S11_TEID_POOL_START} -e ${S11_TEID_POOL_STOP} -q ${S1U_TEID_POOL_START} -o ${S1U_TEID_POOL_STOP}"
    APP_ARGS="${MGMT_INFO} ${APN_INFO} ${SPGW_CFG} ${TEID_INFO}"

    CORES="-c $(taskset -p $$ | awk '{print $NF}')"
    DEVICES="--no-pci"
    EAL_ARGS="${CORES} ${MEMORY} ${DEVICES}"
  dp_config.cfg: |
    get_pcimac_addr () {
        ifname=$1
        cid="$(sed -ne '/hostname/p' /proc/1/task/1/mountinfo | awk -F '/' '{print $6}' |tr -d " " )"
        cid="$cid-$ifname"
        eval "export $2=$(awk -F '"' '{print $4}' /sriov-cni/$cid)"
        eval "export $3=$(awk -F '"' '{print $8}' /sriov-cni/$cid)"
        eval "export $4=$(awk -F '"' '{print $12}' /sriov-cni/$cid)"
    }

    if [ -d "/sriov-cni" ]; then
        echo "================== SR-IOV FOUND ============"
        get_pcimac_addr s1u-net SGW_S1U_PCI S1U_MAC SGW_S1U_IP
        get_pcimac_addr sgi-net SGW_SGI_PCI SGI_MAC SGW_SGI_IP
        DEVICES="-w $SGW_S1U_PCI -w $SGW_SGI_PCI"
        SHARED_DIR="/opt/ngic/config/shared"
        echo $SGW_S1U_IP > ${SHARED_DIR}/SGW_S1U_IP
    else #dev --vdev af_packt
        echo "vdev (AF_PACKET)"
        # set the variables we provide
        SGW_S1U_IP=$(netstat -ie | grep -A1 s1u-net | tail -1 | awk '{print $2}' | tr -d addr:)
        SGW_SGI_IP=$(netstat -ie | grep -A1 sgi-net | tail -1 | awk '{print $2}' | tr -d addr:)
        S1U_MAC=$( netstat -ie | grep -B1 $SGW_S1U_IP | head -n1 | awk '{print $5}' )
        SGI_MAC=$( netstat -ie | grep -B1 $SGW_SGI_IP | head -n1 | awk '{print $5}' )

        DEVICES="--no-pci --vdev eth_af_packet0,iface=s1u-net --vdev eth_af_packet1,iface=sgi-net"
    fi

    if [ ! -d "/dev/hugepages" ]; then
        MEMORY="--no-huge -m $((MEM_LIMIT-1024))"
    fi

    CORES="-c $(taskset -p $$ | awk '{print $NF}')"
    SPGW_CFG="--spgw_cfg 03"
    EAL_ARGS="${CORES} ${MEMORY} ${DEVICES}"

    S1U="--s1u_ip ${SGW_S1U_IP} --s1u_mac ${S1U_MAC}"
    SGI="--sgi_ip ${SGW_SGI_IP} --sgi_mac ${SGI_MAC} --sgi_gw_ip ${RTR_SGI_IP} --sgi_mask ${SGI_MASK}"
    WORKERS="--num_workers 1"
    MISC="--log 1"
    APP_ARGS="${S1U} ${SGI} ${WORKERS} ${MISC} ${SPGW_CFG}"
  interface.cfg: |
    [0]
    dp_comm_ip = {{ .Values.spgwu_s11_ip }}
    dp_comm_port = {{ .Values.spgwu_port }}
    cp_comm_ip = 127.0.0.1
    cp_comm_port = 21
  meter_profile.cfg: |
    [GLOBAL]
    NUM_OF_IDX = 7
    
    [ENTRY_1]
    ;Committed Information Rate (CIR). Measured in bytes per second.
    ;MBR is mapped into CIR, convert MBR from bits to Bytes and set CIR.
    CIR = 2342400
    ;Committed Burst Size unit = Bytes
    CBS = 5856
    ;Excess Burst Size unit = Bytes
    EBS = 11712
    ;Meter profile index. Refer this index in static_pcc.cfg to set AMBR/MBR
    MTR_PROFILE_IDX = 3
    
    [ENTRY_2]
    ;1200 = 1756800
    ;1400 = 2049600
    ;1600 = 2342400
    CIR = 2342400
    CBS = 5856
    EBS = 11712
    MTR_PROFILE_IDX = 4
    
    [ENTRY_3]
    ; QCI5,QCI7 15.571kbps = 1947 B
    CIR = 2342400
    CBS = 5856
    EBS = 11712
    MTR_PROFILE_IDX = 5

    [ENTRY_4]
    ; QCI1, 44kbps = 5500 B
    CIR = 2342400
    CBS = 5856
    EBS = 11712
    MTR_PROFILE_IDX = 6

    [ENTRY_5]
    ; QCI9, 31.143kbps = 3893 B
    CIR = 2342400
    CBS = 5856
    EBS = 11712
    MTR_PROFILE_IDX = 7

    [ENTRY_6]
    ; 128B, 7pps
    CIR = 2342400
    CBS = 512
    EBS = 1024
    MTR_PROFILE_IDX = 8

    [ENTRY_7]
    ; 128B, 2pps
    CIR = 2342400
    CBS = 512
    EBS = 1024
    MTR_PROFILE_IDX = 9

  pcc_rules.cfg: |
    [GLOBAL]
    NUM_PCC_FILTERS = 9
    ;To config AMBR/MBR values refer meter_profile.cfg. specify only the
    ;meter profile index to be set here.
    UL_AMBR_MTR_PROFILE_IDX = 3
    DL_AMBR_MTR_PROFILE_IDX = 4
    
    ;default filter - must be first for now (until DP doesn't install any filters)
    ;associated with default adc rule
    [PCC_FILTER_1]
    RULE_NAME = DefaultRule
    RATING_GROUP = 9
    SERVICE_ID = 0
    RULE_STATUS = 0
    GATE_STATUS = 1
    SESSION_CONT = 0
    REPORT_LEVEL = 1
    CHARGING_MODE = 0
    METERING_METHOD = 0
    MUTE_NOTIFY = 0
    MONITORING_KEY = 0
    SPONSOR_ID = 0
    REDIRECT_INFO = 0
    PRECEDENCE = 254
    DROP_PKT_COUNT = 0
    ;Specify the meter profile index from meter_profile.cfg
    UL_MBR_MTR_PROFILE_IDX = 7
    DL_MBR_MTR_PROFILE_IDX = 7
    ;List of ADC filter indices
    SDF_FILTER_IDX = 99998
    
    [PCC_FILTER_2]
    RULE_NAME = sdf_rule_1
    RATING_GROUP = 5
    SERVICE_ID = 0
    RULE_STATUS = 0
    GATE_STATUS = 1
    SESSION_CONT = 0
    REPORT_LEVEL = 2
    CHARGING_MODE = 0
    METERING_METHOD = 0
    MUTE_NOTIFY = 0
    MONITORING_KEY = 0
    SPONSOR_ID = 0
    REDIRECT_INFO = 0
    PRECEDENCE = 1
    DROP_PKT_COUNT = 0
    UL_MBR_MTR_PROFILE_IDX = 5
    DL_MBR_MTR_PROFILE_IDX = 5
    ;List of SDF filter indices
    SDF_FILTER_IDX = 1
    
    [PCC_FILTER_3]
    RULE_NAME = sdf_rule_2
    RATING_GROUP = 1
    SERVICE_ID = 0
    RULE_STATUS = 0
    GATE_STATUS = 1
    SESSION_CONT = 0
    REPORT_LEVEL = 3
    CHARGING_MODE = 0
    METERING_METHOD = 0
    MUTE_NOTIFY = 0
    MONITORING_KEY = 0
    SPONSOR_ID = 0
    REDIRECT_INFO = 0
    PRECEDENCE = 18
    DROP_PKT_COUNT = 0
    UL_MBR_MTR_PROFILE_IDX = 6
    DL_MBR_MTR_PROFILE_IDX = 6
    ;List of SDF filter indices
    SDF_FILTER_IDX = 2
    
    [PCC_FILTER_4]
    RULE_NAME = adc_rule_1
    RATING_GROUP = Zero-Rate
    SERVICE_ID = Internet
    RULE_STATUS = 0
    GATE_STATUS = 1
    SESSION_CONT = 0
    REPORT_LEVEL = 8
    CHARGING_MODE = 0
    METERING_METHOD = 0
    MUTE_NOTIFY = 0
    MONITORING_KEY = 0
    REDIRECT_INFO = 0
    SPONSOR_ID = Example
    PRECEDENCE = 15
    DROP_PKT_COUNT = 0
    UL_MBR_MTR_PROFILE_IDX = 7
    DL_MBR_MTR_PROFILE_IDX = 7
    ;List of SDF filter indices
    ADC_FILTER_IDX = 1
    
    [PCC_FILTER_5]
    RULE_NAME = adc_rule_2
    RATING_GROUP = 0
    SERVICE_ID = CIPA
    RULE_STATUS = 0
    GATE_STATUS = 1
    SESSION_CONT = 0
    REPORT_LEVEL = 9
    CHARGING_MODE = 0
    METERING_METHOD = 0
    MUTE_NOTIFY = 0
    MONITORING_KEY = 0
    SPONSOR_ID = Example
    REDIRECT_INFO = 0
    SPONSOR_ID = Example
    REDIRECT_INFO = 0
    PRECEDENCE = 4
    DROP_PKT_COUNT = 0
    UL_MBR_MTR_PROFILE_IDX = 0
    DL_MBR_MTR_PROFILE_IDX = 0
    ;List of SDF filter indices
    ADC_FILTER_IDX = 2
    
    [PCC_FILTER_6]
    RULE_NAME = sdf_rule_3
    RATING_GROUP = 7
    SERVICE_ID = 0
    RULE_STATUS = 0
    GATE_STATUS = 1
    SESSION_CONT = 0
    REPORT_LEVEL = 4
    CHARGING_MODE = 0
    METERING_METHOD = 0
    MUTE_NOTIFY = 0
    MONITORING_KEY = 0
    SPONSOR_ID = 0
    REDIRECT_INFO = 0
    PRECEDENCE = 17
    DROP_PKT_COUNT = 0
    UL_MBR_MTR_PROFILE_IDX = 5
    DL_MBR_MTR_PROFILE_IDX = 5
    ;List of SDF filter indices
    SDF_FILTER_IDX = 3
    
    [PCC_FILTER_7]
    RULE_NAME = adc_rule_3
    RATING_GROUP = Zero-Rate
    SERVICE_ID = Internet
    RULE_STATUS = 0
    GATE_STATUS = 1
    SESSION_CONT = 0
    REPORT_LEVEL = 5
    CHARGING_MODE = 0
    METERING_METHOD = 0
    MUTE_NOTIFY = 0
    MONITORING_KEY = 0
    SPONSOR_ID = Example
    REDIRECT_INFO = 0
    PRECEDENCE = 210
    DROP_PKT_COUNT = 0
    UL_MBR_MTR_PROFILE_IDX = 7
    DL_MBR_MTR_PROFILE_IDX = 7
    ;List of SDF filter indices
    ADC_FILTER_IDX = 4
    
    [PCC_FILTER_8]
    RULE_NAME = adc_rule_4
    RATING_GROUP = Zero-Rate
    SERVICE_ID = Management
    RULE_STATUS = 0
    GATE_STATUS = 1
    SESSION_CONT = 0
    REPORT_LEVEL = 6
    CHARGING_MODE = 0
    METERING_METHOD = 0
    MUTE_NOTIFY = 0
    MONITORING_KEY = 0
    SPONSOR_ID = Example
    REDIRECT_INFO = 0
    PRECEDENCE = 200
    DROP_PKT_COUNT = 0
    UL_MBR_MTR_PROFILE_IDX = 7
    DL_MBR_MTR_PROFILE_IDX = 7
    ;List of SDF filter indices
    ADC_FILTER_IDX = 12
    
    [PCC_FILTER_9]
    RULE_NAME = adc_rule_5
    RATING_GROUP = Zero-Rate
    SERVICE_ID = Provisioning
    RULE_STATUS = 0
    GATE_STATUS = 1
    SESSION_CONT = 0
    REPORT_LEVEL = 7
    CHARGING_MODE = 0
    METERING_METHOD = 0
    MUTE_NOTIFY = 0
    MONITORING_KEY = 0
    SPONSOR_ID = Example
    REDIRECT_INFO = 0
    PRECEDENCE = 220
    DROP_PKT_COUNT = 0
    UL_MBR_MTR_PROFILE_IDX = 7
    DL_MBR_MTR_PROFILE_IDX = 7
    ;List of SDF filter indices
    ADC_FILTER_IDX = 3
  sdf_rules.cfg: |
    [GLOBAL]
    NUM_SDF_FILTERS = 4
    
    [SDF_FILTER_1]
    DIRECTION = downlink_only
    IPV4_REMOTE = 13.2.1.113
    IPV4_REMOTE_MASK = 255.255.255.0
    PROTOCOL = 17
    LOCAL_LOW_LIMIT_PORT = 0
    LOCAL_HIGH_LIMIT_PORT = 65535
    REMOTE_LOW_LIMIT_PORT = 0
    REMOTE_HIGH_LIMIT_PORT = 65535
    
    [SDF_FILTER_2]
    DIRECTION = uplink_only
    IPV4_LOCAL = 16.255.255.0
    IPV4_LOCAL_MASK = 255.255.255.0
    PROTOCOL = 17
    LOCAL_LOW_LIMIT_PORT = 0
    LOCAL_HIGH_LIMIT_PORT = 65535
    REMOTE_LOW_LIMIT_PORT = 0
    REMOTE_HIGH_LIMIT_PORT = 65535
    
    [SDF_FILTER_3]
    DIRECTION = downlink_only
    IPV4_REMOTE = 130.10.0.0
    IPV4_REMOTE_MASK = 255.255.0.0
    PROTOCOL = 17
    REMOTE_LOW_LIMIT_PORT = 5060
    REMOTE_HIGH_LIMIT_PORT = 5060
    
    [SDF_FILTER_4]
    DIRECTION = uplink_only
    IPV4_REMOTE = 103.1.0.0
    IPV4_REMOTE_MASK = 255.255.0.0
    PROTOCOL = 17
    LOCAL_LOW_LIMIT_PORT = 17000
    LOCAL_HIGH_LIMIT_PORT = 17010

---
apiVersion: v1
kind: ConfigMap
metadata:
  name: cassandra
data:
  cassandra-rackdc.properties: |
    dc=DC1
    rack=RAC1
    prefer_local=true
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: hss
data:
  acl.conf: |
    ALLOW_OLD_TLS   *.cluster.local
  hss.conf: |
    # -------- Local ---------
    # The first parameter in this section is Identity, which will be used to
    # identify this peer in the Diameter network. The Diameter protocol mandates
    # that the Identity used is a valid FQDN for the peer. This parameter can be
    # omitted, in that case the framework will attempt to use system default value
    # (as returned by hostname --fqdn).
    Identity = "HSS_IDENTITY";

    # In Diameter, all peers also belong to a Realm. If the realm is not specified,
    # the framework uses the part of the Identity after the first dot.
    Realm = "HSS_REALM";


    # This parameter is mandatory, even if it is possible to disable TLS for peers
    # connections. A valid certificate for this Diameter Identity is expected.
    TLS_Cred = "./conf/HSS_HOST.cert.pem", "./conf/HSS_HOST.key.pem";
    TLS_CA = "./conf/cacert.pem";


    # Disable use of TCP protocol (only listen and connect in SCTP)
    # Default : TCP enabled
    No_SCTP;


    # This option is ignored if freeDiameter is compiled with DISABLE_SCTP option.
    # Prefer TCP instead of SCTP for establishing new connections.
    # This setting may be overwritten per peer in peer configuration blocs.
    # Default : SCTP is attempted first.
    Prefer_TCP;


    # Disable use of IPv6 addresses (only IP)
    # Default : IPv6 enabled
    No_IPv6;


    # Overwrite the number of SCTP streams. This value should be kept low,
    # especially if you are using TLS over SCTP, because it consumes a lot of
    # resources in that case. See tickets 19 and 27 for some additional details on
    # this.
    # Limit the number of SCTP streams
    SCTP_streams = 3;


    # By default, freeDiameter acts as a Diameter Relay Agent by forwarding all
    # messages it cannot handle locally. This parameter disables this behavior.
    NoRelay;


    # Use RFC3588 method for TLS protection, where TLS is negociated after CER/CEA exchange is completed
    # on the unsecure connection. The alternative is RFC6733 mechanism, where TLS protects also the
    # CER/CEA exchange on a dedicated secure port.
    # This parameter only affects outgoing connections.
    # The setting can be also defined per-peer (see Peers configuration section).
    # Default: use RFC6733 method with separate port for TLS.

    #TLS_old_method;


    # Number of parallel threads that will handle incoming application messages.
    # This parameter may be deprecated later in favor of a dynamic number of threads
    # depending on the load.
    AppServThreads = 4;

    # Specify the addresses on which to bind the listening server. This must be
    # specified if the framework is unable to auto-detect these addresses, or if the
    # auto-detected values are incorrect. Note that the list of addresses is sent
    # in CER or CEA message, so one should pay attention to this parameter if some
    # adresses should be kept hidden.
    #ListenOn = "127.0.0.1";

    Port = {{ .Values.hss.ports.s6a }};
    SecPort = {{ .Values.hss.ports.secs6a }};

    LoadExtension = "acl_wl.fdx" : "./conf/acl.conf";

    # -------- Extensions ---------

    #LoadExtension = "/usr/local/lib/freeDiameter/_sample.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/app_acct.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/app_diameap.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/app_radgw.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/app_redirect.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/app_sip.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dbg_interactive.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dbg_monitor.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dbg_msg_dumps.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dbg_msg_timings.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dbg_rt.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_3gpp2_avps.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_CreditControl.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_CxDx.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_Gx.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_NAS.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_Ro.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_Rx.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_S6mS6n.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_SGd.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_SLh.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_Sd.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_Sh.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_T4.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_T6aT6bT7.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_Tsp.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_dcca.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_dcca_3gpp.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_dcca_starent.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_draftload_avps.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_eap.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_etsi283034_avps.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_legacy_xml.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_mip6a.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_mip6i.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_nas_mipv6.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_nasreq.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc4004_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc4006bis_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc4072_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc4590_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc5447_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc5580_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc5777_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc5778_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc6734_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc6942_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc7155_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc7683_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc7944_avps.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_sip.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29061_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29128_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29154_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29173_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29212_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29214_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29215_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29217_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29229_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29272_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29273_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29329_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29336_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29337_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29338_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29343_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29344_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29345_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29368_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29468_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts32299_avps.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/rt_busypeers.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/rt_default.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/rt_ereg.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/rt_ignore_dh.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/rt_load_balance.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/rt_randomize.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/rt_redirect.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/test_acct.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/test_app.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/test_hss.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/test_netemul.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/test_rt_any.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/test_sip.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_Rf.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_S6as6d.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_S6t.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_S6c.fdx";


    # Load RFC4072 dictionary objects
    #LoadExtension = "dict_eap.fdx";

    # Load the Diameter EAP server extension (requires diameap.conf)
    #LoadExtension = "app_diameap.fdx" : "diameap.conf";

    # Load the Accounting Server extension (requires app_acct.conf)
    #LoadExtension = "app_acct.fdx" : "app_acct.conf";

    # -------- Peers ---------

    # The framework will actively attempt to establish and maintain a connection
    # with the peers listed here.
    # For only accepting incoming connections, see the acl_wl.fx extension.

    #ConnectPeer = "peer1.localdomain" { ConnectTo = "127.0.0.1"; };
  hss.json: |
    {"common": {
        "fdcfg": "conf/hss.conf",
        "originhost": "HSS_IDENTITY",
        "originrealm": "HSS_REALM"
    },
    "hss": {
        "gtwhost": "*",
        "gtwport" : 9080,
        "restport" : 9081,
        "casssrv": "CASSANDRA_ADDR",
        "cassusr": "root",
        "casspwd": "root",
        "cassdb" : "vhss",
        "randv"  : true,
        "optkey" : "63bfa50ee6523365ff14c1f45f88737d",
        "reloadkey"  : true
    }
    }
  launch.sh: |
    #!/bin/bash

    cd /opt/c3po/hss
    cp /etc/hss/conf/{acl.conf,hss.json,hss.conf} conf

    HSS_HOST=$(hostname)
    HSS_DOMAIN=$(dnsdomainname)
    CASSANDRA_ADDR=${CASSANDRA_ADDR:-localhost}

    # from hss.json
    sed -i "s/HSS_IDENTITY/$HSS_HOST.$HSS_DOMAIN/g" conf/hss.json
    sed -i "s/HSS_REALM/$HSS_DOMAIN/g" conf/hss.json
    sed -i "s/CASSANDRA_ADDR/$CASSANDRA_ADDR/g" conf/hss.json

    # from hss.conf
    sed -i "s/HSS_IDENTITY/$HSS_HOST.$HSS_DOMAIN/g" conf/hss.conf
    sed -i "s/HSS_REALM/$HSS_DOMAIN/g" conf/hss.conf
    sed -i "s/HSS_HOST/$HSS_HOST/g" conf/hss.conf

    # If necessary, calculate the OPc value for each UE (User Equipment).
    #./bin/hss -j conf/hss.json --onlyloadkey

    cd conf
    make_certs.sh $(hostname) $(dnsdomainname)
    cd ..

    # finally, launch
    hss -j conf/hss.json
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: mme
data:
  launch.sh: |
    #!/bin/bash

    cd /opt/c3po/mme/bin
    cp /etc/mme/conf/{vbsm_cfg.txt,vbfd.conf} .

    # from vbsm_cfg.txt
    SGW_S11_IP=${SGW_S11_IP:-sgw.localdomain}
    ENB_S1AP_IP=${ENB_S1AP_IP:-enb1.localdomain}
    ENB_S1AP_PORT=${ENB_S1AP_PORT:-36412}
    MME_ETH0_IP=${MME_ETH0_IP:-0.0.0.0}

    # from vbfd.conf
    CONNECT_PEER=${CONNECT_PEER:-hss.localdomain}
    HSS_S6A_IP=${HSS_S6A_IP:-hss.localdomain}
    HSS_PORT=${HSS_PORT:-3868}
    VAR_HSS_REALM=${VAR_HSS_REALM:-openair4G.eur}


    sed -i "s/SGW_S11_IP/$(dig $SGW_S11_IP +short)/g" vbsm_cfg.txt
    sed -i "s/ENB_S1AP_IP/$ENB_S1AP_IP/g" vbsm_cfg.txt
    sed -i "s/ENB_S1AP_PORT/$ENB_S1AP_PORT/g" vbsm_cfg.txt
    sed -i "s/MME_ETH0_IP/$MME_ETH0_IP/g" vbsm_cfg.txt
    sed -i "s/VAR_HSS_HOST/$CONNECT_PEER/g" vbsm_cfg.txt
    sed -i "s/VAR_HSS_REALM/$VAR_HSS_REALM/g" vbsm_cfg.txt


    MME_HOST=$(hostname)
    MME_DOMAIN=$(dnsdomainname)
    sed -i "s/CONNECT_PEER/$CONNECT_PEER/g" vbfd.conf
    sed -i "s/HSS_S6A_IP/$HSS_S6A_IP/g" vbfd.conf
    sed -i "s/HSS_PORT/$HSS_PORT/g" vbfd.conf
    sed -i "s/MME_IDENTITY/$MME_HOST.$MME_DOMAIN/g" vbfd.conf
    sed -i "s/MME_REALM/$MME_DOMAIN/g" vbfd.conf
    sed -i "s/MME_HOST/$MME_HOST/g" vbfd.conf

    # generate the certs
    # ./make_certs.sh mme localdomain
    ./make_certs.sh $MME_HOST $MME_DOMAIN


    # finally, launch
    ./vb_acc
  vbfd.conf: |
    # -------- Test configuration ---------

    # Identity = "<diameter_host>.<diameter_realm>";
    Identity = "MME_IDENTITY";
    Realm = "MME_REALM";
    # Port = 3868;
    # SecPort = 3869;

    ConnectPeer = "CONNECT_PEER" { ConnectTo = "HSS_S6A_IP"; No_TLS; port = HSS_PORT; };

    # TLS_Cred = "<diameter_host>.cert.pem", "<diameter_host>.key.pem";
    TLS_Cred = "MME_HOST.cert.pem",
        "MME_HOST.key.pem";
    TLS_CA = "cacert.pem";

    LoadExtension = "/usr/local/lib/freeDiameter/dict_3gpp2_avps.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_CreditControl.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_base_rfc6733.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_draftload_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_etsi283034_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc4004_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc4006bis_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc4072_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc4590_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc5447_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc5580_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc5777_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc5778_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc6734_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc6942_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc7155_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc7683_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_rfc7944_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29061_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29128_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29154_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29173_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29212_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29214_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29215_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29217_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29229_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29272_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29273_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29329_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29336_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29337_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29338_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29343_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29344_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29345_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29368_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts29468_avps.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_ts32299_avps.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_CxDx.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_Gx.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_NAS.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_Rf.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_Ro.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_Rx.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_S6as6d.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_S6c.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_S6mS6n.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_S6t.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_S9.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_SGd.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_SLh.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_Sd.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_Sh.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_T4.fdx";
    LoadExtension = "/usr/local/lib/freeDiameter/dict_T6aT6bT7.fdx";
    #LoadExtension = "/usr/local/lib/freeDiameter/dict_Tsp.fdx";
  vbsm_cfg.txt: |
    # Configuration file for MME

    #####  NOTE: Please Do NOT change the order of the parameters #####

    # EGTP related
    VBSM_EG_DFLT_PORT                2123                     # EGTP Default port
    VBSM_EG_NONDFLT_PORT             2124                     # EGTP Non Default port
    VBSM_EG_S10_NONDFLT_PORT         2125                     # EGTP Non Default
    VBSM_EG_S3_NONDFLT_PORT          2126                     # EGTP Non Default port for S3 interface towards SGSN
                                                              # port for S10
    VBSM_EG_DFLT_HOST_NAME           "sutlej.ccin.ccpu.com"   # EGTP host name


    # E-NodeB related
    VBSM_ENB_ADDR_1                  "ENB_S1AP_IP"      # IP address of eNodeB
    VBSM_ENB_PORT_1                  "ENB_S1AP_PORT"    # eNodeB port
    #VBSM_ENB_ADDR_2                  "172.26.20.180"    # IP address of eNodeB
    #VBSM_ENB_PORT_2                  36422              # eNodeB port

    # MME related
    VBSM_MME_IPADDR                  "MME_ETH0_IP"    # MME IP address
    VBSM_MME_S1AP_IPADDR             "MME_ETH0_IP"    # MME IP address associated with the S1AP interface
    VBSM_MME_EGTP_IPADDR             "MME_ETH0_IP"    # MME IP address associated with the EGTP interface
    VBSM_MME_SCTP_PORT               {{ .Values.mme.ports.s1ap }}              # MME SCTP port

    VBSM_SGW_IPADDR                  "SGW_S11_IP"   # SGW IP address
    VBSM_PGW_IPADDR                  "192.168.1.105"    # PDN-GW IP address

    VBSM_UE_NUM                      1000             # Support 1000 UE's
    VBSM_SCTP_UDP_SERV_TYPE          0              #service type,default 0 SCTP

    # Debug mask to be set; each represent
    #different debug masks to be set (1 and 0 to unset)
    #in the form |LVB_DBGMASK_INFO|LVB_DBGMASK_ERROR|LVB_DBGMASK_TRC|LVB_DBGMASK_MEM

    VBSM_MME_DBG_MASK                1111
    VBSM_DBG_MASK                    1111
    VBSM_NW_INIATED_DETACH_TIMER     1000

    VBSM_MCC_DIG1         3
    VBSM_MCC_DIG2         0
    VBSM_MCC_DIG3         2

    VBSM_MNC_DIG1         7
    VBSM_MNC_DIG2         2
    VBSM_MNC_DIG3         0

    # Target PLMN ID format [ MCC + MNC], + is concatination operator
    # If MNC has two digits, the last charater shall be 'f'
    # Valid Configurations: 11223f, 112345.
    VBSM_TARGET_MME_PLMN_ID          31310f
    VBSM_TARGET_MME_IP_ADDR          "192.25.1.100"

    VBSM_T3412                        0

    VBSM_SGSN_IP_ADDR                "192.25.1.195"


    VBSM_SGSN_PLMN_ID        31311f

    VBSM_FD_CFG  "vbfd.conf"
    VBSM_HSS_HOST "VAR_HSS_HOST"
    VBSM_HSS_REALM "VAR_HSS_REALM"

    # set VBSM_DISABLE_EPC_DNS 0 - enable DNS,  1 - disable DNS
    VBSM_DISABLE_EPC_DNS 1
    VBSM_DISABLE_EIA0 1
    VBSM_REL_CAP 1
    VBSM_MME_NAME "vmmestandalone"
    VBSM_S1C_SCTP_INSTREAMS 10
    VBSM_S1C_SCTP_OUTSTREAMS 10
    VBSM_MAX_ENB  2
    VBSM_NO_OFGUMMEIS 1
    VBSM_MMECODE  1
    VBSM_MMEGRPID 1
    VBSM_NO_OF_TAI 1
    VBSM_TAI_LIST    {{"{{ 1,2,0,8,0,1,1 }}"}}

    VBSM_SMS_ROUTER_HOST "smsrouter.test3gpp.net"
    VBSM_SMS_ROUTER_REALM "test3gpp.net"
