---

# Copyright 2020-present Open Networking Foundation
#
# 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.

# override ONOS config
onos:
  netcfg: >
    {
      "apps" : {
        "org.opencord.igmpproxy" : {
          "igmpproxy":{
             "FastLeave":"true",
             "LastQueryInterval":1,
             "MaxResp":1,
             "enableIgmpProvisioning":"false",
             "globalConnectPointMode":"true",
             "globalConnectPoint" : "of:0000000000000001/3",
             "sourceDeviceAndPort":"of:0000000000000001/3",
             "outgoingIgmpVlanId":550,
             "outgoingIgmpInnerVlanId":55,
             "outgoingIgmpWithV3":"true",
             "IgmpCos":5,
             "IgmpUniCos":5,
             "PeriodicQuery":"true",
             "KeepAliveInterval":60,
             "KeepAliveCount":5,
             "requestDsIgmpPackets":false
          }
        },
        "org.opencord.dhcpl2relay" : {
          "dhcpl2relay" : {
            "useOltUplinkForServerPktInOut" : true
          }
        },
        "org.opencord.kafka": {
          "kafka" : {
            "bootstrapServers" : "{{ .Release.Name }}-kafka.{{ .Release.Namespace }}.svc:9092"
          }
        },
        "org.opencord.sadis": {
          "sadis": {
            "integration": {
              "url": "http://bbsim-sadis-server.{{ .Release.Namespace }}.svc:58080/subscribers/%s",
              "cache": {
                "enabled": true,
                "maxsize": 50,
                "ttl": "PT1m"
              }
            }
          },
          "bandwidthprofile": {
            "integration": {
              "url": "http://bbsim-sadis-server.{{ .Release.Namespace }}.svc:58080/profiles/%s",
              "cache": {
                "enabled": true,
                "maxsize": 50,
                "ttl": "PT1m"
              }
            }
          }
        }
      }
    }
  componentConfig:
    "org.opencord.olt.impl.OltFlowService": >
      {
        "enableDhcpOnNni": "true",
        "defaultTechProfileId": "64",
        "enableIgmpOnNni": "true",
        "enableEapol": "false",
        "enableDhcpV6": "false",
        "enableDhcpV4": "true"
      }

# override BBSim config
servicesConfig:
  workflow: tt
  services:
    - name: hsia
      uni_tag_match: 35
      c_tag: 900
      c_tag_allocation: unique
      s_tag: 900
      s_tag_allocation: shared
      tp_id: 64
    - name: voip
      uni_tag_match: 65
      c_tag: 444
      c_tag_allocation: shared
      s_tag: 333
      s_tag_allocation: shared
      needs_dhcp: true
      tp_id: 65
      configure_mac_address: true
      us_pon_c_tag_priority: 7
      us_pon_s_tag_priority: 7
      ds_pon_c_tag_priority: 7
      ds_pon_s_tag_priority: 7
    - name: vod
      uni_tag_match: 55
      c_tag: 55
      c_tag_allocation: shared
      s_tag: 555
      s_tag_allocation: shared
      needs_dhcp: true
      needs_igmp: true
      tp_id: 66
      configure_mac_address: true
      us_pon_c_tag_priority: 5
      us_pon_s_tag_priority: 5
      ds_pon_c_tag_priority: 5
      ds_pon_s_tag_priority: 5
    # NOTE: the multicast service must be called MC unless you set
    # multicastServiceName to something else in org.opencord.olt.impl.Olt
    - name: MC
      c_tag: 55
      c_tag_allocation: shared
      s_tag: 550
      s_tag_allocation: shared
      tp_id: 66
      ds_pon_c_tag_priority: 5
      ds_pon_s_tag_priority: 5
