huawei-ipv6-nd

ND management.

  • Version: 2021-07-16

    huawei-ipv6-nd@2021-07-16


    
      module huawei-ipv6-nd {
    
        yang-version 1;
    
        namespace
          "urn:huawei:yang:huawei-ipv6-nd";
    
        prefix ipv6-nd;
    
        import huawei-ifm {
          prefix ifm;
        }
        import huawei-pub-type {
          prefix pub-type;
        }
        import ietf-inet-types {
          prefix inet;
        }
        import huawei-extension {
          prefix ext;
        }
        import huawei-ip {
          prefix ip;
        }
        import huawei-network-instance {
          prefix ni;
        }
        import huawei-ethernet {
          prefix ethernet;
        }
        import huawei-bd {
          prefix bd;
        }
        import ietf-yang-types {
          prefix yang;
        }
    
        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 "ND management.";
    
        revision "2021-07-16" {
          description
            "Leaf min-interval is added under container if-property;
           leaf proxy-reply is added under container instance;
           leaf mismatch-discard is added under container instance.";
          reference
            "Huawei private.";
    
        }
    
        revision "2021-02-02" {
          description
            "Containers dns-server-addresses and dns-search-suffixs are added.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-10-15" {
          description
            "ND rate limit and drop statistics are added;
           add some leaf nodes for the if-property and the proxys container;
           add some containers for the static-neighbor and ra-property container;
           add strict-prefix-learn container.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-03-26" {
          description
            "Leaf ns-send-rate-limit is added.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-02-29" {
          description
            "Default value of stale-time is deleted.";
          reference
            "Huawei private.";
    
        }
    
        revision "2020-02-26" {
          description "Default value.";
          reference
            "Huawei private.";
    
        }
    
        revision "2019-12-30" {
          description "Init revision.";
          reference
            "Huawei private.";
    
        }
    
        ext:task-name "nd";
    
        typedef nd-flag {
          type enumeration {
            enum "false" {
              value 0;
              description "NO.";
            }
            enum "true" {
              value 1;
              description "YES.";
            }
          }
          description "Description of nd-flag.";
        }
    
        typedef nd-switch-state {
          type enumeration {
            enum "off" {
              value 0;
              description "Off.";
            }
            enum "on" {
              value 1;
              description "On.";
            }
          }
          description "The state of the switch.";
        }
    
        typedef nd-ngb-state {
          type enumeration {
            enum "incomplete" {
              value 0;
              description
                "Address resolution is being performed on the entry.";
            }
            enum "reachable" {
              value 1;
              description
                "The neighbor is known to have been reachable recently.";
            }
            enum "stale" {
              value 2;
              description
                "The neighbor is no longer known to be reachable, but until traffic is sent to the neighbor no attempt should be made to verify its reachability.";
            }
            enum "delay" {
              value 3;
              description
                "The neighbor is no longer known to be reachable, and traffic has recently been sent to the neighbor. Rather than probe the neighbor immediately, however,
                delay sending probes for a short while in order to give upper-layer protocols a chance to provide reachability confirmation.";
            }
            enum "probe" {
              value 4;
              description
                "The neighbor is no longer known to be reachable, and unicast neighbor solicitation probes are being sent to verify reachability.";
            }
          }
          description
            "The neighbor unreachability detection state.";
          reference
            "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) Section 7.3.2";
    
        }
    
        typedef nd-route-preference {
          type enumeration {
            enum "medium" {
              value 0;
              description "Preference medium.";
            }
            enum "high" {
              value 1;
              description "Preference high.";
            }
            enum "low" {
              value 3;
              description "Preference low.";
            }
          }
          description
            "The RA router preference level.";
        }
    
        typedef nd-nb-type {
          type enumeration {
            enum "remote" {
              value 0;
              description "Remote pushed.";
            }
            enum "static" {
              value 1;
              description
                "Statically configured.";
            }
            enum "dynamic" {
              value 2;
              description
                "Dynamically resolved.";
            }
          }
          description
            "The origin of neighbor entry.";
        }
    
        typedef nd-pkt-type {
          type enumeration {
            enum "RS" {
              value 0;
              description
                "Router solicitation packet.";
            }
            enum "RA" {
              value 1;
              description
                "Router advertisement packet.";
            }
            enum "NS" {
              value 2;
              description
                "Neighbor solicitation packet.";
            }
            enum "NA" {
              value 3;
              description
                "Neighbor advertisement packet.";
            }
          }
          description
            "The ND packet type value.";
        }
    
        typedef nd-pkt-evt-type {
          type enumeration {
            enum "RS" {
              value 0;
              description
                "Router solicitation packet.";
            }
            enum "RA" {
              value 1;
              description
                "Router advertisement packet.";
            }
            enum "NS" {
              value 2;
              description
                "Neighbor solicitation packet.";
            }
            enum "NA" {
              value 3;
              description
                "Neighbor advertisement packet.";
            }
            enum "NDMISS" {
              value 4;
              description "ND miss.";
            }
          }
          description
            "The ND packet type or event value.";
        }
    
        typedef nd-tgt-pkt-type {
          type enumeration {
            enum "NS" {
              value 2;
              description
                "Neighbor solicitation packet.";
            }
            enum "NA" {
              value 3;
              description
                "Neighbor advertisement packet.";
            }
          }
          description
            "The type value of ND packet that supports the target address.";
        }
    
        grouping nd-ip-rate-limits-type {
          description
            "Rate limits for receiving ND packets or ND miss based on specified source IP address.";
          container ip-rate-limits {
            description
              "List of rate limits for receiving ND packets or ND miss based on specified source IP address.";
            list ip-rate-limit {
              key "packet-type ipv6-addr";
              description
                "Configure the rate limit for receiving ND packets or ND miss based on specified source IP address.";
              leaf packet-type {
                type nd-pkt-evt-type;
                description
                  "ND packet type or ND miss.";
              }
    
              leaf ipv6-addr {
                type inet:ipv6-address-no-zone;
                description
                  "Source IPv6 address, the address cannot be a multicast address, that is, cannot start with FFXX or ffXX, X represents hexadecimal character. When the type is NDMISS, the source address cannot be the unspecified address.";
              }
    
              leaf value {
                type uint16 {
                  range "0..5000";
                }
                units "pps";
                mandatory true;
                description
                  "Rate limit of receiving ND packet or ND miss.";
              }
            }  // list ip-rate-limit
          }  // container ip-rate-limits
        }  // grouping nd-ip-rate-limits-type
    
        container ipv6-nd {
          description "ND management.";
          container global {
            description
              "Configure global configuration of ND.";
            leaf ns-send-rate-limit {
              type uint16 {
                range "1..1000";
              }
              units "pps";
              default "550";
              description
                "Rate limit of sending NS packet.";
            }
    
            leaf na-send-rate-limit {
              type uint16 {
                range "1..10240";
              }
              units "pps";
              default "5000";
              description
                "Rate limit of sending NA packet.";
            }
    
            leaf rs-send-rate-limit {
              type uint16 {
                range "1..1000";
              }
              units "pps";
              default "550";
              description
                "Rate limit of sending RS packet.";
            }
    
            leaf ra-send-rate-limit {
              type uint16 {
                range "1..1000";
              }
              units "pps";
              default "550";
              description
                "Rate limit of sending RA packet.";
            }
    
            leaf dad-detect {
              type nd-flag;
              default "true";
              description
                "The switch of DAD enhanced detection.";
            }
    
            leaf mac-check-flag {
              type nd-flag;
              default "false";
              description
                "Enable IPv6 ND MAC check.";
            }
    
            leaf auto-detect-flag {
              type nd-switch-state;
              default "on";
              description
                "To enable the automatic detection of ND entries.";
            }
    
            leaf prefix-strict-flag {
              type nd-switch-state;
              default "on";
              description
                "ND prefix learning strict.";
            }
    
            leaf pre-detect-flag {
              type nd-switch-state;
              default "off";
              description
                "To determine whether to enable pre-detection.";
            }
    
            leaf hop-limit {
              type uint8 {
                range "1..255";
              }
              default "64";
              description
                "IPv6 packet hoplimit.";
            }
    
            leaf stale-time {
              type uint32 {
                range "60..172800";
              }
              units "s";
              default "1200";
              description
                "Aging time of the global stale state.";
            }
    
            leaf rsa-calculate-rate-limit {
              type uint32 {
                ext:value-meaning {
                  ext:item "0" {
                    ext:meaning "disabling the function of rsa calculation limit";
                  }
                }
                range "0..100";
              }
              default "0";
              description
                "Rate limit for RSA option calculation.";
            }
    
            leaf log-trap-time {
              type uint32 {
                range "60..3600";
              }
              units "s";
              default "600";
              description
                "The interval for sending speed-limit logs and alarms.";
            }
    
            leaf rs-receive-rate-limit {
              ext:dynamic-default;
              type uint16 {
                range "1..5000";
              }
              units "pps";
              description
                "Rate limit of receiving RS packet.";
            }
    
            leaf ra-receive-rate-limit {
              ext:dynamic-default;
              type uint16 {
                range "1..5000";
              }
              units "pps";
              description
                "Rate limit of receiving RA packet.";
            }
    
            leaf ns-receive-rate-limit {
              ext:dynamic-default;
              type uint16 {
                range "1..5000";
              }
              units "pps";
              description
                "Rate limit of receiving NS packet.";
            }
    
            leaf na-receive-rate-limit {
              ext:dynamic-default;
              type uint16 {
                range "1..5000";
              }
              units "pps";
              description
                "Rate limit of receiving NA packet.";
            }
    
            leaf miss-receive-rate-limit {
              ext:dynamic-default;
              type uint16 {
                range "1..5000";
              }
              units "pps";
              description
                "Rate limit of receiving ND miss.";
            }
    
            leaf dad-detect-rate-limit {
              type uint16 {
                range "1..100";
              }
              units "pps";
              default "50";
              description
                "Rate limit of sending DAD detect packet.";
            }
    
            leaf dad-detect-attempts {
              type uint16 {
                range "1..5";
              }
              default "3";
              description
                "Number of attempts to resolve address conflicts.";
            }
          }  // container global
    
          container m-lag-global {
            description
              "Configure M-LAG global configuration of ND.";
            leaf ipv6-neighbor-backup-rate {
              ext:dynamic-default;
              type uint32 {
                range "1..2000";
              }
              description
                "Specifies the number of IPv6 neighbor entries synchronized per second through M-LAG.";
            }
          }  // container m-lag-global
    
          container ipv6-neighbors {
            config false;
            description
              "List of information about neighbor entry query.";
            list ipv6-neighbor {
              key "if-name ipv6-addr";
              description
                "Statistics of query neighbor entries which can be static, or dynamic.";
              leaf if-name {
                type leafref {
                  path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                }
                description "Interface name.";
              }
    
              leaf ipv6-addr {
                type inet:ipv6-address-no-zone;
                description
                  "IPv6 address of a neighbor entry.";
              }
    
              leaf slot-id {
                ext:support-filter "true";
                type string {
                  length "1..24";
                }
                description "Slot ID.";
              }
    
              leaf mac-addr {
                type pub-type:mac-address;
                description "MAC address.";
              }
    
              leaf vpn-name {
                ext:support-filter "true";
                type leafref {
                  path "/ni:network-instance/ni:instances/ni:instance/ni:name";
                }
                description "VPN name.";
              }
    
              leaf vlan-id {
                ext:support-filter "true";
                type uint32 {
                  range "1..4094";
                }
                description "VLAN ID.";
              }
    
              leaf state {
                type nd-ngb-state;
                description
                  "Status of a neighbor entry.";
              }
    
              leaf static-flag {
                type nd-nb-type;
                description
                  "Type of a neighbor entry. The available options are static, dynamic or remote.";
              }
    
              leaf age {
                type uint32 {
                  range "0..4294967293";
                }
                units "min";
                description
                  "Time when a neighbor entry is established.";
              }
    
              leaf is-router {
                type nd-flag;
                description "Is a router.";
              }
    
              leaf cevid {
                type uint32 {
                  range "1..4094";
                }
                description
                  "Inner VLAN tag. If this parameter is not set, the value of the VLAN ID is considered to be 0. If this parameter is set, it indicates that the ND entry is in the associated VLAN.";
              }
    
              leaf strict-flag {
                type boolean;
                description
                  "Enable/disable strict security mode.";
              }
    
              leaf nickname {
                type uint32 {
                  range "1..65535";
                }
                description
                  "Nickname which uniquely identifies an RB on a TRILL network.";
              }
    
              leaf bd-id {
                type uint32 {
                  range "1..16777215";
                }
                description "Bridge-domain ID.";
              }
    
              leaf vni {
                type uint32 {
                  range "1..16777215";
                }
                description "Vxlan VNI.";
              }
    
              leaf source-addr {
                type inet:ip-address-no-zone;
                description
                  "Tunnel SourceIPAddr.";
              }
    
              leaf peer-addr {
                type inet:ip-address-no-zone;
                description "Tunnel PeerIPAddr.";
              }
            }  // list ipv6-neighbor
          }  // container ipv6-neighbors
    
          container nd-pkt-stats {
            config false;
            description
              "Statistics of ND packets.";
            container ns-stats {
              description
                "Statistics of NS packets.";
              container ns-global {
                description
                  "Statistics of global NS packets.";
                leaf send-total {
                  type uint32;
                  units "packet";
                  description
                    "Number of sent NS packets.";
                }
    
                leaf send-dip-ucast {
                  type uint32;
                  units "packet";
                  description
                    "Number of sent NS packets with the destination address as a unicast address.";
                }
    
                leaf send-dip-mcast {
                  type uint32;
                  units "packet";
                  description
                    "Number of sent NS packets with the destination address as a multicast address.";
                }
    
                leaf send-target-linklocal {
                  type uint32;
                  units "packet";
                  description
                    "Number of sent NS packets with the target address as a link-local address.";
                }
    
                leaf send-target-global {
                  type uint32;
                  units "packet";
                  description
                    "Number of sent NS packets with the target address as a global address.";
                }
    
                leaf recv-total {
                  type uint32;
                  units "packet";
                  description
                    "Number of received NS packets.";
                }
    
                leaf recv-valid-total {
                  type uint32;
                  units "packet";
                  description
                    "Number of received valid NS packets.";
                }
    
                leaf recv-dip-ucast {
                  type uint32;
                  units "packet";
                  description
                    "Number of received NS packets with the destination address as a unicast address.";
                }
    
                leaf recv-dip-mcast {
                  type uint32;
                  units "packet";
                  description
                    "Number of NS packets with the destination address as a multicast address.";
                }
    
                leaf recv-target-linklocal {
                  type uint32;
                  units "packet";
                  description
                    "Number of NS packets with the target address as a link-local address.";
                }
    
                leaf recv-target-global {
                  type uint32;
                  units "packet";
                  description
                    "Number of NS packets with the target address as a global address.";
                }
    
                leaf drop-total {
                  type uint32;
                  units "packet";
                  description
                    "Number of discarded NS packets.";
                }
    
                leaf drop-checksum-err {
                  type uint32;
                  units "packet";
                  description
                    "Number of NS packets discarded due to checksum errors.";
                }
    
                leaf drop-bad-len {
                  type uint32;
                  units "packet";
                  description
                    "Number of NS packets discarded due to bad packet length.";
                }
    
                leaf drop-bad-code {
                  type uint32;
                  units "packet";
                  description
                    "Number of NS packets discarded due to bad code.";
                }
    
                leaf drop-bad-hoplimit {
                  type uint32;
                  units "packet";
                  description
                    "Number of NS packets discarded due to bad hoplimit.";
                }
    
                leaf drop-bad-src-mac {
                  type uint32;
                  units "packet";
                  description
                    "Number of NS packets discarded due to bad source MAC addresses.";
                }
    
                leaf drop-bad-dst-mac {
                  type uint32;
                  units "packet";
                  description
                    "Number of NS packets discarded due to bad destination MAC addresses.";
                }
    
                leaf drop-bad-tgt-mac {
                  type uint32;
                  units "packet";
                  description
                    "Number of NS packets discarded due to bad target MAC addresses.";
                }
    
                leaf drop-bad-src-ip {
                  type uint32;
                  units "packet";
                  description
                    "Number of NS packets discarded due to bad source IP addresses.";
                }
    
                leaf drop-bad-dst-ip {
                  type uint32;
                  units "packet";
                  description
                    "Number of NS packets discarded due to bad destination IP addresses.";
                }
    
                leaf drop-bad-tgt-ip {
                  type uint32;
                  units "packet";
                  description
                    "Number of NS packets discarded due to bad target IP addresses.";
                }
    
                leaf drop-bad-option {
                  type uint32;
                  units "packet";
                  description
                    "Number of NS packets discarded due to bad options.";
                }
    
                leaf drop-local-addr {
                  type uint32;
                  units "packet";
                  description
                    "Number of NS packets discarded because the source address is the local address.";
                }
    
                leaf drop-mac-check {
                  type uint32;
                  units "packet";
                  description
                    "Number of NS packets discarded due to source MAC address consistency check errors.";
                }
    
                leaf drop-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of NS packets discarded due to global rate limit.";
                }
    
                leaf drop-src-mac-attack {
                  type uint32;
                  units "packet";
                  description
                    "Number of NS packets discarded due to source MAC address attacks.";
                }
    
                leaf drop-src-mac-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of NS packets discarded due to source MAC rate limit.";
                }
    
                leaf drop-src-ip-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of NS packets discarded due to source IP rate limit.";
                }
    
                leaf drop-if-src-ip-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of NS packets discarded due to interface source IP rate limit.";
                }
    
                leaf drop-if-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of NS packets discarded due to interface rate limit.";
                }
    
                leaf drop-lr-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of NS packets discarded due to LR rate limit.";
                }
    
                leaf send-sip-unspecified {
                  type uint32;
                  units "packet";
                  description
                    "Number of sent NS packets with the source address as an unspecified address.";
                }
    
                leaf recv-sip-unspecified {
                  type uint32;
                  units "packet";
                  description
                    "Number of received NS packets with the source address as an unspecified address.";
                }
    
                leaf drop-dst-ip-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of NS packets discarded due to destination IP rate limit.";
                }
    
                leaf drop-tgt-ip-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of NS packets discarded due to target IP rate limit.";
                }
              }  // container ns-global
    
              container ns-slots {
                config false;
                description
                  "List of NS packets in these slots.";
                list ns-slot {
                  key "slot-id";
                  description
                    "Statistics of NS packets in the slot.";
                  leaf slot-id {
                    type string {
                      length "1..24";
                    }
                    description "Slot ID.";
                  }
    
                  leaf send-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of sent NS packets.";
                  }
    
                  leaf send-dip-ucast {
                    type uint32;
                    units "packet";
                    description
                      "Number of sent NS packets with the destination address as a unicast address.";
                  }
    
                  leaf send-dip-mcast {
                    type uint32;
                    units "packet";
                    description
                      "Number of sent NS packets with the destination address as a multicast address.";
                  }
    
                  leaf send-target-linklocal {
                    type uint32;
                    units "packet";
                    description
                      "Number of sent NS packets with the target address as a link-local address.";
                  }
    
                  leaf send-target-global {
                    type uint32;
                    units "packet";
                    description
                      "Number of sent NS packets with the target address as a global address.";
                  }
    
                  leaf recv-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of received NS packets.";
                  }
    
                  leaf recv-valid-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of received valid NS packets.";
                  }
    
                  leaf recv-dip-ucast {
                    type uint32;
                    units "packet";
                    description
                      "Number of received NS packets with the destination address as a unicast address.";
                  }
    
                  leaf recv-dip-mcast {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets with the destination address as a multicast address.";
                  }
    
                  leaf recv-target-linklocal {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets with the destination address as a link-local address.";
                  }
    
                  leaf recv-target-global {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets with the destination address as a global address.";
                  }
    
                  leaf drop-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of discarded NS packets.";
                  }
    
                  leaf drop-checksum-err {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to checksum errors.";
                  }
    
                  leaf drop-bad-len {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to bad packet length.";
                  }
    
                  leaf drop-bad-code {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to bad code.";
                  }
    
                  leaf drop-bad-hoplimit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to bad hoplimit.";
                  }
    
                  leaf drop-bad-src-mac {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to bad source MAC addresses.";
                  }
    
                  leaf drop-bad-dst-mac {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to bad destination MAC addresses.";
                  }
    
                  leaf drop-bad-tgt-mac {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to bad target MAC addresses.";
                  }
    
                  leaf drop-bad-src-ip {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to bad source IP addresses.";
                  }
    
                  leaf drop-bad-dst-ip {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to bad destination IP addresses.";
                  }
    
                  leaf drop-bad-tgt-ip {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to bad target IP addresses.";
                  }
    
                  leaf drop-bad-option {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to bad options.";
                  }
    
                  leaf drop-local-addr {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded because the source address is the local address.";
                  }
    
                  leaf drop-mac-check {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to source MAC address consistency check errors.";
                  }
    
                  leaf drop-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to global rate limit.";
                  }
    
                  leaf drop-src-mac-attack {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to source MAC address attacks.";
                  }
    
                  leaf drop-src-mac-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to source MAC rate limit.";
                  }
    
                  leaf drop-src-ip-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to source IP rate limit.";
                  }
    
                  leaf drop-if-src-ip-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to interface source IP rate limit.";
                  }
    
                  leaf drop-if-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to interface rate limit.";
                  }
    
                  leaf drop-lr-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to LR rate limit.";
                  }
    
                  leaf send-sip-unspecified {
                    type uint32;
                    units "packet";
                    description
                      "Number of sent NS packets with the source address as an unspecified address.";
                  }
    
                  leaf recv-sip-unspecified {
                    type uint32;
                    units "packet";
                    description
                      "Number of received NS packets with the source address as an unspecified address.";
                  }
    
                  leaf drop-dst-ip-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to destination IP rate limit.";
                  }
    
                  leaf drop-tgt-ip-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to target IP rate limit.";
                  }
                }  // list ns-slot
              }  // container ns-slots
    
              container ns-ifs {
                config false;
                description
                  "List of NS packets in these interfaces.";
                list ns-if {
                  key "if-name";
                  description
                    "Statistics of NS packets in the interface.";
                  leaf if-name {
                    type leafref {
                      path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                    }
                    description
                      "Interface name.";
                  }
    
                  leaf send-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of sent NS packets.";
                  }
    
                  leaf send-dip-ucast {
                    type uint32;
                    units "packet";
                    description
                      "Number of sent NS packets with the destination address as a unicast address.";
                  }
    
                  leaf send-dip-mcast {
                    type uint32;
                    units "packet";
                    description
                      "Number of sent NS packets with the destination address as a multicast address.";
                  }
    
                  leaf send-target-linklocal {
                    type uint32;
                    units "packet";
                    description
                      "Number of sent NS packets with the target address as a link-local address.";
                  }
    
                  leaf send-target-global {
                    type uint32;
                    units "packet";
                    description
                      "Number of sent NS packets with the target address as a global address.";
                  }
    
                  leaf recv-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of received NS packets.";
                  }
    
                  leaf recv-valid-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of received valid NS packets.";
                  }
    
                  leaf recv-dip-ucast {
                    type uint32;
                    units "packet";
                    description
                      "Number of received NS packets with the destination address as a unicast address.";
                  }
    
                  leaf recv-dip-mcast {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets with the destination address as a multicast address.";
                  }
    
                  leaf recv-target-linklocal {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets with the destination address as a link-local address.";
                  }
    
                  leaf recv-target-global {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets with the destination address as a global address.";
                  }
    
                  leaf drop-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of discarded NS packets.";
                  }
    
                  leaf drop-checksum-err {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to checksum errors.";
                  }
    
                  leaf drop-bad-len {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to bad packet length.";
                  }
    
                  leaf drop-bad-code {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to bad code.";
                  }
    
                  leaf drop-bad-hoplimit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to bad hoplimit.";
                  }
    
                  leaf drop-bad-src-mac {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to bad source MAC addresses.";
                  }
    
                  leaf drop-bad-dst-mac {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to bad destination MAC addresses.";
                  }
    
                  leaf drop-bad-tgt-mac {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to bad target MAC addresses.";
                  }
    
                  leaf drop-bad-src-ip {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to bad source IP addresses.";
                  }
    
                  leaf drop-bad-dst-ip {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to bad destination IP addresses.";
                  }
    
                  leaf drop-bad-tgt-ip {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to bad target IP addresses.";
                  }
    
                  leaf drop-bad-option {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to bad options.";
                  }
    
                  leaf drop-local-addr {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded because the source address is the local address.";
                  }
    
                  leaf drop-mac-check {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to source MAC address consistency check errors.";
                  }
    
                  leaf drop-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to global rate limit.";
                  }
    
                  leaf drop-src-mac-attack {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to source MAC address attacks.";
                  }
    
                  leaf drop-src-mac-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to source MAC rate limit.";
                  }
    
                  leaf drop-src-ip-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to source IP rate limit.";
                  }
    
                  leaf drop-if-src-ip-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to interface source IP rate limit.";
                  }
    
                  leaf drop-if-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to interface rate limit.";
                  }
    
                  leaf drop-lr-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to LR rate limit.";
                  }
    
                  leaf send-sip-unspecified {
                    type uint32;
                    units "packet";
                    description
                      "Number of sent NS packets with the source address as an unspecified address.";
                  }
    
                  leaf recv-sip-unspecified {
                    type uint32;
                    units "packet";
                    description
                      "Number of received NS packets with the source address as an unspecified address.";
                  }
    
                  leaf drop-dst-ip-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to destination IP rate limit.";
                  }
    
                  leaf drop-tgt-ip-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NS packets discarded due to target IP rate limit.";
                  }
                }  // list ns-if
              }  // container ns-ifs
            }  // container ns-stats
    
            container na-stats {
              description
                "Statistics of NA packets.";
              container na-global {
                description
                  "Statistics of global NA packets.";
                leaf send-total {
                  type uint32;
                  units "packet";
                  description
                    "Number of sent NA packets.";
                }
    
                leaf send-dip-ucast {
                  type uint32;
                  units "packet";
                  description
                    "Number of sent NA packets with the destination address as a unicast address.";
                }
    
                leaf send-dip-mcast {
                  type uint32;
                  units "packet";
                  description
                    "Number of sent NA packets with the destination address as a multicast address.";
                }
    
                leaf send-target-linklocal {
                  type uint32;
                  units "packet";
                  description
                    "Number of sent NA packets with the target address as a link-local address.";
                }
    
                leaf send-target-global {
                  type uint32;
                  units "packet";
                  description
                    "Number of sent NA packets with the target address as a global address.";
                }
    
                leaf recv-total {
                  type uint32;
                  units "packet";
                  description
                    "Number of received NA packets.";
                }
    
                leaf recv-valid-total {
                  type uint32;
                  units "packet";
                  description
                    "Number of received valid NA packets.";
                }
    
                leaf recv-dip-ucast {
                  type uint32;
                  units "packet";
                  description
                    "Number of received NA packets with the destination address as a unicast address.";
                }
    
                leaf recv-dip-mcast {
                  type uint32;
                  units "packet";
                  description
                    "Number of NA packets with the destination address as a multicast address.";
                }
    
                leaf recv-target-linklocal {
                  type uint32;
                  units "packet";
                  description
                    "Number of NA packets with the destination address as a link-local address.";
                }
    
                leaf recv-target-global {
                  type uint32;
                  units "packet";
                  description
                    "Number of NA packets with the destination address as a global address.";
                }
    
                leaf drop-total {
                  type uint32;
                  units "packet";
                  description
                    "Number of discarded NA packets.";
                }
    
                leaf drop-checksum-err {
                  type uint32;
                  units "packet";
                  description
                    "Number of NA packets discarded due to checksum errors.";
                }
    
                leaf drop-bad-len {
                  type uint32;
                  units "packet";
                  description
                    "Number of NA packets discarded due to bad packet length.";
                }
    
                leaf drop-bad-code {
                  type uint32;
                  units "packet";
                  description
                    "Number of NA packets discarded due to bad code.";
                }
    
                leaf drop-bad-hoplimit {
                  type uint32;
                  units "packet";
                  description
                    "Number of NA packets discarded due to bad hoplimit.";
                }
    
                leaf drop-bad-src-mac {
                  type uint32;
                  units "packet";
                  description
                    "Number of NA packets discarded due to bad source MAC addresses.";
                }
    
                leaf drop-bad-dst-mac {
                  type uint32;
                  units "packet";
                  description
                    "Number of NA packets discarded due to bad destination MAC addresses.";
                }
    
                leaf drop-bad-tgt-mac {
                  type uint32;
                  units "packet";
                  description
                    "Number of NA packets discarded due to bad target MAC addresses.";
                }
    
                leaf drop-bad-src-ip {
                  type uint32;
                  units "packet";
                  description
                    "Number of NA packets discarded due to bad source IP addresses.";
                }
    
                leaf drop-bad-dst-ip {
                  type uint32;
                  units "packet";
                  description
                    "Number of NA packets discarded due to bad destination IP addresses.";
                }
    
                leaf drop-bad-tgt-ip {
                  type uint32;
                  units "packet";
                  description
                    "Number of NA packets discarded due to bad target IP addresses.";
                }
    
                leaf drop-bad-option {
                  type uint32;
                  units "packet";
                  description
                    "Number of NA packets discarded due to bad options.";
                }
    
                leaf drop-local-addr {
                  type uint32;
                  units "packet";
                  description
                    "Number of NA packets discarded because the source address is the local address.";
                }
    
                leaf drop-mac-check {
                  type uint32;
                  units "packet";
                  description
                    "Number of NA packets discarded due to source MAC address consistency check errors.";
                }
    
                leaf drop-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of NA packets discarded due to global rate limit.";
                }
    
                leaf drop-src-mac-attack {
                  type uint32;
                  units "packet";
                  description
                    "Number of NA packets discarded due to source MAC address attacks.";
                }
    
                leaf drop-src-mac-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of NA packets discarded due to source MAC rate limit.";
                }
    
                leaf drop-src-ip-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of NA packets discarded due to source IP rate limit.";
                }
    
                leaf drop-if-src-ip-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of NA packets discarded due to interface source IP rate limit.";
                }
    
                leaf drop-if-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of NA packets discarded due to interface rate limit.";
                }
    
                leaf drop-lr-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of NA packets discarded due to LR rate limit.";
                }
    
                leaf drop-dst-ip-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of NA packets discarded due to destination IP rate limit.";
                }
    
                leaf drop-tgt-ip-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of NA packets discarded due to target IP rate limit.";
                }
              }  // container na-global
    
              container na-slots {
                description
                  "List of NA packets in these slots.";
                list na-slot {
                  key "slot-id";
                  description
                    "Statistics of NA packets in the slot.";
                  leaf slot-id {
                    type string {
                      length "1..24";
                    }
                    description "Slot ID.";
                  }
    
                  leaf send-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of send NA packets.";
                  }
    
                  leaf send-dip-ucast {
                    type uint32;
                    units "packet";
                    description
                      "Number of send NA packets with the destination address as a unicast address.";
                  }
    
                  leaf send-dip-mcast {
                    type uint32;
                    units "packet";
                    description
                      "Number of send NA packets with the destination address as a multicast address.";
                  }
    
                  leaf send-target-linklocal {
                    type uint32;
                    units "packet";
                    description
                      "Number of send NA packets with the target address as a link-local address.";
                  }
    
                  leaf send-target-global {
                    type uint32;
                    units "packet";
                    description
                      "Number of send NA packets with the target address as a global address.";
                  }
    
                  leaf recv-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of received NA packets.";
                  }
    
                  leaf recv-valid-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of received valid NA packets.";
                  }
    
                  leaf recv-dip-ucast {
                    type uint32;
                    units "packet";
                    description
                      "Number of received NA packets with the destination address as a unicast address.";
                  }
    
                  leaf recv-dip-mcast {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets with the destination address as a multicast address.";
                  }
    
                  leaf recv-target-linklocal {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets with the destination address as a link-local address.";
                  }
    
                  leaf recv-target-global {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets with the destination address as a global address.";
                  }
    
                  leaf drop-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of discarded NA packets.";
                  }
    
                  leaf drop-checksum-err {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to checksum errors.";
                  }
    
                  leaf drop-bad-len {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to bad packet length.";
                  }
    
                  leaf drop-bad-code {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to bad code.";
                  }
    
                  leaf drop-bad-hoplimit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to bad hoplimit.";
                  }
    
                  leaf drop-bad-src-mac {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to bad source MAC addresses.";
                  }
    
                  leaf drop-bad-dst-mac {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to bad destination MAC addresses.";
                  }
    
                  leaf drop-bad-tgt-mac {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to bad target MAC addresses.";
                  }
    
                  leaf drop-bad-src-ip {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to bad source IP addresses.";
                  }
    
                  leaf drop-bad-dst-ip {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to bad destination IP addresses.";
                  }
    
                  leaf drop-bad-tgt-ip {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to bad target IP addresses.";
                  }
    
                  leaf drop-bad-option {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to bad options.";
                  }
    
                  leaf drop-local-addr {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded because the source address is the local address.";
                  }
    
                  leaf drop-mac-check {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to source MAC address consistency check errors.";
                  }
    
                  leaf drop-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to global rate limit.";
                  }
    
                  leaf drop-src-mac-attack {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to source MAC address attacks.";
                  }
    
                  leaf drop-src-mac-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to source MAC rate limit.";
                  }
    
                  leaf drop-src-ip-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to source IP rate limit.";
                  }
    
                  leaf drop-if-src-ip-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to interface source IP rate limit.";
                  }
    
                  leaf drop-if-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to interface rate limit.";
                  }
    
                  leaf drop-lr-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to LR rate limit.";
                  }
    
                  leaf drop-dst-ip-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to destination IP rate limit.";
                  }
    
                  leaf drop-tgt-ip-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to target IP rate limit.";
                  }
                }  // list na-slot
              }  // container na-slots
    
              container na-ifs {
                description
                  "List of NA packets in these interfaces.";
                list na-if {
                  key "if-name";
                  description
                    "Statistics of NA packets in the interface.";
                  leaf if-name {
                    type leafref {
                      path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                    }
                    description
                      "Interface name.";
                  }
    
                  leaf send-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of send NA packets.";
                  }
    
                  leaf send-dip-ucast {
                    type uint32;
                    units "packet";
                    description
                      "Number of send NA packets with the destination address as a unicast address.";
                  }
    
                  leaf send-dip-mcast {
                    type uint32;
                    units "packet";
                    description
                      "Number of send NA packets with the destination address as a multicast address.";
                  }
    
                  leaf send-target-linklocal {
                    type uint32;
                    units "packet";
                    description
                      "Number of send NA packets with the target address as a link-local address.";
                  }
    
                  leaf send-target-global {
                    type uint32;
                    units "packet";
                    description
                      "Number of send NA packets with the target address as a global address.";
                  }
    
                  leaf recv-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of received NA packets.";
                  }
    
                  leaf recv-valid-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of received valid NA packets.";
                  }
    
                  leaf recv-dip-ucast {
                    type uint32;
                    units "packet";
                    description
                      "Number of received NA packets with the destination address as a unicast address.";
                  }
    
                  leaf recv-dip-mcast {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets with the destination address as a multicast address.";
                  }
    
                  leaf recv-target-linklocal {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets with the destination address as a link-local address.";
                  }
    
                  leaf recv-target-global {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets with the destination address as a global address.";
                  }
    
                  leaf drop-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of discarded NA packets.";
                  }
    
                  leaf drop-checksum-err {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to checksum errors.";
                  }
    
                  leaf drop-bad-len {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to bad packet length.";
                  }
    
                  leaf drop-bad-code {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to bad code.";
                  }
    
                  leaf drop-bad-hoplimit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to bad hoplimit.";
                  }
    
                  leaf drop-bad-src-mac {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to bad source MAC addresses.";
                  }
    
                  leaf drop-bad-dst-mac {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to bad destination MAC addresses.";
                  }
    
                  leaf drop-bad-tgt-mac {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to bad target MAC addresses.";
                  }
    
                  leaf drop-bad-src-ip {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to bad source IP addresses.";
                  }
    
                  leaf drop-bad-dst-ip {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to bad destination IP addresses.";
                  }
    
                  leaf drop-bad-tgt-ip {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to bad target IP addresses.";
                  }
    
                  leaf drop-bad-option {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to bad options.";
                  }
    
                  leaf drop-local-addr {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded because the source address is the local address.";
                  }
    
                  leaf drop-mac-check {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to source MAC address consistency check errors.";
                  }
    
                  leaf drop-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to global rate limit.";
                  }
    
                  leaf drop-src-mac-attack {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to source MAC address attacks.";
                  }
    
                  leaf drop-src-mac-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to source MAC rate limit.";
                  }
    
                  leaf drop-src-ip-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to source IP rate limit.";
                  }
    
                  leaf drop-if-src-ip-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to interface source IP rate limit.";
                  }
    
                  leaf drop-if-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to interface rate limit.";
                  }
    
                  leaf drop-lr-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to LR rate limit.";
                  }
    
                  leaf drop-dst-ip-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to destination IP rate limit.";
                  }
    
                  leaf drop-tgt-ip-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of NA packets discarded due to target IP rate limit.";
                  }
                }  // list na-if
              }  // container na-ifs
            }  // container na-stats
    
            container rs-stats {
              description
                "Statistics of RS packets.";
              container rs-global {
                description
                  "Statistics of global RS packets.";
                leaf send-total {
                  type uint32;
                  units "packet";
                  description
                    "Number of send RS packets.";
                }
    
                leaf send-dip-mcast {
                  type uint32;
                  units "packet";
                  description
                    "Number of send RS packets with the destination address as a multicast address.";
                }
    
                leaf recv-total {
                  type uint32;
                  units "packet";
                  description
                    "Number of received RS packets.";
                }
    
                leaf recv-valid-total {
                  type uint32;
                  units "packet";
                  description
                    "Number of received valid RS packets.";
                }
    
                leaf recv-dip-ucast {
                  type uint32;
                  units "packet";
                  description
                    "Number of received RS packets with the destination address as a unicast address.";
                }
    
                leaf recv-dip-mcast {
                  type uint32;
                  units "packet";
                  description
                    "Number of RS packets with the destination address as a multicast address.";
                }
    
                leaf drop-total {
                  type uint32;
                  units "packet";
                  description
                    "Number of discarded RS packets.";
                }
    
                leaf drop-checksum-err {
                  type uint32;
                  units "packet";
                  description
                    "Number of RS packets discarded due to checksum errors.";
                }
    
                leaf drop-bad-len {
                  type uint32;
                  units "packet";
                  description
                    "Number of RS packets discarded due to bad packet length.";
                }
    
                leaf drop-bad-code {
                  type uint32;
                  units "packet";
                  description
                    "Number of RS packets discarded due to bad code.";
                }
    
                leaf drop-bad-hoplimit {
                  type uint32;
                  units "packet";
                  description
                    "Number of RS packets discarded due to bad hoplimit.";
                }
    
                leaf drop-bad-src-mac {
                  type uint32;
                  units "packet";
                  description
                    "Number of RS packets discarded due to bad source MAC addresses.";
                }
    
                leaf drop-bad-dst-mac {
                  type uint32;
                  units "packet";
                  description
                    "Number of RS packets discarded due to bad destination MAC addresses.";
                }
    
                leaf drop-bad-tgt-mac {
                  type uint32;
                  units "packet";
                  description
                    "Number of RS packets discarded due to bad target MAC addresses.";
                }
    
                leaf drop-bad-src-ip {
                  type uint32;
                  units "packet";
                  description
                    "Number of RS packets discarded due to bad source IP addresses.";
                }
    
                leaf drop-bad-dst-ip {
                  type uint32;
                  units "packet";
                  description
                    "Number of RS packets discarded due to bad destination IP addresses.";
                }
    
                leaf drop-bad-option {
                  type uint32;
                  units "packet";
                  description
                    "Number of RS packets discarded due to bad options.";
                }
    
                leaf drop-local-addr {
                  type uint32;
                  units "packet";
                  description
                    "Number of RS packets discarded because the source address is the local address.";
                }
    
                leaf drop-mac-check {
                  type uint32;
                  units "packet";
                  description
                    "Number of RS packets discarded due to source MAC address consistency check errors.";
                }
    
                leaf drop-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of RS packets discarded due to global rate limit.";
                }
    
                leaf drop-src-mac-attack {
                  type uint32;
                  units "packet";
                  description
                    "Number of RS packets discarded due to source MAC address attacks.";
                }
    
                leaf drop-src-mac-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of RS packets discarded due to source MAC rate limit.";
                }
    
                leaf drop-src-ip-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of RS packets discarded due to source IP rate limit.";
                }
    
                leaf drop-if-src-ip-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of RS packets discarded due to interface source IP rate limit.";
                }
    
                leaf drop-if-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of RS packets discarded due to interface rate limit.";
                }
    
                leaf drop-lr-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of RS packets discarded due to LR rate limit.";
                }
    
                leaf drop-dst-ip-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of RS packets discarded due to destination IP rate limit.";
                }
              }  // container rs-global
    
              container rs-slots {
                description
                  "List of RS packets in these slots.";
                list rs-slot {
                  key "slot-id";
                  description
                    "Statistics of RS packets in the slot.";
                  leaf slot-id {
                    type string {
                      length "1..24";
                    }
                    description "Slot ID.";
                  }
    
                  leaf send-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of send RS packets.";
                  }
    
                  leaf send-dip-mcast {
                    type uint32;
                    units "packet";
                    description
                      "Number of send RS packets with the destination address as a multicast address.";
                  }
    
                  leaf recv-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of received RS packets.";
                  }
    
                  leaf recv-valid-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of received valid RS packets.";
                  }
    
                  leaf recv-dip-ucast {
                    type uint32;
                    units "packet";
                    description
                      "Number of received RS packets with the destination address as a unicast address.";
                  }
    
                  leaf recv-dip-mcast {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets with the destination address as a multicast address.";
                  }
    
                  leaf drop-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of discarded RS packets.";
                  }
    
                  leaf drop-checksum-err {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to checksum errors.";
                  }
    
                  leaf drop-bad-len {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to bad packet length.";
                  }
    
                  leaf drop-bad-code {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to bad code.";
                  }
    
                  leaf drop-bad-hoplimit {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to bad hoplimit.";
                  }
    
                  leaf drop-bad-src-mac {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to bad source MAC addresses.";
                  }
    
                  leaf drop-bad-dst-mac {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to bad destination MAC addresses.";
                  }
    
                  leaf drop-bad-tgt-mac {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to bad target MAC addresses.";
                  }
    
                  leaf drop-bad-src-ip {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to bad source IP addresses.";
                  }
    
                  leaf drop-bad-dst-ip {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to bad destination IP addresses.";
                  }
    
                  leaf drop-bad-option {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to bad options.";
                  }
    
                  leaf drop-local-addr {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded because the source address is the local address.";
                  }
    
                  leaf drop-mac-check {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to source MAC address consistency check errors.";
                  }
    
                  leaf drop-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to global rate limit.";
                  }
    
                  leaf drop-src-mac-attack {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to source MAC address attacks.";
                  }
    
                  leaf drop-src-mac-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to source MAC rate limit.";
                  }
    
                  leaf drop-src-ip-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to source IP rate limit.";
                  }
    
                  leaf drop-if-src-ip-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to interface source IP rate limit.";
                  }
    
                  leaf drop-if-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to interface rate limit.";
                  }
    
                  leaf drop-lr-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to LR rate limit.";
                  }
    
                  leaf drop-dst-ip-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to destination IP rate limit.";
                  }
                }  // list rs-slot
              }  // container rs-slots
    
              container rs-ifs {
                description
                  "List of RS packets in these interfaces.";
                list rs-if {
                  key "if-name";
                  description
                    "Statistics of RS packets in the interface.";
                  leaf if-name {
                    type leafref {
                      path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                    }
                    description
                      "Interface name.";
                  }
    
                  leaf send-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of send RS packets.";
                  }
    
                  leaf send-dip-mcast {
                    type uint32;
                    units "packet";
                    description
                      "Number of send RS packets with the destination address as a multicast address.";
                  }
    
                  leaf recv-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of received RS packets.";
                  }
    
                  leaf recv-valid-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of received valid RS packets.";
                  }
    
                  leaf recv-dip-ucast {
                    type uint32;
                    units "packet";
                    description
                      "Number of received RS packets with the destination address as a unicast address.";
                  }
    
                  leaf recv-dip-mcast {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets with the destination address as a multicast address.";
                  }
    
                  leaf drop-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of discarded RS packets.";
                  }
    
                  leaf drop-checksum-err {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to checksum errors.";
                  }
    
                  leaf drop-bad-len {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to bad packet length.";
                  }
    
                  leaf drop-bad-code {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to bad code.";
                  }
    
                  leaf drop-bad-hoplimit {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to bad hoplimit.";
                  }
    
                  leaf drop-bad-src-mac {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to bad source MAC addresses.";
                  }
    
                  leaf drop-bad-dst-mac {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to bad destination MAC addresses.";
                  }
    
                  leaf drop-bad-tgt-mac {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to bad target MAC addresses.";
                  }
    
                  leaf drop-bad-src-ip {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to bad source IP addresses.";
                  }
    
                  leaf drop-bad-dst-ip {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to bad destination IP addresses.";
                  }
    
                  leaf drop-bad-option {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to bad options.";
                  }
    
                  leaf drop-local-addr {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded because the source address is the local address.";
                  }
    
                  leaf drop-mac-check {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to source MAC address consistency check errors.";
                  }
    
                  leaf drop-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to global rate limit.";
                  }
    
                  leaf drop-src-mac-attack {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to source MAC address attacks.";
                  }
    
                  leaf drop-src-mac-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to source MAC rate limit.";
                  }
    
                  leaf drop-src-ip-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to source IP rate limit.";
                  }
    
                  leaf drop-if-src-ip-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to interface source IP rate limit.";
                  }
    
                  leaf drop-if-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to interface rate limit.";
                  }
    
                  leaf drop-lr-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to LR rate limit.";
                  }
    
                  leaf drop-dst-ip-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of RS packets discarded due to destination IP rate limit.";
                  }
                }  // list rs-if
              }  // container rs-ifs
            }  // container rs-stats
    
            container ra-stats {
              description
                "Statistics of RA packets.";
              container ra-global {
                description
                  "Statistics of global RA packets.";
                leaf send-total {
                  type uint32;
                  units "packet";
                  description
                    "Number of send RA packets.";
                }
    
                leaf send-dip-ucast {
                  type uint32;
                  units "packet";
                  description
                    "Number of send RA packets with the destination address as a unicast address.";
                }
    
                leaf send-dip-mcast {
                  type uint32;
                  units "packet";
                  description
                    "Number of send RA packets with the destination address as a multicast address.";
                }
    
                leaf recv-total {
                  type uint32;
                  units "packet";
                  description
                    "Number of received RA packets.";
                }
    
                leaf recv-valid-total {
                  type uint32;
                  units "packet";
                  description
                    "Number of received valid RA packets.";
                }
    
                leaf recv-dip-ucast {
                  type uint32;
                  units "packet";
                  description
                    "Number of received RA packets with the destination address as a unicast address.";
                }
    
                leaf recv-dip-mcast {
                  type uint32;
                  units "packet";
                  description
                    "Number of RA packets with the destination address as a multicast address.";
                }
    
                leaf drop-total {
                  type uint32;
                  units "packet";
                  description
                    "Number of discarded RA packets.";
                }
    
                leaf drop-checksum-err {
                  type uint32;
                  units "packet";
                  description
                    "Number of RA packets discarded due to checksum errors.";
                }
    
                leaf drop-bad-len {
                  type uint32;
                  units "packet";
                  description
                    "Number of RA packets discarded due to bad packet length.";
                }
    
                leaf drop-bad-code {
                  type uint32;
                  units "packet";
                  description
                    "Number of RA packets discarded due to bad code.";
                }
    
                leaf drop-bad-hoplimit {
                  type uint32;
                  units "packet";
                  description
                    "Number of RA packets discarded due to bad hoplimit.";
                }
    
                leaf drop-bad-src-mac {
                  type uint32;
                  units "packet";
                  description
                    "Number of RA packets discarded due to bad source MAC addresses.";
                }
    
                leaf drop-bad-dst-mac {
                  type uint32;
                  units "packet";
                  description
                    "Number of RA packets discarded due to bad destination MAC addresses.";
                }
    
                leaf drop-bad-tgt-mac {
                  type uint32;
                  units "packet";
                  description
                    "Number of RA packets discarded due to bad target MAC addresses.";
                }
    
                leaf drop-bad-src-ip {
                  type uint32;
                  units "packet";
                  description
                    "Number of RA packets discarded due to bad source IP addresses.";
                }
    
                leaf drop-bad-dst-ip {
                  type uint32;
                  units "packet";
                  description
                    "Number of RA packets discarded due to bad destination IP addresses.";
                }
    
                leaf drop-bad-option {
                  type uint32;
                  units "packet";
                  description
                    "Number of RA packets discarded due to bad options.";
                }
    
                leaf drop-local-addr {
                  type uint32;
                  units "packet";
                  description
                    "Number of RA packets discarded because the source address is the local address.";
                }
    
                leaf drop-mac-check {
                  type uint32;
                  units "packet";
                  description
                    "Number of RA packets discarded due to source MAC address consistency check errors.";
                }
    
                leaf drop-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of RA packets discarded due to global rate limit.";
                }
    
                leaf drop-src-mac-attack {
                  type uint32;
                  units "packet";
                  description
                    "Number of RA packets discarded due to source MAC address attacks.";
                }
    
                leaf drop-src-mac-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of RA packets discarded due to source MAC rate limit.";
                }
    
                leaf drop-src-ip-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of RA packets discarded due to source IP rate limit.";
                }
    
                leaf drop-if-src-ip-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of RA packets discarded due to interface source IP rate limit.";
                }
    
                leaf drop-if-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of RA packets discarded due to interface rate limit.";
                }
    
                leaf drop-lr-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of RA packets discarded due to LR rate limit.";
                }
    
                leaf drop-dst-ip-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of RA packets discarded due to destination IP rate limit.";
                }
              }  // container ra-global
    
              container ra-slots {
                description
                  "List of RA packets in these slots.";
                list ra-slot {
                  key "slot-id";
                  description
                    "Statistics of RA packets in the slot.";
                  leaf slot-id {
                    type string {
                      length "1..24";
                    }
                    description "Slot ID.";
                  }
    
                  leaf send-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of send RA packets.";
                  }
    
                  leaf send-dip-ucast {
                    type uint32;
                    units "packet";
                    description
                      "Number of send RA packets with the destination address as a unicast address.";
                  }
    
                  leaf send-dip-mcast {
                    type uint32;
                    units "packet";
                    description
                      "Number of send RA packets with the destination address as a multicast address.";
                  }
    
                  leaf recv-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of received RA packets.";
                  }
    
                  leaf recv-valid-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of received valid RA packets.";
                  }
    
                  leaf recv-dip-ucast {
                    type uint32;
                    units "packet";
                    description
                      "Number of received RA packets with the destination address as a unicast address.";
                  }
    
                  leaf recv-dip-mcast {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets with the destination address as a multicast address.";
                  }
    
                  leaf drop-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of discarded RA packets.";
                  }
    
                  leaf drop-checksum-err {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to checksum errors.";
                  }
    
                  leaf drop-bad-len {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to bad packet length.";
                  }
    
                  leaf drop-bad-code {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to bad code.";
                  }
    
                  leaf drop-bad-hoplimit {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to bad hoplimit.";
                  }
    
                  leaf drop-bad-src-mac {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to bad source MAC addresses.";
                  }
    
                  leaf drop-bad-dst-mac {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to bad destination MAC addresses.";
                  }
    
                  leaf drop-bad-tgt-mac {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to bad target MAC addresses.";
                  }
    
                  leaf drop-bad-src-ip {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to bad source IP addresses.";
                  }
    
                  leaf drop-bad-dst-ip {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to bad destination IP addresses.";
                  }
    
                  leaf drop-bad-option {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to bad options.";
                  }
    
                  leaf drop-local-addr {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded because the source address is the local address.";
                  }
    
                  leaf drop-mac-check {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to source MAC address consistency check errors.";
                  }
    
                  leaf drop-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to global rate limit.";
                  }
    
                  leaf drop-src-mac-attack {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to source MAC address attacks.";
                  }
    
                  leaf drop-src-mac-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to source MAC rate limit.";
                  }
    
                  leaf drop-src-ip-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to source IP rate limit.";
                  }
    
                  leaf drop-if-src-ip-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to interface source IP rate limit.";
                  }
    
                  leaf drop-if-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to interface rate limit.";
                  }
    
                  leaf drop-lr-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to LR rate limit.";
                  }
    
                  leaf drop-dst-ip-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to destination IP rate limit.";
                  }
                }  // list ra-slot
              }  // container ra-slots
    
              container ra-ifs {
                description
                  "List of RA packets in these interfaces.";
                list ra-if {
                  key "if-name";
                  description
                    "Statistics of RA packets in the interface.";
                  leaf if-name {
                    type leafref {
                      path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                    }
                    description
                      "Interface name.";
                  }
    
                  leaf send-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of send RA packets.";
                  }
    
                  leaf send-dip-ucast {
                    type uint32;
                    units "packet";
                    description
                      "Number of send RA packets with the destination address as a unicast address.";
                  }
    
                  leaf send-dip-mcast {
                    type uint32;
                    units "packet";
                    description
                      "Number of send RA packets with the destination address as a multicast address.";
                  }
    
                  leaf recv-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of received RA packets.";
                  }
    
                  leaf recv-valid-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of received valid RA packets.";
                  }
    
                  leaf recv-dip-ucast {
                    type uint32;
                    units "packet";
                    description
                      "Number of received RA packets with the destination address as a unicast address.";
                  }
    
                  leaf recv-dip-mcast {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets with the destination address as a multicast address.";
                  }
    
                  leaf drop-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of discarded RA packets.";
                  }
    
                  leaf drop-checksum-err {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to checksum errors.";
                  }
    
                  leaf drop-bad-len {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to bad packet length.";
                  }
    
                  leaf drop-bad-code {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to bad code.";
                  }
    
                  leaf drop-bad-hoplimit {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to bad hoplimit.";
                  }
    
                  leaf drop-bad-src-mac {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to bad source MAC addresses.";
                  }
    
                  leaf drop-bad-dst-mac {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to bad destination MAC addresses.";
                  }
    
                  leaf drop-bad-tgt-mac {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to bad target MAC addresses.";
                  }
    
                  leaf drop-bad-src-ip {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to bad source IP addresses.";
                  }
    
                  leaf drop-bad-dst-ip {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to bad destination IP addresses.";
                  }
    
                  leaf drop-bad-option {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to bad options.";
                  }
    
                  leaf drop-local-addr {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded because the source address is the local address.";
                  }
    
                  leaf drop-mac-check {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to source MAC address consistency check errors.";
                  }
    
                  leaf drop-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to global rate limit.";
                  }
    
                  leaf drop-src-mac-attack {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to source MAC address attacks.";
                  }
    
                  leaf drop-src-mac-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to source MAC rate limit.";
                  }
    
                  leaf drop-src-ip-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to source IP rate limit.";
                  }
    
                  leaf drop-if-src-ip-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to interface source IP rate limit.";
                  }
    
                  leaf drop-if-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to interface rate limit.";
                  }
    
                  leaf drop-lr-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to LR rate limit.";
                  }
    
                  leaf drop-dst-ip-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of RA packets discarded due to destination IP rate limit.";
                  }
                }  // list ra-if
              }  // container ra-ifs
            }  // container ra-stats
    
            container ndmiss-stats {
              description
                "Statistics of ND miss packets.";
              container ndmiss-global {
                description
                  "Statistics of global ND miss packets.";
                leaf recv-total {
                  type uint32;
                  units "packet";
                  description
                    "Number of received ND miss packets.";
                }
    
                leaf recv-valid-total {
                  type uint32;
                  units "packet";
                  description
                    "Number of received valid ND miss packets.";
                }
    
                leaf drop-total {
                  type uint32;
                  units "packet";
                  description
                    "Number of discarded ND miss packets.";
                }
    
                leaf drop-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of ND miss packets discarded due to global rate limit.";
                }
    
                leaf drop-if-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of ND miss discarded due to interface rate limit.";
                }
    
                leaf drop-lr-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of ND miss discarded due to LR rate limit.";
                }
    
                leaf drop-src-ip-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of ND miss discarded due to source IP rate limit.";
                }
    
                leaf drop-if-src-ip-rate-limit {
                  type uint32;
                  units "packet";
                  description
                    "Number of ND miss discarded due to interface source IP rate limit.";
                }
              }  // container ndmiss-global
    
              container ndmiss-slots {
                description
                  "List of ND miss packets in these slots.";
                list ndmiss-slot {
                  key "slot-id";
                  description
                    "Statistics of ND miss packets in the slot.";
                  leaf slot-id {
                    type string {
                      length "1..24";
                    }
                    description "Slot ID.";
                  }
    
                  leaf recv-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of received ND miss packets.";
                  }
    
                  leaf recv-valid-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of received valid ND miss packets.";
                  }
    
                  leaf drop-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of discarded ND miss packets.";
                  }
    
                  leaf drop-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of ND miss packets discarded due to global rate limit.";
                  }
    
                  leaf drop-if-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of ND miss discarded due to interface rate limit.";
                  }
    
                  leaf drop-lr-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of ND miss discarded due to LR rate limit.";
                  }
    
                  leaf drop-src-ip-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of ND miss discarded due to source IP rate limit.";
                  }
    
                  leaf drop-if-src-ip-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of ND miss discarded due to interface source IP rate limit.";
                  }
                }  // list ndmiss-slot
              }  // container ndmiss-slots
    
              container ndmiss-ifs {
                description
                  "List of ND miss packets in these interfaces.";
                list ndmiss-if {
                  key "if-name";
                  description
                    "Statistics of ND miss packets in the interface.";
                  leaf if-name {
                    type leafref {
                      path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                    }
                    description
                      "Interface name.";
                  }
    
                  leaf recv-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of received ND miss packets.";
                  }
    
                  leaf recv-valid-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of received valid ND miss packets.";
                  }
    
                  leaf drop-total {
                    type uint32;
                    units "packet";
                    description
                      "Number of discarded ND miss packets.";
                  }
    
                  leaf drop-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of ND miss packets discarded due to global rate limit.";
                  }
    
                  leaf drop-if-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of ND miss discarded due to interface rate limit.";
                  }
    
                  leaf drop-lr-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of ND miss discarded due to LR rate limit.";
                  }
    
                  leaf drop-src-ip-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of ND miss discarded due to source IP rate limit.";
                  }
    
                  leaf drop-if-src-ip-rate-limit {
                    type uint32;
                    units "packet";
                    description
                      "Number of ND miss discarded due to interface source IP rate limit.";
                  }
                }  // list ndmiss-if
              }  // container ndmiss-ifs
            }  // container ndmiss-stats
          }  // container nd-pkt-stats
    
          container anti-attack {
            description
              "Configure ND anti-attack for global.";
            container source-mac-receive {
              description
                "Configure the ND anti-attack based on packet source MAC address.";
              container every-mac-rate-limits {
                description
                  "List of rate limits for receiving ND packets based on every source MAC address.";
                list every-mac-rate-limit {
                  key "packet-type";
                  description
                    "Configure the rate limit for receiving ND packets based on every source MAC address.";
                  leaf packet-type {
                    type nd-pkt-type;
                    description
                      "ND packet type.";
                  }
    
                  leaf value {
                    type uint16 {
                      range "0..5000";
                    }
                    units "pps";
                    mandatory true;
                    description
                      "Rate limit of receiving ND packet.";
                  }
                }  // list every-mac-rate-limit
              }  // container every-mac-rate-limits
    
              container mac-rate-limits {
                description
                  "List of rate limits for receiving ND packets based on specified source MAC address.";
                list mac-rate-limit {
                  key "packet-type mac-addr";
                  description
                    "Configure the rate limit for receiving ND packets based on specified source MAC address.";
                  leaf packet-type {
                    type nd-pkt-type;
                    description
                      "ND packet type.";
                  }
    
                  leaf mac-addr {
                    type pub-type:mac-address {
                      pattern
                        '[0-9a-fA-F][0|2|4|6|8|aA|cC|eE][0-9a-fA-F]{2}(-[0-9a-fA-F]{4}){2}';
                    }
                    description
                      "Source MAC address.";
                  }
    
                  leaf value {
                    type uint16 {
                      range "0..5000";
                    }
                    units "pps";
                    mandatory true;
                    description
                      "Rate limit of receiving ND packet.";
                  }
                }  // list mac-rate-limit
              }  // container mac-rate-limits
            }  // container source-mac-receive
    
            container source-ip-receive {
              description
                "Configure the ND anti-attack based on packet or miss source IP address.";
              container every-ip-rate-limits {
                description
                  "List of rate limits for receiving ND packets or ND miss based on every source IP address.";
                list every-ip-rate-limit {
                  key "packet-type";
                  description
                    "Configure the rate limit for receiving ND packets or ND miss based on every source IP address.";
                  leaf packet-type {
                    type nd-pkt-evt-type;
                    description
                      "ND packet type or ND miss.";
                  }
    
                  leaf value {
                    type uint16 {
                      range "0..5000";
                    }
                    units "pps";
                    mandatory true;
                    description
                      "Rate limit of receiving ND packet or ND miss.";
                  }
                }  // list every-ip-rate-limit
              }  // container every-ip-rate-limits
    
              uses nd-ip-rate-limits-type;
            }  // container source-ip-receive
    
            container destination-ip-receive {
              description
                "Configure the ND anti-attack based on packet destination IP address.";
              container every-ip-rate-limits {
                description
                  "List of rate limits for receiving ND packets based on every destination IP address.";
                list every-ip-rate-limit {
                  key "packet-type";
                  description
                    "Configure the rate limit for receiving ND packets based on every destination IP address.";
                  leaf packet-type {
                    type nd-pkt-type;
                    description
                      "ND packet type.";
                  }
    
                  leaf value {
                    type uint16 {
                      range "0..5000";
                    }
                    units "pps";
                    mandatory true;
                    description
                      "Rate limit of receiving ND packet.";
                  }
                }  // list every-ip-rate-limit
              }  // container every-ip-rate-limits
    
              container ip-rate-limits {
                description
                  "List of rate limits for receiving ND packets based on specified destination IP address.";
                list ip-rate-limit {
                  key "packet-type ipv6-addr";
                  description
                    "Configure the rate limit for receiving ND packets based on specified destination IP address.";
                  leaf packet-type {
                    type nd-pkt-type;
                    description
                      "ND packet type.";
                  }
    
                  leaf ipv6-addr {
                    type inet:ipv6-address-no-zone;
                    description
                      "Destination IPv6 address, the address cannot be the unspecified address.";
                  }
    
                  leaf value {
                    type uint16 {
                      range "0..5000";
                    }
                    units "pps";
                    mandatory true;
                    description
                      "Rate limit of receiving ND packet.";
                  }
                }  // list ip-rate-limit
              }  // container ip-rate-limits
            }  // container destination-ip-receive
    
            container target-ip-receive {
              description
                "Configure the ND anti-attack based on packet target IP address.";
              container every-ip-rate-limits {
                description
                  "List of rate limits for receiving ND packets based on every target IP address.";
                list every-ip-rate-limit {
                  key "packet-type";
                  description
                    "Configure the rate limit for receiving ND packets based on every target IP address.";
                  leaf packet-type {
                    type nd-tgt-pkt-type;
                    description
                      "ND packet type.";
                  }
    
                  leaf value {
                    type uint16 {
                      range "0..5000";
                    }
                    units "pps";
                    mandatory true;
                    description
                      "Rate limit of receiving ND packet.";
                  }
                }  // list every-ip-rate-limit
              }  // container every-ip-rate-limits
    
              container ip-rate-limits {
                description
                  "List of rate limits for receiving ND packets based on specified target IP address.";
                list ip-rate-limit {
                  key "packet-type ipv6-addr";
                  description
                    "Configure the rate limit for receiving ND packets based on specified target IP address.";
                  leaf packet-type {
                    type nd-tgt-pkt-type;
                    description
                      "ND packet type.";
                  }
    
                  leaf ipv6-addr {
                    type inet:ipv6-address-no-zone;
                    description
                      "Target IPv6 address, the address cannot be the unspecified address or a multicast address.";
                  }
    
                  leaf value {
                    type uint16 {
                      range "0..5000";
                    }
                    units "pps";
                    mandatory true;
                    description
                      "Rate limit of receiving ND packet.";
                  }
                }  // list ip-rate-limit
              }  // container ip-rate-limits
            }  // container target-ip-receive
          }  // container anti-attack
    
          container send-rate-limit {
            description
              "Configure ND send rate limit for global.";
            container multicast-rate-limits {
              description
                "List of ND multicast packet sending rate limits.";
              list multicast-rate-limit {
                key "packet-type";
                description
                  "Configure the rate limit of sending ND multicast packet.";
                leaf packet-type {
                  type nd-pkt-type;
                  description "ND packet type.";
                }
    
                leaf value {
                  type uint16 {
                    range "1..10240";
                  }
                  units "pps";
                  must
                    "((../packet-type = 'NA') and (../value <= 10240)) or (not(../packet-type = 'NA') and (../value <= 1000))";
                  mandatory true;
                  description
                    "Rate limit of sending ND multicast packet, when the packet type is NS, RS or RA, the maximum value is 1000.";
                }
              }  // list multicast-rate-limit
            }  // container multicast-rate-limits
          }  // container send-rate-limit
    
          container anti-attack-records {
            config false;
            description
              "Statistics of query anti-attack record.";
            container packet-records {
              description
                "List of query packet anti-attack record.";
              list packet-record {
                key "if-name record-index";
                description
                  "Statistics of query packet anti-attack record.";
                leaf if-name {
                  type leafref {
                    path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                  }
                  description "Interface name.";
                }
    
                leaf record-index {
                  type uint32;
                  description "Record index.";
                }
    
                leaf packet-type {
                  type nd-pkt-type;
                  description "ND packet type.";
                }
    
                leaf source-address {
                  type inet:ipv6-address-no-zone;
                  description
                    "Source IPv6 address of a packet.";
                }
    
                leaf dest-address {
                  type inet:ipv6-address-no-zone;
                  description
                    "Destination IPv6 address of a packet.";
                }
    
                leaf target-address {
                  type inet:ipv6-address-no-zone;
                  description
                    "Target IPv6 address of a packet.";
                }
    
                leaf source-mac {
                  type pub-type:mac-address;
                  description
                    "Source MAC address of a packet.";
                }
    
                leaf dest-mac {
                  type pub-type:mac-address;
                  description
                    "Destination MAC address of a packet.";
                }
    
                leaf pe-vlan {
                  type uint32 {
                    range "1..4094";
                  }
                  description "Outer VLAN tag.";
                }
    
                leaf ce-vlan {
                  type uint32 {
                    range "1..4094";
                  }
                  description "Inner VLAN tag.";
                }
    
                leaf attack-times {
                  type uint32;
                  description "Attacked times.";
                }
    
                leaf last-attack-time {
                  type yang:date-and-time;
                  description
                    "Last attacked time.";
                }
    
                leaf dropped-reason {
                  type string {
                    length "1..63";
                  }
                  description "Dropped reason.";
                }
              }  // list packet-record
            }  // container packet-records
    
            container miss-records {
              description
                "List of query miss anti-attack record.";
              list miss-record {
                key "if-name target-address";
                description
                  "Statistics of query miss anti-attack record.";
                leaf if-name {
                  type leafref {
                    path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                  }
                  description "Interface name.";
                }
    
                leaf target-address {
                  type inet:ipv6-address-no-zone;
                  description
                    "Target IPv6 address of a miss message.";
                }
    
                leaf source-address {
                  type inet:ipv6-address-no-zone;
                  description
                    "Source IPv6 address of a miss message.";
                }
              }  // list miss-record
            }  // container miss-records
          }  // container anti-attack-records
        }  // container ipv6-nd
    
        rpc nd-pkt-clear-all {
          ext:node-ref "/ipv6-nd:ipv6-nd/ipv6-nd:nd-pkt-stats";
          description
            "To clear all ND statistics.";
        }  // rpc nd-pkt-clear-all
    
        rpc ipv6-neighbor-clear {
          ext:node-ref "/ipv6-nd:ipv6-nd/ipv6-nd:ipv6-neighbors";
          description
            "To clear IPv6 dynamic neighbors.";
          input {
            choice clear-type {
              description
                "IPv6 neighbor clear type.";
              case if-ip {
                description
                  "Clear by specified Interface name or Interface name and IPv6 address.";
                leaf if-name {
                  type leafref {
                    path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                  }
                  mandatory true;
                  description "Interface name.";
                }
    
                leaf ipv6-addr {
                  type inet:ipv6-address-no-zone;
                  description "IPv6 address.";
                }
              }  // case if-ip
            }  // choice clear-type
          }
        }  // rpc ipv6-neighbor-clear
    
        rpc anti-attack-packet-record-clear {
          ext:node-ref "/ipv6-nd:ipv6-nd/ipv6-nd:anti-attack-records/ipv6-nd:packet-records";
          description
            "To clear packet anti-attack records.";
          input {
            leaf if-name {
              type leafref {
                path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
              }
              description "Interface name.";
            }
          }
        }  // rpc anti-attack-packet-record-clear
    
        rpc anti-attack-miss-record-clear {
          ext:node-ref "/ipv6-nd:ipv6-nd/ipv6-nd:anti-attack-records/ipv6-nd:miss-records";
          description
            "To clear miss anti-attack records.";
          input {
            leaf if-name {
              type leafref {
                path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
              }
              description "Interface name.";
            }
          }
        }  // rpc anti-attack-miss-record-clear
    
        augment /bd:bd/bd:instances/bd:instance {
          description
            "List of Bridge-Domain Neighbor Multicast-Suppress Information.";
          container nd-bd-property {
            must
              "not(unicast-forward and proxy-reply)";
            description
              "Configure Bridge-Domain neighbor multicast-suppress information.";
            leaf unicast-forward {
              type boolean;
              default "false";
              description
                "Enable/disable Bridge-Domain unicast forward.";
            }
    
            leaf proxy-reply {
              type boolean;
              default "false";
              description
                "Enable/disable Bridge-Domain proxy reply.";
            }
    
            leaf mismatch-discard {
              when
                "../unicast-forward='true' or ../proxy-reply='true'";
              type boolean;
              default "false";
              description
                "Enable/disable Bridge-Domain mismatch discard.";
            }
          }  // container nd-bd-property
        }
    
        augment /ifm:ifm/ifm:interfaces/ifm:interface/ip:ipv6 {
          when
            "../ifm:type!='Tunnel' and ../ifm:type!='LoopBack' and ../ifm:type!='ServiceIf' and ../ifm:type!='Virtual-if'";
          description
            "All configurations of the ND under the interface.";
          container nd-collection {
            description
              "Configure ND interface configurations.";
            container if-property {
              description
                "Configure ND interface configurations.";
              leaf retrans-timer {
                when
                  "../../../../ifm:type!='Serial'";
                type uint32 {
                  range "1000..4294967295";
                }
                units "ms";
                default "1000";
                description
                  "To set the retransmission timer of a router.";
              }
    
              leaf nud-reach-time {
                when
                  "../../../../ifm:type!='Ip-Trunk' and ../../../../ifm:type!='Pos' and ../../../../ifm:type!='Mp-group' and ../../../../ifm:type!='Serial'";
                type uint32 {
                  range "1..3600000";
                }
                units "ms";
                default "1200000";
                description
                  "To set the reachable time of a neighbor.";
              }
    
              leaf attempts-value {
                when
                  "../../../../ifm:type!='Serial'";
                type uint32 {
                  range "0..600";
                }
                default "1";
                description
                  "To set the number of sent NS messages during DAD.";
              }
    
              leaf ns-mcast-flag {
                when
                  "../../../../ethernet:ethernet/ethernet:l3-sub-interface/ethernet:dot1q-termination or ../../../../ethernet:ethernet/ethernet:l3-sub-interface/ethernet:qinq-termination";
                type nd-switch-state;
                default "off";
                description
                  "Flag of enabling multicast.";
              }
    
              leaf max-dyn-nb-num {
                when
                  "../../../../ifm:type!='Ip-Trunk' and ../../../../ifm:type!='Pos' and ../../../../ifm:type!='Mp-group' and ../../../../ifm:type!='Serial'";
                type uint64 {
                  range "0..147456";
                }
                default "0";
                description
                  "The maximum of limitation of dynamic neighbor.";
              }
    
              leaf dad-timeout {
                when
                  "../../../../ethernet:ethernet/ethernet:l3-sub-interface/ethernet:dot1q-termination or ../../../../ethernet:ethernet/ethernet:l3-sub-interface/ethernet:qinq-termination";
                type uint32 {
                  range "1..60";
                }
                units "s";
                default "1";
                description "Timeout of DAD.";
              }
    
              leaf nud-attempts {
                when
                  "../../../../ifm:type!='Ip-Trunk' and ../../../../ifm:type!='Pos' and ../../../../ifm:type!='Mp-group' and ../../../../ifm:type!='Serial'";
                type uint8 {
                  range "1..10";
                }
                default "3";
                description
                  "ND entries NUD attempts.";
              }
    
              leaf na-glean {
                when
                  "../../../../ifm:type!='Ip-Trunk' and ../../../../ifm:type!='Pos' and ../../../../ifm:type!='Mp-group' and ../../../../ifm:type!='Serial'";
                type nd-switch-state;
                default "off";
                description
                  "Flag of generating NB when receiving NA packet.";
              }
    
              leaf ma-flag {
                when
                  "../../../../ifm:type!='MEth' and ../../../../ifm:type!='Serial'";
                type nd-switch-state;
                default "off";
                description
                  "Flag of obtaining the routable address through state-based automatic configuration.";
              }
    
              leaf o-flag {
                when
                  "../../../../ifm:type!='MEth' and ../../../../ifm:type!='Serial'";
                type nd-switch-state;
                default "off";
                description
                  "Flag of setting state-based automatic configuration.";
              }
    
              leaf ra-halt-flag {
                when
                  "../../../../ifm:type!='MEth'";
                type nd-switch-state;
                default "on";
                description
                  "To suppress the advertisement of RA packets.";
              }
    
              leaf max-interval {
                when
                  "../../../../ifm:type!='MEth'";
                type uint32 {
                  range "4..1800";
                }
                units "s";
                default "600";
                description
                  "The maximum interval between periodic RA packets sent on this interface.";
              }
    
              leaf min-interval {
                when
                  "../../../../ifm:type!='MEth'";
                type uint32 {
                  range "3..1350";
                }
                units "s";
                must
                  "../max-interval >= ../min-interval and ../min-interval <= 0.75 * ../max-interval";
                description
                  "The minimum interval between periodic RA packets sent on this interface.";
              }
    
              leaf ra-lifetime {
                when
                  "../../../../ifm:type!='MEth'";
                type uint32 {
                  range "0|4..9000";
                }
                units "s";
                must
                  "../ra-lifetime = 0 or (../ra-lifetime != 0 and ../ra-lifetime >= ../max-interval)";
                description
                  "TTL of RA packets. If the value is 0, it implies that this node is not a router. And the value from 1 to 3 is invalid.";
              }
    
              leaf ra-preference {
                when
                  "../../../../ifm:type!='MEth'";
                type nd-route-preference;
                default "medium";
                description
                  "RA router preference.";
              }
    
              leaf ra-prefix-flag {
                when
                  "../../../../ifm:type!='MEth'";
                type nd-switch-state;
                default "on";
                description
                  "Flag of RA packet carry prefix information.";
              }
    
              leaf ra-mtu-flag {
                when
                  "../../../../ifm:type!='MEth'";
                type nd-switch-state;
                default "on";
                description
                  "Flag of RA packet carry MTU option.";
              }
    
              leaf strict-flag {
                when
                  "../../../../ifm:type!='Mp-group' and ../../../../ifm:type!='Serial'";
                type boolean;
                default "false";
                description
                  "Enable/disable strict security mode.";
              }
    
              leaf ts-fuzz-factor {
                when
                  "../../../../ifm:type!='Serial'";
                type uint16 {
                  range "0..1000";
                }
                units "s";
                default "1";
                description
                  "Fuzz factor for timestamp option.";
              }
    
              leaf ts-clock-drift {
                when
                  "../../../../ifm:type!='Serial'";
                type uint8 {
                  range "0..100";
                }
                default "1";
                description
                  "Drift for timestamp option.";
              }
    
              leaf ts-delta {
                when
                  "../../../../ifm:type!='Serial'";
                type uint16 {
                  range "0..1000";
                }
                units "s";
                default "300";
                description
                  "Delta for timestamp option.";
              }
    
              leaf rsa-min-key-len {
                when
                  "../../../../ifm:type!='Serial'";
                type uint16 {
                  range "384..4096";
                }
                units "bit";
                must
                  "(../rsa-min-key-len<=../rsa-max-key-len)";
                default "512";
                description
                  "The minimum length of acceptable RSA key pair.";
              }
    
              leaf rsa-max-key-len {
                when
                  "../../../../ifm:type!='Serial'";
                type uint16 {
                  range "384..4096";
                }
                units "bit";
                default "2048";
                description
                  "The maximum length of acceptable RSA key pair.";
              }
    
              leaf stale-time {
                when
                  "../../../../ifm:type!='Ip-Trunk' and ../../../../ifm:type!='Pos' and ../../../../ifm:type!='Mp-group' and ../../../../ifm:type!='Serial'";
                type uint32 {
                  range "60..172800";
                }
                units "s";
                description
                  "Aging time of the stale state.";
              }
    
              leaf collect-host-flag {
                when
                  "../../../../ifm:type='Vbdif'";
                type nd-switch-state;
                default "off";
                description
                  "Flag of collecting host Information.";
              }
    
              leaf generate-rd-enable {
                when
                  "../../../../ifm:type='Vbdif'";
                type nd-switch-state;
                default "off";
                description
                  "Flag of generating redirect ND table.";
              }
    
              leaf nud-interval {
                when
                  "../../../../ifm:type!='Ip-Trunk' and ../../../../ifm:type!='Pos' and ../../../../ifm:type!='Mp-group' and ../../../../ifm:type!='Serial'";
                type uint32 {
                  range "1000..4294967295";
                }
                units "ms";
                default "5000";
                description
                  "ND entries NUD interval.";
              }
    
              leaf hop-limit {
                type uint8 {
                  range "0..255";
                }
                description
                  "IPv6 packet hop limit.";
              }
    
              leaf link-down-trigger-del-flag {
                when
                  "../../../../ifm:type='Vlanif'";
                type nd-switch-state;
                default "off";
                description
                  "Flag of link down trigger fast deletion of ND entries.";
              }
            }  // container if-property
    
            container proxys {
              when
                "../../../ifm:type!='MEth' and ../../../ifm:type!='Ip-Trunk' and ../../../ifm:type!='Serial' and ../../../ifm:type!='Pos' and ../../../ifm:type!='Mp-group'";
              description
                "Configure list of ND proxy.";
              leaf route-proxy {
                when
                  "../../../../ifm:type!='PW-VE'";
                type nd-switch-state;
                default "off";
                description "Router proxy.";
              }
    
              leaf inner-vlan-proxy {
                when
                  "(../../../../ifm:class='sub-interface' and ../../../../ifm:type!='PW-VE') or ../../../../ifm:type='Vlanif'";
                type nd-switch-state;
                default "off";
                description "InnerVLAN proxy.";
              }
    
              leaf inter-vlan-proxy {
                when
                  "(../../../../ifm:class='sub-interface' and ../../../../ifm:type!='PW-VE') or ../../../../ifm:type='Vlanif'";
                type nd-switch-state;
                default "off";
                description "InterVLAN proxy.";
              }
    
              leaf anyway-proxy {
                type nd-switch-state;
                default "off";
                description "Anyway proxy.";
              }
    
              leaf local-proxy {
                when
                  "../../../../ifm:type='Vbdif'";
                type nd-switch-state;
                default "off";
                description "Local proxy.";
              }
            }  // container proxys
    
            container anti-attack {
              when "../../../ifm:type!='Serial'";
              description
                "Configure ND anti-attack for interface.";
              container receive-rate-limits {
                description
                  "List of rate limits for receiving ND packets.";
                list receive-rate-limit {
                  key "type";
                  description
                    "Configure the rate limit for receiving ND packet or ND miss.";
                  leaf type {
                    type nd-pkt-evt-type;
                    description
                      "ND packet type or ND miss.";
                  }
    
                  leaf value {
                    type uint16 {
                      range "0..5000";
                    }
                    units "pps";
                    mandatory true;
                    description
                      "Rate limit of receiving ND packet or ND miss.";
                  }
                }  // list receive-rate-limit
              }  // container receive-rate-limits
    
              container source-ip-receive {
                description
                  "Configure the ND anti-attack based on packet or miss source IP address.";
                uses nd-ip-rate-limits-type;
              }  // container source-ip-receive
            }  // container anti-attack
    
            container static-neighbor {
              description
                "Configure static neighbor entry.";
              container common-ifs {
                when
                  "../../../../ifm:type!='Vlanif' and ../../../../ifm:type!='Vbdif'";
                description
                  "List of static neighbor entry on common interface.";
                list common-if {
                  key "ipv6-addr";
                  description
                    "Configure static neighbor entry on common interface.";
                  leaf ipv6-addr {
                    type inet:ipv6-address-no-zone;
                    description
                      "IPv6 address of a static neighbor entry.";
                  }
    
                  leaf mac-addr {
                    type pub-type:mac-address;
                    mandatory true;
                    description "MAC address.";
                  }
                }  // list common-if
              }  // container common-ifs
    
              container dot1q-termination-ifs {
                when
                  "../../../../ethernet:ethernet/ethernet:l3-sub-interface/ethernet:dot1q-termination";
                description
                  "List of static neighbor entry on dot1q termination interface.";
                list dot1q-termination-if {
                  key "ipv6-addr";
                  description
                    "Configure static neighbor entry on dot1q termination interface.";
                  leaf ipv6-addr {
                    type inet:ipv6-address-no-zone;
                    description
                      "IPv6 address of a static neighbor entry.";
                  }
    
                  leaf mac-addr {
                    type pub-type:mac-address {
                      pattern
                        '[0-9a-fA-F][0|2|4|6|8|aA|cC|eE][0-9a-fA-F]{2}(-[0-9a-fA-F]{4}){2}';
                    }
                    mandatory true;
                    description "MAC address.";
                  }
    
                  leaf pe-vlan {
                    type uint16 {
                      range "1..4094";
                    }
                    mandatory true;
                    description
                      "Outer VLAN tag.";
                  }
                }  // list dot1q-termination-if
              }  // container dot1q-termination-ifs
    
              container qinq-termination-ifs {
                when
                  "../../../../ethernet:ethernet/ethernet:l3-sub-interface/ethernet:qinq-termination";
                description
                  "List of static neighbor entry on qinq termination interface.";
                list qinq-termination-if {
                  key "ipv6-addr";
                  description
                    "Configure static neighbor entry on qinq termination interface.";
                  leaf ipv6-addr {
                    type inet:ipv6-address-no-zone;
                    description
                      "IPv6 address of a static neighbor entry.";
                  }
    
                  leaf mac-addr {
                    type pub-type:mac-address {
                      pattern
                        '[0-9a-fA-F][0|2|4|6|8|aA|cC|eE][0-9a-fA-F]{2}(-[0-9a-fA-F]{4}){2}';
                    }
                    mandatory true;
                    description "MAC address.";
                  }
    
                  leaf pe-vlan {
                    type uint16 {
                      range "1..4094";
                    }
                    mandatory true;
                    description
                      "Outer VLAN tag.";
                  }
    
                  leaf ce-vlan {
                    type uint16 {
                      range "1..4094";
                    }
                    mandatory true;
                    description
                      "Inner VLAN tag.";
                  }
                }  // list qinq-termination-if
              }  // container qinq-termination-ifs
    
              container vlan-ifs {
                when
                  "../../../../ifm:type='Vlanif'";
                description
                  "List of static neighbor entry on VLAN interface.";
                list vlan-if {
                  key "ipv6-addr";
                  description
                    "Configure static neighbor entry on VLAN interface.";
                  leaf ipv6-addr {
                    type inet:ipv6-address-no-zone;
                    description
                      "IPv6 address of a static neighbor entry.";
                  }
    
                  leaf mac-addr {
                    type pub-type:mac-address {
                      pattern
                        '[0-9a-fA-F][0|2|4|6|8|aA|cC|eE][0-9a-fA-F]{2}(-[0-9a-fA-F]{4}){2}';
                    }
                    mandatory true;
                    description "MAC address.";
                  }
    
                  leaf vlan-id {
                    ext:support-filter "true";
                    type uint16 {
                      range "1..4094";
                    }
                    mandatory true;
                    description "VLAN ID.";
                  }
    
                  leaf port-name {
                    type leafref {
                      path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                    }
                    mandatory true;
                    description "Port name.";
                  }
                }  // list vlan-if
              }  // container vlan-ifs
            }  // container static-neighbor
    
            container send-rate-limit {
              when "../../../ifm:type!='Serial'";
              description
                "Configure ND send rate limit for interface.";
              container packet-rate-limits {
                description
                  "List of ND packet sending rate limits.";
                list packet-rate-limit {
                  key "packet-type";
                  description
                    "Configure the rate limit of sending ND packet.";
                  leaf packet-type {
                    type nd-pkt-type;
                    must
                      "not((../packet-type = 'RA') and (../../../../../../ifm:type='MEth'))";
                    description
                      "ND packet type.";
                  }
    
                  leaf value {
                    type uint16 {
                      range "1..10240";
                    }
                    units "pps";
                    must
                      "((../packet-type = 'NA') and (../value <= 10240)) or (not(../packet-type = 'NA') and (../value <= 1000))";
                    mandatory true;
                    description
                      "Rate limit of sending ND packet, when the packet type is NS, RS or RA, the maximum value is 1000.";
                  }
                }  // list packet-rate-limit
              }  // container packet-rate-limits
    
              container multicast-rate-limits {
                description
                  "List of ND multicast packet sending rate limits.";
                list multicast-rate-limit {
                  key "packet-type";
                  description
                    "Configure the rate limit of sending ND multicast packet.";
                  leaf packet-type {
                    type nd-pkt-type;
                    must
                      "not((../packet-type = 'RA') and (../../../../../../ifm:type='MEth'))";
                    description
                      "ND packet type.";
                  }
    
                  leaf value {
                    type uint16 {
                      range "1..10240";
                    }
                    units "pps";
                    must
                      "((../packet-type = 'NA') and (../value <= 10240)) or (not(../packet-type = 'NA') and (../value <= 1000))";
                    mandatory true;
                    description
                      "Rate limit of sending ND multicast packet, when the packet type is NS, RS or RA, the maximum value is 1000.";
                  }
                }  // list multicast-rate-limit
              }  // container multicast-rate-limits
            }  // container send-rate-limit
    
            container ra-property {
              when "../../../ifm:type!='MEth'";
              description
                "Configure ND RA configurations under the interface.";
              container ra-control {
                description
                  "Configure ND RA configurations.";
                leaf unicast-send {
                  type nd-switch-state;
                  default "off";
                  description
                    "Flag of Sending RA unicast packet when receive a RS packet.";
                }
              }  // container ra-control
    
              container ra-routes {
                description
                  "List of RA route information option.";
                list ra-route {
                  key "prefix-addr prefix-len";
                  description
                    "Configure RA route information option.";
                  leaf prefix-addr {
                    type inet:ipv6-address-no-zone;
                    description
                      "The IPv6 prefix address of RA route information.";
                  }
    
                  leaf prefix-len {
                    type uint32 {
                      range "0..128";
                    }
                    description
                      "The prefix length of RA route information.";
                  }
    
                  leaf lifetime {
                    type uint32;
                    units "s";
                    mandatory true;
                    description
                      "The lifetime of RA route information.";
                  }
    
                  leaf preference {
                    type nd-route-preference;
                    default "medium";
                    description
                      "The preference of RA route information.";
                  }
                }  // list ra-route
              }  // container ra-routes
    
              container dns-server-addresses {
                description
                  "List of DNS server address.";
                list dns-server-address {
                  key "ipv6-address";
                  description
                    "Configure the DNS server address.";
                  leaf ipv6-address {
                    type inet:ipv6-address-no-zone;
                    description
                      "Address of IPv6 recursive DNS server. The address cannot be a multicast address or an unspecified address.";
                  }
    
                  leaf lifetime {
                    type uint32 {
                      range "1..max";
                    }
                    units "s";
                    description
                      "The maximum time over which this RDNSS address may be used for name resolution.";
                  }
                }  // list dns-server-address
              }  // container dns-server-addresses
    
              container dns-search-suffixes {
                description
                  "List of DNS search list.";
                list dns-search-suffix {
                  key "suffix-name";
                  description
                    "Configure DNS suffix name.";
                  leaf suffix-name {
                    ext:case-sensitivity "lower-or-upper";
                    type string {
                      length "1..63";
                    }
                    description
                      "Domain name of DNS search list.";
                  }
    
                  leaf lifetime {
                    type uint32 {
                      range "1..max";
                    }
                    units "s";
                    description
                      "The maximum time over which this DNSSL domain name may be used for name resolution.";
                  }
                }  // list dns-search-suffix
              }  // container dns-search-suffixes
            }  // container ra-property
    
            container strict-prefix-learn {
              when
                "../../../ifm:type!='Vlanif' and ../../../ifm:type!='Vbdif' and ../../../ifm:type!='Global-VE'";
              description
                "Configure strict prefix learning of interface.";
              leaf switch {
                type nd-switch-state;
                description
                  "ND prefix learning strict.";
              }
            }  // container strict-prefix-learn
          }  // container nd-collection
        }
    
        augment /ifm:ifm/ifm:interfaces/ifm:interface {
          description
            "List of ND configurations under ifm interface.";
          container nd-dyn-nb-limit {
            description
              "Configure the maximum of limitation of dynamic neighbor.";
            container vlan-limits {
              description
                "List of the maximum of limitation of dynamic neighbor based on VLAN.";
              list vlan-limit {
                key "vlan-id";
                description
                  "Configure the maximum of limitation of dynamic neighbor based on VLAN.";
                leaf vlan-id {
                  type uint16 {
                    range "1..4094";
                  }
                  description "VLAN ID.";
                }
    
                leaf max-dyn-nb-num {
                  type uint32 {
                    range "0..147456";
                  }
                  mandatory true;
                  description
                    "The maximum of limitation of dynamic neighbor.";
                }
              }  // list vlan-limit
            }  // container vlan-limits
          }  // container nd-dyn-nb-limit
        }
      }  // module huawei-ipv6-nd
    

© 2023 YumaWorks, Inc. All rights reserved.