huawei-bras-multicast

Bras multicast.

  • Version: 2020-03-03

    huawei-bras-multicast@2020-03-03


    
      module huawei-bras-multicast {
    
        yang-version 1;
    
        namespace
          'urn:huawei:yang:huawei-bras-multicast';
    
        prefix bras-multicast;
    
        import huawei-aaa {
          prefix aaa;
        }
        import huawei-network-instance {
          prefix ni;
        }
        import ietf-inet-types {
          prefix inet;
        }
        import huawei-extension {
          prefix ext;
        }
        import huawei-l3vpn {
          prefix l3vpn;
        }
        import huawei-ifm {
          prefix ifm;
        }
        import huawei-devm {
          prefix devm;
        }
        import huawei-bras-basic-access {
          prefix bras-basic-access;
        }
    
        organization
          "Huawei Technologies Co., Ltd.";
    
        contact
          "Huawei Industrial Base
         Bantian, Longgang
         Shenzhen 518129
         People's Republic of China
         Website: http://www.huawei.com
         Email: support@huawei.com";
    
        description "Bras multicast.";
    
        revision "2020-03-03" {
          description "Modify description.";
          reference
            "Huawei private.";
    
        }
    
        revision "2019-03-27" {
          description "Init revision.";
          reference
            "Huawei private.";
    
        }
    
        ext:task-name "bras-control";
    
        container bras-multicast {
          description "Bras multicast.";
          container ipv4-multicast-lists {
            description
              "List of the IPv4 multicast.";
            list ipv4-multicast-list {
              key "index";
              unique "name";
              max-elements 8192;
              description
                "Configure an IPv4 multicast list. The group-address and group-mask combination and source-address and source-mask combination of different instances must not overlap.";
              leaf index {
                type uint32 {
                  range "0..8191";
                }
                description
                  "Specifies the index of a multicast list.";
              }
    
              leaf name {
                ext:case-sensitivity "lower-only";
                type string {
                  length "1..32";
                  pattern "[!-~]{1,32}";
                  pattern
                    "([^A-Z\"%'*/:<>\\?@|]{1,32})";
                }
                must
                  "../name != '-' and ../name != '--'";
                mandatory true;
                description
                  "Specifies the name of a multicast list.";
              }
    
              leaf source-address {
                type inet:ipv4-address-no-zone;
                description
                  "Specifies the multicast source address.";
              }
    
              leaf source-mask {
                when "../source-address";
                type uint32 {
                  range "1..32";
                }
                default "32";
                description
                  "Specifies the mask of the multicast source IP address.";
              }
    
              leaf group-address {
                type inet:ipv4-address-no-zone;
                mandatory true;
                description
                  "Specifies the multicast group IP address.";
              }
    
              leaf group-mask {
                type uint32 {
                  range "1..32";
                }
                default "32";
                description
                  "Specifies the mask of the multicast group IP address.";
              }
    
              leaf vpn-instance {
                type leafref {
                  path "/ni:network-instance/ni:instances/ni:instance/ni:name";
                }
                must
                  "/ni:network-instance/ni:instances/ni:instance[ni:name=current()]/l3vpn:afs/l3vpn:af[l3vpn:type='ipv4-unicast']";
                default "_public_";
                description
                  "Specifies the name of a VPN instance.";
              }
            }  // list ipv4-multicast-list
          }  // container ipv4-multicast-lists
    
          container bas-policy {
            presence "Create bas policy.";
            description
              "Configure a multicast BAS policy and displays the policy.";
            container policys {
              description
                "List of the policy and displays the policy.";
              list policy {
                key "name";
                max-elements 1024;
                description
                  "Configure a policy and displays the policy.";
                leaf name {
                  type string {
                    length "1..15";
                    pattern "[a-zA-Z0-9_]{1,15}";
                  }
                  description
                    "Specifies a policy name.";
                }
    
                container channels {
                  description
                    "List of the multicast channel and displays the channel.";
                  list channel {
                    key "name";
                    max-elements 128;
                    description
                      "Configure a multicast channel and displays the channel.";
                    leaf name {
                      type string {
                        length "1..15";
                        pattern
                          "[a-zA-Z0-9_]{1,15}";
                      }
                      must
                        "count(/bras-multicast:bras-multicast/bras-multicast:bas-policy/bras-multicast:policys/bras-multicast:policy/bras-multicast:channels/bras-multicast:channel[bras-multicast:name=current()])=1";
                      description
                        "Specifies a multicast channel name.";
                    }
    
                    container group-sources {
                      description
                        "List of the any-source or source-specific group range, bandwidth occupied by each group, and level of bandwidth resources that a group consumes.";
                      list group-source {
                        key "group-address source-address";
                        max-elements 16;
                        description
                          "Configure an any-source or source-specific group range, bandwidth occupied by each group, and level of bandwidth resources that a group consumes. The group-address and group-mask combination and source-address and source-mask combination of different instances must not overlap.";
                        leaf group-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "Specifies a multicast group address.";
                        }
    
                        leaf source-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "Specifies a multicast source address.";
                        }
    
                        leaf group-mask {
                          type uint8 {
                            range "4..32";
                          }
                          mandatory true;
                          description
                            "Specifies a mask length for a multicast group address.";
                        }
    
                        leaf source-mask {
                          when
                            "../source-address!='0.0.0.0'";
                          type uint8 {
                            range "8..32";
                          }
                          mandatory true;
                          description
                            "Specifies a mask length for a multicast source address.";
                        }
    
                        leaf bandwidth {
                          type uint32 {
                            range "1..1048576";
                          }
                          mandatory true;
                          description
                            "Specifies the bandwidth occupied by each group.";
                        }
    
                        leaf bandwidth-level {
                          type enumeration {
                            enum "level-1" {
                              value 1;
                              description
                                "Indicates that a multicast group consumes the level-1 bandwidth resources.";
                            }
                            enum "level-2" {
                              value 2;
                              description
                                "Indicates that a multicast group consumes the level-2 bandwidth resources.";
                            }
                          }
                          mandatory true;
                          description
                            "Indicates the restriction type of multicast bandwidth.";
                        }
                      }  // list group-source
                    }  // container group-sources
                  }  // list channel
                }  // container channels
    
                container unspecified-channel-permit {
                  description
                    "Configure users to join multicast programs that are not specified in a multicast bandwidth limit policy and configures the device not to count the bandwidth consumed by such programs. By default, users are not allowed to join multicast programs that are not specified in a multicast bandwidth limit policy.";
                  leaf permit {
                    type boolean;
                    default "false";
                    description
                      "Enable/disable users to join multicast programs that are not specified in a multicast bandwidth limit policy.";
                  }
                }  // container unspecified-channel-permit
              }  // list policy
            }  // container policys
          }  // container bas-policy
    
          container ipv4-profiles {
            description
              "List of the IPv4 Multicast profiles.";
            list ipv4-profile {
              key "name";
              max-elements 1024;
              description
                "Configure an IPv4 Multicast profile.";
              leaf name {
                ext:case-sensitivity "lower-only";
                type string {
                  length "1..32";
                  pattern "[!-~]{1,32}";
                  pattern
                    "([^A-Z\"%'*/:<>\\?@|]{1,32})";
                }
                must
                  "../name != '-' and ../name != '--'";
                description
                  "Configures profile Name.";
              }
    
              container ipv4-multicast-lists {
                must
                  "count(ipv4-multicast-list[static-flag='true'])<=10";
                description
                  "List of the IPv4 multicast in an IPv4 multicast profile.";
                list ipv4-multicast-list {
                  key "index static-flag";
                  description
                    "Configure IPv4 multicast list to an IPv4 multicast profile, with the max-elements of static multicast list as 10.";
                  leaf index {
                    type leafref {
                      path "/bras-multicast:bras-multicast/bras-multicast:ipv4-multicast-lists/bras-multicast:ipv4-multicast-list/bras-multicast:index";
                    }
                    description
                      "Specifies the index of the IPv4 multicast list that is bound to the IPv4 multicast profile.";
                  }
    
                  leaf static-flag {
                    type boolean;
                    description
                      "Enable/disable static IPv4 multicast lists or dynamic IPv4 multicast lists to an IPv4 multicast profile.";
                  }
                }  // list ipv4-multicast-list
              }  // container ipv4-multicast-lists
    
              container authentication {
                description
                  "Configure IPv4 Multicast Authentication.";
                leaf enable {
                  type boolean;
                  default "true";
                  description
                    "Enable/disable IPv4 Multicast Authentication.";
                }
              }  // container authentication
            }  // list ipv4-profile
          }  // container ipv4-profiles
    
          container ipv6-profiles {
            description
              "List of the IPv6 Multicast profiles.";
            list ipv6-profile {
              key "name";
              max-elements 1024;
              description
                "Configure an IPv6 Multicast profile.";
              leaf name {
                ext:case-sensitivity "lower-only";
                type string {
                  length "1..32";
                  pattern "[!-~]{1,32}";
                  pattern
                    "([^A-Z\"%'*/:<>\\?@|]{1,32})";
                }
                must
                  "../name != '-' and ../name != '--'";
                description
                  "Configures an IPv6 Multicast profile Name.";
              }
    
              container ipv6-multicast-lists {
                must
                  "count(ipv6-multicast-list[static-flag='true'])<=10";
                description
                  "List of the IPv6 multicast in an IPv6 multicast profile.";
                list ipv6-multicast-list {
                  key "index static-flag";
                  description
                    "Configure a IPv6 multicast list to an IPv6 multicast profile, with the max-elements of static multicast list as 10.";
                  leaf index {
                    type leafref {
                      path "/bras-multicast:bras-multicast/bras-multicast:ipv6-multicast-lists/bras-multicast:ipv6-multicast-list/bras-multicast:index";
                    }
                    description
                      "Specifies the index of the IPv6 multicast list that is bound to the IPv6 multicast profile.";
                  }
    
                  leaf static-flag {
                    type boolean;
                    description
                      "Enable/disable binding of static or dynamic IPv6 multicast lists to an IPv6 multicast profile.";
                  }
                }  // list ipv6-multicast-list
              }  // container ipv6-multicast-lists
    
              container authentication {
                description
                  "Configure IPv6 Multicast Authentication.";
                leaf enable {
                  type boolean;
                  default "true";
                  description
                    "Enable/disable IPv6 Multicast Authentication.";
                }
              }  // container authentication
            }  // list ipv6-profile
          }  // container ipv6-profiles
    
          container ipv6-multicast-lists {
            description
              "List of the IPv6 multicast.";
            list ipv6-multicast-list {
              key "index";
              unique "name";
              max-elements 8192;
              description
                "Configure an IPv6 multicast list. The group-address and group-mask combination and source-address and source-mask combination of different instances must not overlap.";
              leaf index {
                type uint32 {
                  range "0..8191";
                }
                description
                  "Specifies the index of an IPv6 multicast list.";
              }
    
              leaf name {
                ext:case-sensitivity "lower-only";
                type string {
                  length "1..32";
                  pattern "[!-~]{1,32}";
                  pattern
                    "([^A-Z\"%'*/:<>\\?@|]{1,32})";
                }
                must
                  "../name != '-' and ../name != '--'";
                mandatory true;
                description
                  "Specifies the name of an IPv6 multicast list.";
              }
    
              leaf source-address {
                type inet:ipv6-address-no-zone;
                description
                  "Specifies an IPv6 multicast source address.";
              }
    
              leaf source-mask {
                when "../source-address";
                type uint32 {
                  range "1..128";
                }
                default "128";
                description
                  "Specifies the length of the prefix of the IPv6 multicast source address.";
              }
    
              leaf group-address {
                type inet:ipv6-address-no-zone;
                mandatory true;
                description
                  "Specifies an IPv6 multicast group address.";
              }
    
              leaf group-mask {
                type uint32 {
                  range "8..128";
                }
                default "128";
                description
                  "Specifies the length of the prefix of the IPv6 multicast group address.";
              }
    
              leaf vpn-instance {
                type leafref {
                  path "/ni:network-instance/ni:instances/ni:instance/ni:name";
                }
                must
                  "/ni:network-instance/ni:instances/ni:instance[ni:name=current()]/l3vpn:afs/l3vpn:af[l3vpn:type='ipv6-unicast']";
                default "_public_";
                description
                  "Specifies the name of a IPv6 multicast VPN instance.";
              }
            }  // list ipv6-multicast-list
          }  // container ipv6-multicast-lists
        }  // container bras-multicast
      }  // module huawei-bras-multicast
    

© 2023 YumaWorks, Inc. All rights reserved.