Cisco-IOS-XR-um-router-igmp-cfg

This module contains a collection of YANG definitions for Cisco IOS-XR router igmp/amt/mld configuration. Copyright (c) 2019-20...

  • Version: 2021-01-28

    Cisco-IOS-XR-um-router-igmp-cfg@2021-01-28


    
      module Cisco-IOS-XR-um-router-igmp-cfg {
    
        yang-version 1;
    
        namespace
          "http://cisco.com/ns/yang/Cisco-IOS-XR-um-router-igmp-cfg";
    
        prefix um-router-igmp-cfg;
    
        import cisco-semver {
          prefix semver;
        }
        import Cisco-IOS-XR-types {
          prefix xr;
        }
        import ietf-inet-types {
          prefix inet;
        }
    
        organization "Cisco Systems, Inc.";
    
        contact
          "Cisco Systems, Inc.
         Customer Service
         
         Postal: 170 West Tasman Drive
         San Jose, CA 95134
         
         Tel: +1 800 553-NETS
         
         E-mail: cs-yang@cisco.com";
    
        description
          "This module contains a collection of YANG definitions
         for Cisco IOS-XR router igmp/amt/mld configuration.
         
         Copyright (c) 2019-2021 by Cisco Systems, Inc.
         All rights reserved.";
    
        revision "2021-01-28" {
          description
            "Added cisco-support task yang nodes
           2021-01-11
             Added support for specific platforms
           2021-01-07
             Added dvmrp-enable
           2020-12-07
             Removed un-supported nodes";
        }
    
        revision "2019-08-20" {
          description "Initial release";
        }
    
        semver:module-version "1.1.0";
        semver:module-version "1.0.0";
    
        feature igmp-plat-depend {
          description
            "Platform dependent configuration";
        }
    
        container router {
          description "Enable a routing process";
          container igmp {
            presence
              "Indicates a igmp node is configured.";
            description "IPv4 Address Family";
            container vrfs {
              description "VRF configs";
              list vrf {
                key "vrf-name";
                description "VRF configs";
                leaf vrf-name {
                  type xr:Cisco-ios-xr-string {
                    length "1..1024";
                  }
                  description "VRF configs";
                }
    
                container dvmrp-enable {
                  presence
                    "Indicates a dvmrp-enable node is configured.";
                  description
                    "Configure dvmrp to allow dvmrp processing on all interfaces";
                }  // container dvmrp-enable
    
                leaf robustness-count {
                  type uint32 {
                    range "2..10";
                  }
                  description
                    "IGMP robustness variable";
                }
    
                container maximum {
                  description
                    "Maximum resource enforced by this router";
                  leaf groups {
                    type uint32 {
                      range "1..75000";
                    }
                    description
                      "Maximum number of groups accepted by this router";
                  }
    
                  container groups-per-interface {
                    presence
                      "Indicates a groups-per-interface node is configured.";
                    description
                      "Maximum number of groups accepted per interface by this router";
                    leaf maximum-number {
                      type uint32 {
                        range "1..40000";
                      }
                      mandatory true;
                      description
                        "Maximum number of groups accepted per interface by this router";
                    }
    
                    leaf threshold {
                      type uint32 {
                        range "1..40000";
                      }
                      must
                        ". <= ../maximum-number";
                      description
                        "Threshold warning";
                    }
    
                    leaf access-list {
                      type xr:Cisco-ios-xr-string {
                        length "1..1024";
                      }
                      description "Name of ACL";
                    }
                  }  // container groups-per-interface
                }  // container maximum
    
                leaf version {
                  type uint32 {
                    range "1..3";
                  }
                  description "IGMP version";
                }
    
                leaf query-interval {
                  type uint32 {
                    range "1..3600";
                  }
                  description
                    "IGMP host query interval";
                }
    
                leaf query-timeout {
                  type uint32 {
                    range "60..300";
                  }
                  description
                    "IGMP previous querier timeout";
                }
    
                leaf query-max-response-time {
                  type uint32 {
                    range "1..25";
                  }
                  description
                    "IGMP max query response value";
                }
    
                container explicit-tracking {
                  presence
                    "Indicates a explicit-tracking node is configured.";
                  description
                    "IGMPv3 explicit host tracking";
                  leaf access-list {
                    type xr:Cisco-ios-xr-string;
                    description
                      "Access list specifying tracking group range";
                  }
                }  // container explicit-tracking
    
                leaf access-group {
                  type xr:Cisco-ios-xr-string {
                    length "1..32";
                  }
                  description
                    "IGMP group access group";
                }
    
                container ssm {
                  description
                    "Configure SSM specific options";
                  container map {
                    description
                      "Configure mappings of SSM group membership to sources";
                    container statics {
                      description
                        "Configure a static mapping of a source to a set of SSM groups";
                      list static {
                        key "address";
                        description
                          "Configure a static mapping of a source to a set of SSM groups";
                        leaf address {
                          type inet:ipv4-address-no-zone;
                          description
                            "Source address";
                        }
    
                        leaf access-list {
                          type xr:Cisco-ios-xr-string {
                            length "1..32";
                          }
                          mandatory true;
                          description
                            "Access list of ssm groups that should map to the given source";
                        }
                      }  // list static
                    }  // container statics
    
                    container query {
                      description
                        "Configure a mapping of sources to groups quering external database";
                      container dns {
                        presence
                          "Indicates a dns node is configured.";
                        description
                          "Configure a dns mapping for sources to a set of SSM groups";
                      }  // container dns
                    }  // container query
                  }  // container map
                }  // container ssm
    
                container traffic {
                  description
                    "IGMP traffic variables";
                  leaf profile {
                    type xr:Route-policy-name;
                    description
                      "Configure route-policy to be used to map the bandwidth profile";
                  }
                }  // container traffic
    
                container interfaces {
                  description
                    "IGMP interface configuration subcommands";
                  list interface {
                    key "interface-name";
                    description
                      "Select an interface to configure";
                    leaf interface-name {
                      type xr:Interface-name;
                      description
                        "Select an interface to configure";
                    }
    
                    leaf version {
                      type uint32 {
                        range "1..3";
                      }
                      description "IGMP version";
                    }
    
                    container router {
                      description
                        "Enable/Disable Router side functionality in IGMP";
                      container enable {
                        must "not(../disable)";
                        presence
                          "Indicates a enable node is configured.";
                        description
                          "Enable Router side functionality in IGMP";
                      }  // container enable
    
                      container disable {
                        must "not(../enable)";
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable Router side functionality in IGMP";
                      }  // container disable
                    }  // container router
    
                    container dvmrp-enable {
                      presence
                        "Indicates a dvmrp-enable node is configured.";
                      description
                        "Configure dvmrp to allow dvmrp processing on all interfaces";
                    }  // container dvmrp-enable
    
                    leaf query-interval {
                      type uint32 {
                        range "1..3600";
                      }
                      description
                        "IGMP host query interval";
                    }
    
                    leaf query-timeout {
                      type uint32 {
                        range "60..300";
                      }
                      description
                        "IGMP previous querier timeout";
                    }
    
                    leaf query-max-response-time {
                      type uint32 {
                        range "1..25";
                      }
                      description
                        "IGMP max query response value";
                    }
    
                    container explicit-tracking {
                      description
                        "IGMPv3 explicit host tracking";
                      container enable {
                        must "not(../disable)";
                        presence
                          "Indicates a enable node is configured.";
                        description
                          "Disable IGMPv3 explicit host tracking";
                      }  // container enable
    
                      container disable {
                        must "not(../enable)";
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Disable IGMPv3 explicit host tracking";
                      }  // container disable
    
                      leaf access-list {
                        type xr:Cisco-ios-xr-string;
                        must "../enable";
                        description
                          "Access list specifying tracking group range";
                      }
                    }  // container explicit-tracking
    
                    leaf access-group {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      description
                        "IGMP group access group";
                    }
    
                    container maximum {
                      description
                        "Maximum resource per interface enforced by this router";
                      container groups-per-interface {
                        presence
                          "Indicates a groups-per-interface node is configured.";
                        description
                          "Maxinum number of groups accepted per interface by this router";
                        leaf maximum-number {
                          type uint32 {
                            range "1..40000";
                          }
                          mandatory true;
                          description
                            "Maxinum number of groups accepted per interface by this router";
                        }
    
                        leaf threshold {
                          type uint32 {
                            range "1..40000";
                          }
                          must
                            ". <= ../maximum-number";
                          description
                            "Threshold warning";
                        }
    
                        leaf access-list {
                          type xr:Cisco-ios-xr-string {
                            length "1..1024";
                          }
                          description
                            "Name of ACL";
                        }
                      }  // container groups-per-interface
                    }  // container maximum
    
                    container static-group {
                      description
                        "IGMP static multicast group";
                      list group-address {
                        must
                          "group-address-only or group-address-inc-mask or group-address-inc-mask-source-address or group-address-source-address or group-address-source-address-inc-mask or group-inc-mask-source-inc-mask";
                        key "group-address";
                        description
                          "IGMP static multicast group";
                        leaf group-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "IP group address";
                        }
    
                        container group-address-only {
                          presence
                            "Indicates a group-address-only node is configured.";
                          description
                            "Group-address without increment mask/source-address";
                          container suppress-reports {
                            presence
                              "Indicates a suppress-reports node is configured.";
                            description
                              "Suppress IGMP reports";
                          }  // container suppress-reports
                        }  // container group-address-only
    
                        container group-address-inc-mask {
                          description
                            "Group-address with increment-mask";
                          list inc-mask {
                            key "group-mask-address";
                            description
                              "Increment mask for group address";
                            leaf group-mask-address {
                              type inet:ipv4-address-no-zone;
                              description
                                "Increment mask for group address";
                            }
    
                            leaf group-address-count {
                              type uint32 {
                                range "1..512";
                              }
                              mandatory true;
                              description
                                "No. of group addresses to join";
                            }
    
                            container suppress-reports {
                              presence
                                "Indicates a suppress-reports node is configured.";
                              description
                                "Suppress IGMP reports";
                            }  // container suppress-reports
                          }  // list inc-mask
                        }  // container group-address-inc-mask
    
                        container group-address-source-address {
                          description
                            "Group-address with source-address";
                          list source-address {
                            key "source-address";
                            description
                              "IGMP static multicast group";
                            leaf source-address {
                              type inet:ipv4-address-no-zone;
                              description
                                "Source address to join";
                            }
    
                            container suppress-reports {
                              presence
                                "Indicates a suppress-reports node is configured.";
                              description
                                "Suppress IGMP reports";
                            }  // container suppress-reports
                          }  // list source-address
                        }  // container group-address-source-address
    
                        container group-address-inc-mask-source-address {
                          description
                            "Group-address with increment-mask and source-address";
                          list inc-mask {
                            key "group-mask-address source-address";
                            description
                              "Increment mask for group address";
                            leaf group-mask-address {
                              type inet:ipv4-address-no-zone;
                              description
                                "Increment mask for group address";
                            }
    
                            leaf source-address {
                              type inet:ipv4-address-no-zone;
                              description
                                "Source address to join";
                            }
    
                            leaf group-address-count {
                              type uint32 {
                                range "1..512";
                              }
                              mandatory true;
                              description
                                "No. of group addresses to join";
                            }
    
                            container suppress-reports {
                              presence
                                "Indicates a suppress-reports node is configured.";
                              description
                                "Suppress IGMP reports";
                            }  // container suppress-reports
                          }  // list inc-mask
                        }  // container group-address-inc-mask-source-address
    
                        container group-address-source-address-inc-mask {
                          description
                            "Group-address and source-address with increment-mask";
                          list inc-mask {
                            key "source-address source-mask-address";
                            description
                              "Increment mask for source address";
                            leaf source-address {
                              type inet:ipv4-address-no-zone;
                              description
                                "Source address to join";
                            }
    
                            leaf source-mask-address {
                              type inet:ipv4-address-no-zone;
                              description
                                "Increment mask for source address";
                            }
    
                            leaf source-address-count {
                              type uint32 {
                                range "1..512";
                              }
                              mandatory true;
                              description
                                "No. of source addresses to join";
                            }
    
                            container suppress-reports {
                              presence
                                "Indicates a suppress-reports node is configured.";
                              description
                                "Suppress IGMP reports";
                            }  // container suppress-reports
                          }  // list inc-mask
                        }  // container group-address-source-address-inc-mask
    
                        container group-inc-mask-source-inc-mask {
                          description
                            "Group-address with increment-mask and source-address with increment-mask";
                          list inc-mask {
                            key "group-mask-address source-address source-mask-address";
                            description
                              "Increment mask for source address";
                            leaf group-mask-address {
                              type inet:ipv4-address-no-zone;
                              description
                                "Increment mask for group address";
                            }
    
                            leaf source-address {
                              type inet:ipv4-address-no-zone;
                              description
                                "Source address to join";
                            }
    
                            leaf source-mask-address {
                              type inet:ipv4-address-no-zone;
                              description
                                "Increment mask for source address";
                            }
    
                            leaf group-address-count {
                              type uint32 {
                                range "1..512";
                              }
                              mandatory true;
                              description
                                "No. of group addresses to join";
                            }
    
                            leaf source-address-count {
                              type uint32 {
                                range "1..512";
                              }
                              mandatory true;
                              description
                                "No. of source addresses to join";
                            }
    
                            container suppress-reports {
                              presence
                                "Indicates a suppress-reports node is configured.";
                              description
                                "Suppress IGMP reports";
                            }  // container suppress-reports
                          }  // list inc-mask
                        }  // container group-inc-mask-source-inc-mask
                      }  // list group-address
                    }  // container static-group
    
                    container join-groups {
                      description
                        "IGMP join multicast group";
                      list join-group {
                        must
                          "group-address-only or includes or excludes";
                        key "group-address";
                        description
                          "IGMP join multicast group";
                        leaf group-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "IP group address";
                        }
    
                        container group-address-only {
                          presence
                            "Indicates a group-address-only node is configured.";
                          description
                            "Join multicast group without source address";
                        }  // container group-address-only
    
                        container includes {
                          description
                            "Include only the following source address";
                          list include {
                            key "source-address";
                            description
                              "Source address to include";
                            leaf source-address {
                              type inet:ipv4-address-no-zone;
                              description
                                "Source address to include";
                            }
                          }  // list include
                        }  // container includes
    
                        container excludes {
                          description
                            "Exclude the only following source address";
                          list exclude {
                            key "source-address";
                            description
                              "Exclude the only following source address";
                            leaf source-address {
                              type inet:ipv4-address-no-zone;
                              description
                                "Exclude the only following source address";
                            }
                          }  // list exclude
                        }  // container excludes
                      }  // list join-group
                    }  // container join-groups
                  }  // list interface
                }  // container interfaces
              }  // list vrf
            }  // container vrfs
    
            container accounting {
              description
                "Configure IGMP accounting";
              leaf max-history {
                type uint32 {
                  range "0..365";
                }
                description
                  "Set the maximum history for the accounting in days";
              }
            }  // container accounting
    
            container nsf {
              description
                "Configure NSF specific options";
              leaf lifetime {
                type uint32 {
                  range "10..3600";
                }
                description
                  "Configure maximum time for IGMP NSF mode";
              }
            }  // container nsf
    
            container dvmrp-enable {
              presence
                "Indicates a dvmrp-enable node is configured.";
              description
                "Configure dvmrp to allow dvmrp processing on all interfaces";
            }  // container dvmrp-enable
    
            leaf robustness-count {
              type uint32 {
                range "2..10";
              }
              description
                "IGMP robustness variable";
            }
    
            container maximum {
              description
                "Maximum resource enforced by this router";
              leaf groups {
                type uint32 {
                  range "1..75000";
                }
                description
                  "Maximum number of groups accepted by this router";
              }
    
              container groups-per-interface {
                presence
                  "Indicates a groups-per-interface node is configured.";
                description
                  "Maximum number of groups accepted per interface by this router";
                leaf maximum-number {
                  type uint32 {
                    range "1..40000";
                  }
                  mandatory true;
                  description
                    "Maximum number of groups accepted per interface by this router";
                }
    
                leaf threshold {
                  type uint32 {
                    range "1..40000";
                  }
                  must ". <= ../maximum-number";
                  description
                    "Threshold warning";
                }
    
                leaf access-list {
                  type xr:Cisco-ios-xr-string {
                    length "1..1024";
                  }
                  description "Name of ACL";
                }
              }  // container groups-per-interface
            }  // container maximum
    
            leaf version {
              type uint32 {
                range "1..3";
              }
              description "IGMP version";
            }
    
            leaf query-interval {
              type uint32 {
                range "1..3600";
              }
              description
                "IGMP host query interval";
            }
    
            leaf query-timeout {
              type uint32 {
                range "60..300";
              }
              description
                "IGMP previous querier timeout";
            }
    
            leaf query-max-response-time {
              type uint32 {
                range "1..25";
              }
              description
                "IGMP max query response value";
            }
    
            container explicit-tracking {
              presence
                "Indicates a explicit-tracking node is configured.";
              description
                "IGMPv3 explicit host tracking";
              leaf access-list {
                type xr:Cisco-ios-xr-string;
                description
                  "Access list specifying tracking group range";
              }
            }  // container explicit-tracking
    
            leaf access-group {
              type xr:Cisco-ios-xr-string {
                length "1..32";
              }
              description
                "IGMP group access group";
            }
    
            container ssm {
              description
                "Configure SSM specific options";
              container map {
                description
                  "Configure mappings of SSM group membership to sources";
                container statics {
                  description
                    "Configure a static mapping of a source to a set of SSM groups";
                  list static {
                    key "address";
                    description
                      "Configure a static mapping of a source to a set of SSM groups";
                    leaf address {
                      type inet:ipv4-address-no-zone;
                      description
                        "Source address";
                    }
    
                    leaf access-list {
                      type xr:Cisco-ios-xr-string {
                        length "1..32";
                      }
                      mandatory true;
                      description
                        "Configure a static mapping of a source to a set of SSM groups";
                    }
                  }  // list static
                }  // container statics
    
                container query {
                  description
                    "Configure a mapping of sources to groups quering external database";
                  container dns {
                    presence
                      "Indicates a dns node is configured.";
                    description
                      "Configure a dns mapping for sources to a set of SSM groups";
                  }  // container dns
                }  // container query
              }  // container map
            }  // container ssm
    
            container traffic {
              if-feature igmp-plat-depend;
              description
                "IGMP traffic variables";
              leaf profile {
                type xr:Route-policy-name;
                description
                  "Configure route-policy to be used to map the bandwidth profile";
              }
            }  // container traffic
    
            container unicast-qos-adjust {
              if-feature igmp-plat-depend;
              description
                "IGMP QOS shaper for subscriber unicast traffic";
              leaf holdoff {
                type uint32 {
                  range "5..1800";
                }
                description
                  "Configure the hold-off time before QOS clears the stale entries";
              }
    
              leaf adjusment-delay {
                type uint32 {
                  range "0..10";
                }
                description
                  "Configure the time to wait before programming rate in QOS";
              }
    
              leaf download-interval {
                type uint32 {
                  range "10..500";
                }
                description
                  "Configure the time before downloading a batch of interfaces to QOS";
              }
            }  // container unicast-qos-adjust
    
            container interfaces {
              description
                "IGMP interface configuration subcommands";
              list interface {
                key "interface-name";
                description
                  "Select an interface to configure";
                leaf interface-name {
                  type xr:Interface-name;
                  description
                    "Select an interface to configure";
                }
    
                leaf version {
                  type uint32 {
                    range "1..3";
                  }
                  description "IGMP version";
                }
    
                container router {
                  description
                    "Enable/Disable Router side functionality in IGMP";
                  container enable {
                    must "not(../disable)";
                    presence
                      "Indicates a enable node is configured.";
                    description
                      "Enable Router side functionality in IGMP";
                  }  // container enable
    
                  container disable {
                    must "not(../enable)";
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Disable Router side functionality in IGMP";
                  }  // container disable
                }  // container router
    
                container dvmrp-enable {
                  presence
                    "Indicates a dvmrp-enable node is configured.";
                  description
                    "Configure dvmrp to allow dvmrp processing on all interfaces";
                }  // container dvmrp-enable
    
                leaf query-interval {
                  type uint32 {
                    range "1..3600";
                  }
                  description
                    "IGMP host query interval";
                }
    
                leaf query-timeout {
                  type uint32 {
                    range "60..300";
                  }
                  description
                    "IGMP previous querier timeout";
                }
    
                leaf query-max-response-time {
                  type uint32 {
                    range "1..25";
                  }
                  description
                    "IGMP max query response value";
                }
    
                container explicit-tracking {
                  description
                    "IGMPv3 explicit host tracking";
                  container enable {
                    must "not(../disable)";
                    presence
                      "Indicates a enable node is configured.";
                    description
                      "Disable IGMPv3 explicit host tracking";
                  }  // container enable
    
                  container disable {
                    must "not(../enable)";
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Disable IGMPv3 explicit host tracking";
                  }  // container disable
    
                  leaf access-list {
                    type xr:Cisco-ios-xr-string;
                    must "../enable";
                    description
                      "Access list specifying tracking group range";
                  }
                }  // container explicit-tracking
    
                leaf access-group {
                  type xr:Cisco-ios-xr-string {
                    length "1..32";
                  }
                  description
                    "IGMP group access group";
                }
    
                container maximum {
                  description
                    "Maximum resource per interface enforced by this router";
                  container groups-per-interface {
                    presence
                      "Indicates a groups-per-interface node is configured.";
                    leaf maximum-number {
                      type uint32 {
                        range "1..40000";
                      }
                      mandatory true;
                      description
                        "Maxinum number of groups accepted per interface by this router";
                    }
    
                    leaf threshold {
                      type uint32 {
                        range "1..40000";
                      }
                      must
                        ". <= ../maximum-number";
                      description
                        "Threshold warning";
                    }
    
                    leaf access-list {
                      type xr:Cisco-ios-xr-string {
                        length "1..1024";
                      }
                      description "Name of ACL";
                    }
                  }  // container groups-per-interface
                }  // container maximum
    
                container static-groups {
                  description
                    "IGMP static multicast group";
                  list group-address {
                    must
                      "group-address-only or group-address-inc-mask or group-address-inc-mask-source-address or group-address-source-address or group-address-source-address-inc-mask or group-inc-mask-source-inc-mask";
                    key "group-address";
                    description
                      "IGMP static multicast group";
                    leaf group-address {
                      type inet:ipv4-address-no-zone;
                      description
                        "IP group address";
                    }
    
                    container group-address-only {
                      presence
                        "Indicates a group-address-only node is configured.";
                      description
                        "Group-address without increment mask/source-address";
                      container suppress-reports {
                        presence
                          "Indicates a suppress-reports node is configured.";
                        description
                          "Suppress IGMP reports";
                      }  // container suppress-reports
                    }  // container group-address-only
    
                    container group-address-inc-mask {
                      description
                        "Group-address with increment-mask";
                      list inc-mask {
                        key "group-mask-address";
                        description
                          "Increment mask for group address";
                        leaf group-mask-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "Increment mask for group address";
                        }
    
                        leaf group-address-count {
                          type uint32 {
                            range "1..512";
                          }
                          mandatory true;
                          description
                            "No. of group addresses to join";
                        }
    
                        container suppress-reports {
                          presence
                            "Indicates a suppress-reports node is configured.";
                          description
                            "Suppress IGMP reports";
                        }  // container suppress-reports
                      }  // list inc-mask
                    }  // container group-address-inc-mask
    
                    container group-address-source-address {
                      description
                        "Group-address with source-address";
                      list source-address {
                        key "source-address";
                        description
                          "IGMP static multicast group";
                        leaf source-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "Source address to join";
                        }
    
                        container suppress-reports {
                          presence
                            "Indicates a suppress-reports node is configured.";
                          description
                            "Suppress IGMP reports";
                        }  // container suppress-reports
                      }  // list source-address
                    }  // container group-address-source-address
    
                    container group-address-inc-mask-source-address {
                      description
                        "Group-address with increment-mask and source-address";
                      list inc-mask {
                        key "group-mask-address source-address";
                        description
                          "Increment mask for group address";
                        leaf group-mask-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "Increment mask for group address";
                        }
    
                        leaf source-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "Source address to join";
                        }
    
                        leaf group-address-count {
                          type uint32 {
                            range "1..512";
                          }
                          mandatory true;
                          description
                            "No. of group addresses to join";
                        }
    
                        container suppress-reports {
                          presence
                            "Indicates a suppress-reports node is configured.";
                          description
                            "Suppress IGMP reports";
                        }  // container suppress-reports
                      }  // list inc-mask
                    }  // container group-address-inc-mask-source-address
    
                    container group-address-source-address-inc-mask {
                      description
                        "Group-address and source-address with increment-mask";
                      list inc-mask {
                        key "source-address source-mask-address";
                        description
                          "Increment mask for source address";
                        leaf source-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "Source address to join";
                        }
    
                        leaf source-mask-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "Increment mask for source address";
                        }
    
                        leaf source-address-count {
                          type uint32 {
                            range "1..512";
                          }
                          mandatory true;
                          description
                            "No. of source addresses to join";
                        }
    
                        container suppress-reports {
                          presence
                            "Indicates a suppress-reports node is configured.";
                          description
                            "Suppress IGMP reports";
                        }  // container suppress-reports
                      }  // list inc-mask
                    }  // container group-address-source-address-inc-mask
    
                    container group-inc-mask-source-inc-mask {
                      description
                        "Group-address with increment-mask and source-address with increment-mask";
                      list inc-mask {
                        key "group-mask-address source-address source-mask-address";
                        description
                          "Increment mask for source address";
                        leaf group-mask-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "Increment mask for group address";
                        }
    
                        leaf source-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "Source address to join";
                        }
    
                        leaf source-mask-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "Increment mask for source address";
                        }
    
                        leaf group-address-count {
                          type uint32 {
                            range "1..512";
                          }
                          mandatory true;
                          description
                            "No. of group addresses to join";
                        }
    
                        leaf source-address-count {
                          type uint32 {
                            range "1..512";
                          }
                          mandatory true;
                          description
                            "No. of source addresses to join";
                        }
    
                        container suppress-reports {
                          presence
                            "Indicates a suppress-reports node is configured.";
                          description
                            "Suppress IGMP reports";
                        }  // container suppress-reports
                      }  // list inc-mask
                    }  // container group-inc-mask-source-inc-mask
                  }  // list group-address
                }  // container static-groups
    
                container join-groups {
                  description
                    "IGMP join multicast group";
                  list join-group {
                    must
                      "group-address-only or includes or excludes";
                    key "group-address";
                    description
                      "IGMP join multicast group";
                    leaf group-address {
                      type inet:ipv4-address-no-zone;
                      description
                        "IP group address";
                    }
    
                    container group-address-only {
                      presence
                        "Indicates a group-address-only node is configured.";
                      description
                        "Join multicast group without source address";
                    }  // container group-address-only
    
                    container includes {
                      description
                        "Include only the following source address";
                      list include {
                        key "source-address";
                        description
                          "Source address to include";
                        leaf source-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "Source address to include";
                        }
                      }  // list include
                    }  // container includes
    
                    container excludes {
                      description
                        "Exclude the only following source address";
                      list exclude {
                        key "source-address";
                        description
                          "Exclude the only following source address";
                        leaf source-address {
                          type inet:ipv4-address-no-zone;
                          description
                            "Exclude the only following source address";
                        }
                      }  // list exclude
                    }  // container excludes
                  }  // list join-group
                }  // container join-groups
              }  // list interface
            }  // container interfaces
          }  // container igmp
        }  // container router
      }  // module Cisco-IOS-XR-um-router-igmp-cfg
    

© 2023 YumaWorks, Inc. All rights reserved.