huawei-pp6

IPv6 related configurations.

  • Version: 2020-03-16

    huawei-pp6@2020-03-16


    
      module huawei-pp6 {
    
        yang-version 1;
    
        namespace "urn:huawei:yang:huawei-pp6";
    
        prefix pp6;
    
        import huawei-ifm {
          prefix ifm;
        }
        import huawei-ip {
          prefix ip;
        }
        import huawei-extension {
          prefix ext;
        }
        import huawei-network-instance {
          prefix ni;
        }
        import ietf-inet-types {
          prefix inet;
        }
        import huawei-l3vpn {
          prefix l3vpn;
        }
    
        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
          "IPv6 related configurations.";
    
        revision "2020-03-16" {
          description "Modify Icmp6Source.";
          reference
            "Huawei private.";
    
        }
    
        revision "2019-12-30" {
          description "Init revision.";
          reference
            "Huawei private.";
    
        }
    
        ext:task-name "ip-stack";
    
        typedef extension-header-type {
          type enumeration {
            enum "fragment" {
              value 44;
              description
                "IPv6 fragment extension header.";
            }
            enum "esp" {
              value 50;
              description
                "IPv6 encapsulating security payload extension header.";
            }
            enum "ah" {
              value 51;
              description
                "IPv6 authentication extension header.";
            }
          }
          description
            "Description of extension header type.";
        }
    
        typedef filter-rule-type {
          type enumeration {
            enum "deny" {
              value 0;
              description
                "Deny process specified IPv6 extension header packets.";
            }
            enum "permit" {
              value 1;
              description
                "Permit process specified IPv6 extension header.";
            }
          }
          description
            "Description of filter-rule-type.";
        }
    
        typedef options-all-flag-type {
          type enumeration {
            enum "false" {
              value 0;
              description
                "Not all options of an IPv6 extension header.";
            }
            enum "true" {
              value 1;
              description
                "All options of an IPv6 extension header.";
            }
          }
          description
            "Description of options all flag type.";
        }
    
        typedef icmp-pkt-type {
          type enumeration {
            enum "port-unreachable" {
              value 1;
              description
                "Indicates that the packet type is port unreachable error packet.";
            }
            enum "hoplimit-exceeded" {
              value 2;
              description
                "Indicates that the packet type is hoplimit exceeded error packet.";
            }
            enum "all-tracert" {
              value 3;
              description
                "Indicates that the packet type is hoplimit exceeded and port unreachable error packet.";
            }
          }
          description
            "Description of icmpv6 error packet type.";
        }
    
        typedef fragment-flag-type {
          type enumeration {
            enum "no" {
              value 0;
              description
                "Clear IPv6 path MTU fragment flag.";
            }
            enum "yes" {
              value 1;
              description
                "Set IPv6 path MTU fragment flag.";
            }
          }
          description
            "Description of fragment flag type.";
        }
    
        typedef pmtu-type {
          type enumeration {
            enum "static" {
              value 0;
              description
                "Static IPv6 path MTU entry.";
            }
            enum "dynamic" {
              value 1;
              description
                "Dynamic IPv6 path MTU entry.";
            }
          }
          description
            "Description of IPv6 path MTU type, static or dynamic.";
        }
    
        typedef switch-type {
          type enumeration {
            enum "allow" {
              value 0;
              description
                "Allow packets to pass.";
            }
            enum "deny" {
              value 1;
              description
                "Reject packets to pass.";
            }
          }
          description
            "Description of switch type.";
        }
    
        typedef send-or-receive-type {
          type enumeration {
            enum "send" {
              value 0;
              description "Packet sending.";
            }
            enum "receive" {
              value 1;
              description "Packet reception.";
            }
          }
          description
            "Description of packet action.";
        }
    
        typedef icmp6-name-type {
          type enumeration {
            enum "network-unreachable" {
              value 1;
              description
                "Type = 1, Code = 0. Not in the range of all-famous-receive-switch.";
            }
            enum "host-unreachable" {
              value 2;
              description
                "Type = 1, Code = 3. Not in the range of all-famous-receive-switch.";
            }
            enum "port-unreachable" {
              value 3;
              description "Type = 1, Code = 4.";
            }
            enum "packet-too-big" {
              value 4;
              description "Type = 2, Code = 0.";
            }
            enum "hop-limit-exceeded" {
              value 5;
              description "Type = 3, Code = 0.";
            }
            enum "echo" {
              value 6;
              description
                "Type = 128, Code = 0.";
            }
            enum "echo-reply" {
              value 7;
              description
                "Type = 129, Code = 0.";
            }
            enum "router-solicitation" {
              value 8;
              description
                "Type = 133, Code = 0.";
            }
            enum "router-advertisement" {
              value 9;
              description
                "Type = 134, Code = 0.";
            }
            enum "neighbor-solicitation" {
              value 10;
              description
                "Type = 135, Code = 0.";
            }
            enum "neighbor-advertisement" {
              value 11;
              description
                "Type = 136, Code = 0.";
            }
            enum "redirect" {
              value 12;
              description
                "Type = 137, Code = 0. Not in the range of all-famous-receive-switch.";
            }
            enum "multicast-listener-query" {
              value 13;
              description
                "Type = 130, code = 0.";
            }
            enum "multicast-listener-report" {
              value 14;
              description
                "Type = 131, code = 0.";
            }
            enum "multicast-listener-done" {
              value 15;
              description
                "Type = 132, code = 0.";
            }
            enum "multicast-listener-report-v2" {
              value 16;
              description
                "Type = 143, code = 0.";
            }
            enum "un-famous" {
              value 17;
              description
                "The ICMPv6 type that is not in the range of all-famous-send-switch, nor in the range of all-famous-receive-switch.";
            }
          }
          description
            "Description of ICMPv6 name type.";
        }
    
        typedef multicast-echo-config-type {
          type enumeration {
            enum "allow" {
              value 1;
              description
                "Multicast ping request packets will be processed on the interface.";
            }
            enum "deny" {
              value 2;
              description
                "Multicast ping request packets will not be processed on the interface.";
            }
          }
          description
            "Whether to process the multicast ping request packets on the interface.";
        }
    
        container pp6 {
          description
            "IPv6 related configurations.";
          container ipv6-global {
            description
              "Configure global PP6 attribute configuration.";
            leaf bucket-size {
              type uint32 {
                range "1..200";
              }
              default "10";
              description
                "Number of ICMPv6 token buckets.";
            }
    
            leaf interval {
              type uint32 {
                range "0..2147483647";
              }
              units "ms";
              default "100";
              description
                "ICMPv6 interval for sending a specified number of ICMPv6 token buckets.";
            }
    
            leaf echo-reply {
              type boolean;
              status deprecated;
              description
                "Enable/disable sending enabling of echo reply packets.";
            }
    
            leaf host-unreach {
              type boolean;
              status deprecated;
              description
                "Enable/disable host-unreachable error.";
            }
    
            leaf port-unreach {
              type boolean;
              status deprecated;
              description
                "Enable/disable port-unreachable error.";
            }
    
            leaf timeout {
              type uint32 {
                range "10..100";
              }
              units "min";
              default "10";
              description "Path-mtu lifecycle.";
            }
    
            leaf black-list-flag {
              type boolean;
              default "false";
              description
                "Enable/disable the function enabled IPv6 blacklist packet permit.";
            }
    
            leaf too-big-limit-flag {
              type boolean;
              default "true";
              description
                "Enable/disable the function enabled toobig packet process rate limit.";
            }
    
            leaf permit-incomplete-fragment {
              type boolean;
              default "false";
              description
                "Enable/disable global flag of allowing first fragment with incomplete IPv6 header chain.";
            }
    
            leaf reassemble-timeout {
              type uint32 {
                range "5..120";
              }
              units "s";
              default "60";
              description
                "The timeout for the split packets reorganization.";
            }
    
            leaf multicast-echo-receive {
              type switch-type;
              default "allow";
              description
                "Indicates whether to process the multicast ping request packets.";
            }
    
            leaf source-ingress-interface {
              type boolean;
              default "false";
              description
                "Enable/disable source selection for the incoming interface of ttl-exceeded packets.";
            }
          }  // container ipv6-global
    
          container icmp6-pkt-switch {
            description
              "Configure the ICMPv6 packet sending and receiving switch. All-famous is enabled by default. When matching, a single type of configuration is preferred, followed by an all-famous configuration.";
            leaf all-famous-send-switch {
              type switch-type;
              default "allow";
              description
                "Switches for all famous send types. But, the configuration in node each-type-switch will be used first, if it exists. Refer to the definition in type icmp6-name-type for the scope of all-famous send types.";
            }
    
            leaf all-famous-receive-switch {
              type switch-type;
              default "allow";
              description
                "Switches for all famous receive types. But, the configuration in node each-type-switch will be used first, if it exists. Refer to the definition in type icmp6-name-type for the scope of all-famous receive types.";
            }
    
            container each-type-switchs {
              description
                "List of switches of a single ICMPv6 type.";
              list each-type-switch {
                key "type code send-or-receive";
                description
                  "Configure switch for single ICMPv6 type list.";
                leaf type {
                  type uint32 {
                    range "0..255";
                  }
                  description "The ICMPv6 type.";
                }
    
                leaf code {
                  type uint32 {
                    range "0..255";
                  }
                  description "The ICMPv6 code.";
                }
    
                leaf send-or-receive {
                  type send-or-receive-type;
                  description
                    "Packet reception or packet sending.";
                }
    
                leaf switch {
                  type switch-type;
                  mandatory true;
                  description
                    "Switch for this ICMPv6 types.";
                }
    
                leaf name {
                  type icmp6-name-type;
                  config false;
                  description
                    "The name of ICMPv6 type.";
                }
              }  // list each-type-switch
            }  // container each-type-switchs
          }  // container icmp6-pkt-switch
    
          container extension-header-filter-globals {
            description
              "Configure global IPv6 extension header filter configurations.";
            container hop-by-hop-switch {
              description
                "Configure the IPv6 packet with hop-by-hop options extension header switch.";
              leaf all-options {
                type filter-rule-type;
                description
                  "All options of IPv6 extension header switch.";
              }
    
              container options {
                description
                  "List of some options of IPv6 extension header switch.";
                list option {
                  key "option-code";
                  description
                    "Configure some options of IPv6 extension header switch.";
                  leaf option-code {
                    type uint8 {
                      range "0..255";
                    }
                    description
                      "Option code of IPv6 extension header.";
                  }
    
                  leaf filter-rule {
                    ext:support-filter "true";
                    type filter-rule-type;
                    mandatory true;
                    description
                      "Filter policy of IPv6 packet.";
                  }
                }  // list option
              }  // container options
            }  // container hop-by-hop-switch
    
            container routing-switch {
              description
                "Configure the IPv6 packet with routing options extension header switch.";
              leaf all-options {
                type filter-rule-type;
                description
                  "All options of IPv6 extension header switch.";
              }
    
              container options {
                description
                  "List of some options of IPv6 extension header switch.";
                list option {
                  key "option-code";
                  description
                    "Configure some options of IPv6 extension header switch.";
                  leaf option-code {
                    type uint8 {
                      range "0..255";
                    }
                    description
                      "Option code of IPv6 extension header.";
                  }
    
                  leaf filter-rule {
                    ext:support-filter "true";
                    type filter-rule-type;
                    mandatory true;
                    description
                      "Filter policy of IPv6 packet.";
                  }
                }  // list option
              }  // container options
            }  // container routing-switch
    
            container destination-switch {
              description
                "Configure the IPv6 packet with destination options extension header switch.";
              leaf all-options {
                type filter-rule-type;
                description
                  "All options of IPv6 extension header switch.";
              }
    
              container options {
                description
                  "List of some options of IPv6 extension header switch.";
                list option {
                  key "option-code";
                  description
                    "Configure some options of IPv6 extension header switch.";
                  leaf option-code {
                    type uint8 {
                      range "0..255";
                    }
                    description
                      "Option code of IPv6 extension header.";
                  }
    
                  leaf filter-rule {
                    ext:support-filter "true";
                    type filter-rule-type;
                    mandatory true;
                    description
                      "Filter policy of IPv6 packet.";
                  }
                }  // list option
              }  // container options
            }  // container destination-switch
    
            container no-option-exh-switchs {
              description
                "List of the IPv6 packet with no options extension header switches.";
              list no-option-exh-switch {
                key "exh-type";
                description
                  "Configure the IPv6 packet with no options extension header switches.";
                leaf exh-type {
                  type extension-header-type;
                  description
                    "IPv6 extension header type which have no option.";
                }
    
                leaf filter-rule {
                  ext:support-filter "true";
                  type filter-rule-type;
                  mandatory true;
                  description
                    "Filter policy of IPv6 packet.";
                }
              }  // list no-option-exh-switch
            }  // container no-option-exh-switchs
          }  // container extension-header-filter-globals
    
          container ipv6-stat {
            config false;
            description
              "Statistics of querying for the statistics on IPv6 packets.";
            leaf total-snd {
              type uint32;
              config false;
              description
                "Total count of sent packets.";
            }
    
            leaf local-snd {
              type uint32;
              config false;
              description
                "Count of packets that are sent out locally.";
            }
    
            leaf forwd-snd {
              type uint32;
              config false;
              description
                "Count of forwarded packets.";
            }
    
            leaf rawpkt-snd {
              type uint32;
              config false;
              description
                "Count of sent Raw packets.";
            }
    
            leaf discard-snd {
              type uint32;
              config false;
              description
                "Count of discarded packets due to the limit of sending rate.";
            }
    
            leaf fragmented {
              type uint32;
              config false;
              description
                "Count of sent fragmented packets.";
            }
    
            leaf fragment-snd {
              type uint32;
              config false;
              description
                "Count of sent packet fragments.";
            }
    
            leaf fragment-fail {
              type uint32;
              config false;
              description
                "Count of packet fragments that fail to be sent.";
            }
    
            leaf multi-snd {
              type uint32;
              config false;
              description
                "Count of sent multicast packets.";
            }
    
            leaf total-rcv {
              type uint32;
              config false;
              description
                "Total count of received packets.";
            }
    
            leaf local-rcv {
              type uint32;
              config false;
              description
                "Count of packets that are received locally.";
            }
    
            leaf hop-exceed-rcv {
              type uint32;
              config false;
              description
                "Count of received packets whose number of hops exceeds the upper limit.";
            }
    
            leaf head-err-rcv {
              type uint32;
              config false;
              description
                "Count of packets whose headers are incorrect.";
            }
    
            leaf too-big-rcv {
              type uint32;
              config false;
              description
                "Count of received oversized packets.";
            }
    
            leaf routfail-rcv {
              type uint32;
              config false;
              description
                "Count of received packets whose routes are unreachable.";
            }
    
            leaf addrerr-rcv {
              type uint32;
              config false;
              description
                "Count of received packets with incorrect addresses.";
            }
    
            leaf protoerr-rcv {
              type uint32;
              config false;
              description
                "Count of received packets whose protocols are incorrect.";
            }
    
            leaf truncated-rcv {
              type uint32;
              config false;
              description
                "Count of received truncated packets.";
            }
    
            leaf opterr-rcv {
              type uint32;
              config false;
              description
                "Count of received packets whose options are incorrect.";
            }
    
            leaf frags-rcv {
              type uint32;
              config false;
              description
                "Count of received packet fragments.";
            }
    
            leaf reassed-rcv {
              type uint32;
              config false;
              description
                "Count of received packets that are reassembled.";
            }
    
            leaf reass-timeout-rcv {
              type uint32;
              config false;
              description
                "Count of received packets whose reassembling is timeout.";
            }
    
            leaf multi-rcv {
              type uint32;
              config false;
              description
                "Count of received multicast packets.";
            }
    
            leaf hop-by-hop-option {
              type uint32;
              config false;
              description
                "Count of received packets whose extension headers are Hop-by-Hop options.";
            }
    
            leaf mobility-option {
              type uint32;
              config false;
              description
                "Count of received packets whose extension headers are mobility header.";
            }
    
            leaf dest-option {
              type uint32;
              config false;
              description
                "Count of received packets whose extension headers are destination options.";
            }
    
            leaf routing-option {
              type uint32;
              config false;
              description
                "Count of received packets whose extension headers are routing header.";
            }
    
            leaf fragment-option {
              type uint32;
              config false;
              description
                "Count of received packets whose extension headers are fragment header.";
            }
    
            leaf auth-option {
              type uint32;
              config false;
              description
                "Count of received packets whose extension headers are authentication header.";
            }
    
            leaf encap-option {
              type uint32;
              config false;
              description
                "Count of received packets whose extension headers are encapsulation header.";
            }
    
            leaf no-header {
              type uint32;
              config false;
              description
                "Count of received packets without any packet header after extension headers.";
            }
    
            leaf tlv-length-error {
              type uint32;
              config false;
              description
                "Count of received packets whose options length are incorrect.";
            }
    
            leaf opt-length-error {
              type uint32;
              config false;
              description
                "Count of received packets whose extension headers length are incorrect.";
            }
    
            leaf opt-unknown {
              type uint32;
              config false;
              description
                "Count of received packets whose extension headers type are incorrect.";
            }
    
            leaf type-unknown {
              type uint32;
              config false;
              description
                "Count of received packets whose options type are incorrect.";
            }
    
            leaf hbh-option-filter {
              type uint32;
              config false;
              description
                "Count of filtered packets whose extension headers are Hop-by-Hop options.";
            }
    
            leaf dest-option-filter {
              type uint32;
              config false;
              description
                "Count of filtered packets whose extension headers are destination options.";
            }
    
            leaf rout-option-filter {
              type uint32;
              config false;
              description
                "Count of filtered packets whose extension headers are routing header.";
            }
    
            leaf frag-option-filter {
              type uint32;
              config false;
              description
                "Count of filtered packets whose extension headers are fragment header.";
            }
    
            leaf ah-option-filter {
              type uint32;
              config false;
              description
                "Count of filtered packets whose extension headers are authentication header.";
            }
    
            leaf esp-option-filter {
              type uint32;
              config false;
              description
                "Count of filtered packets whose extension headers are encapsulation header.";
            }
          }  // container ipv6-stat
    
          container icmp6-stat {
            config false;
            description
              "Statistics of querying for the statistics on ICMPv6 packets.";
            leaf total-sent {
              type uint32;
              config false;
              description
                "Total count of sent packets.";
            }
    
            leaf unreach-sent {
              type uint32;
              config false;
              description
                "Count of sent unreachable packets.";
            }
    
            leaf prohibit-sent {
              type uint32;
              config false;
              description
                "Count of sent prohibit packets.";
            }
    
            leaf hoplimit-sent {
              type uint32;
              config false;
              description
                "Count of sent hoplimit packets.";
            }
    
            leaf para-pro-sent {
              type uint32;
              config false;
              description
                "Count of sent parameter error packets.";
            }
    
            leaf too-big-sent {
              type uint32;
              config false;
              description
                "Count of sent too big packets.";
            }
    
            leaf echo-sent {
              type uint32;
              config false;
              description
                "Count of sent echo packets.";
            }
    
            leaf echo-reply-sent {
              type uint32;
              config false;
              description
                "Count of sent echo reply packets.";
            }
    
            leaf rs-sent {
              type uint32;
              config false;
              description
                "Count of sent RS packets.";
            }
    
            leaf ra-sent {
              type uint32;
              config false;
              description
                "Count of sent RA packets.";
            }
    
            leaf ns-sent {
              type uint32;
              config false;
              description
                "Count of sent NS packets.";
            }
    
            leaf na-sent {
              type uint32;
              config false;
              description
                "Count of sent NA packets.";
            }
    
            leaf redirect-sent {
              type uint32;
              config false;
              description
                "Count of sent redirect packets.";
            }
    
            leaf rate-limit-sent {
              type uint32;
              config false;
              description
                "Count of sent rate limit packets.";
            }
    
            leaf total-rcv {
              type uint32;
              config false;
              description
                "Count of total receive packets.";
            }
    
            leaf format-err-rcv {
              type uint32;
              config false;
              description
                "Count of receive format error packets.";
            }
    
            leaf checksum-err-rcv {
              type uint32;
              config false;
              description
                "Count of receive checksum error packets.";
            }
    
            leaf tooshort-rcv {
              type uint32;
              config false;
              description
                "Count of receive too short packets.";
            }
    
            leaf bad-code-rcv {
              type uint32;
              config false;
              description
                "Count of receive bad code packets.";
            }
    
            leaf bad-length-rcv {
              type uint32;
              config false;
              description
                "Count of receive bad length packets.";
            }
    
            leaf unknown-info-rcv {
              type uint32;
              config false;
              description
                "Count of receive unknown info packets.";
            }
    
            leaf unknown-err-rcv {
              type uint32;
              config false;
              description
                "Count of receive unknown error packets.";
            }
    
            leaf unreachable-rcv {
              type uint32;
              config false;
              description
                "Count of receive unreachable packets.";
            }
    
            leaf prohibit-rcv {
              type uint32;
              config false;
              description
                "Count of managed restricted unreachable ICMPv6 packets received.";
            }
    
            leaf hop-exceed-rcv {
              type uint32;
              config false;
              description
                "Count of received packets whose number of hops exceeds the upper limit.";
            }
    
            leaf para-pro-rcv {
              type uint32;
              config false;
              description
                "Count of received ICMPv6 message packets is incorrect.";
            }
    
            leaf too-big-rcv {
              type uint32;
              config false;
              description
                "Count of ICMPv6 messages received in oversized messages.";
            }
    
            leaf echo-rcv {
              type uint32;
              config false;
              description
                "Count of ICMPv6 request packets received.";
            }
    
            leaf echo-reply-rcv {
              type uint32;
              config false;
              description
                "Count of received ICMPv6 response packets.";
            }
    
            leaf rs-rcv {
              type uint32;
              config false;
              description
                "Count of received RS messages.";
            }
    
            leaf ra-rcv {
              type uint32;
              config false;
              description
                "Count of received RA messages.";
            }
    
            leaf ns-rcv {
              type uint32;
              config false;
              description
                "Count of received NS messages.";
            }
    
            leaf na-rcv {
              type uint32;
              config false;
              description
                "Count of received NA messages.";
            }
    
            leaf redirect-rcv {
              type uint32;
              config false;
              description
                "Count of redirect packets received.";
            }
    
            leaf rate-limit-rcv {
              type uint32;
              config false;
              description
                "Count of unreceived packets due to ICMPv6 error handling rate limit.";
            }
    
            leaf echo-reject {
              type uint32;
              config false;
              description
                "Count of ICMPv6 echo packets discarded due to switch shutdown.";
            }
    
            leaf echoreply-reject {
              type uint32;
              config false;
              description
                "Count of ICMPv6 echoreply packets discarded due to switch shutdown.";
            }
    
            leaf hop-exceed-reject {
              type uint32;
              config false;
              description
                "Count of ICMPv6 exceed hop-limit packets discarded due to switch shutdown.";
            }
    
            leaf port-unreach-reject {
              type uint32;
              config false;
              description
                "Count of ICMPv6 messages port unreachable discarded due to the switch shutdown.";
            }
    
            leaf too-big-reject {
              type uint32;
              config false;
              description
                "Count of ICMPv6 messages oversized packets discarded due to switch shutdown.";
            }
    
            leaf ns-reject {
              type uint32;
              config false;
              description
                "Count of NS packets discarded due to switch shutdown.";
            }
    
            leaf na-reject {
              type uint32;
              config false;
              description
                "Count of NA packets discarded due to switch shutdown.";
            }
    
            leaf rs-reject {
              type uint32;
              config false;
              description
                "Count of RS packets discarded due to switch shutdown.";
            }
    
            leaf ra-reject {
              type uint32;
              config false;
              description
                "Count of RA packets discarded due to switch shutdown.";
            }
    
            leaf redirect-reject {
              type uint32;
              config false;
              description
                "Count of redirect packets discarded due to switch shutdown.";
            }
    
            leaf host-unreachable-reject {
              type uint32;
              config false;
              description
                "Count of host unreachable ICMPv6 packets discarded due to switch shutdown.";
            }
    
            leaf net-unreachable-reject {
              type uint32;
              config false;
              description
                "Count of net unreachable ICMPv6 packets discarded due to switch shutdown.";
            }
    
            leaf fragment-timeout-reject {
              type uint32;
              config false;
              description
                "Count of fragment timeout ICMPv6 packets discarded due to switch shutdown.";
            }
    
            leaf error-head-reject {
              type uint32;
              config false;
              description
                "Count of error head ICMPv6 packets discarded due to switch shutdown.";
            }
    
            leaf hostadmin-prohibit-reject {
              type uint32;
              config false;
              description
                "Count of hostadmin prohibit ICMPv6 packets discarded due to switch shutdown.";
            }
    
            leaf unkonwn-ipv6opt-reject {
              type uint32;
              config false;
              description
                "Count of unkonwn IPv6 option ICMPv6 packets discarded due to switch shutdown.";
            }
    
            leaf unknown-nexthead-reject {
              type uint32;
              config false;
              description
                "Count of unknown next-header ICMPv6 packets discarded due to switch shutdown.";
            }
    
            leaf other-reject {
              type uint32;
              config false;
              description
                "Count of other ICMPv6 packets discarded due to switch shutdown.";
            }
    
            leaf multicast-echo-reject {
              type uint32;
              config false;
              description
                "Count of ICMPv6 packets discarded due to echo multicast switch shutdown.";
            }
          }  // container icmp6-stat
    
          container ipv6-pmtus {
            description
              "Configure IPv6 path MTU and statistics of IPv6 path MTU entries which can be static, or dynamic.";
            container ipv6-pmtu-statics {
              description
                "List of static IPv6 path MTU entry configurations.";
              list ipv6-pmtu-static {
                key "destination-address vrf-name";
                description
                  "Configure static IPv6 path MTU entry.";
                leaf destination-address {
                  type inet:ipv6-address-no-zone;
                  description
                    "Destination IPv6 address, excluding IPv6 loopback interface address, IPv6 local link address, IPv6 unspecified address, IPv6 multicast address, and IPv6 map address.";
                }
    
                leaf vrf-name {
                  type leafref {
                    path "/ni:network-instance/ni:instances/ni:instance/ni:name";
                  }
                  must
                    "/ni:network-instance/ni:instances/ni:instance[ni:name=current()]/l3vpn:afs/l3vpn:af[l3vpn:type='ipv6-unicast']";
                  description "VPN name.";
                }
    
                leaf mtu {
                  type uint32 {
                    range "1280..10000";
                  }
                  units "Byte";
                  default "1500";
                  description
                    "IPv6 path MTU value.";
                }
              }  // list ipv6-pmtu-static
            }  // container ipv6-pmtu-statics
    
            container ipv6-pmtu-states {
              config false;
              description
                "List of information about IPv6 path MTU entry query.";
              list ipv6-pmtu-state {
                key "destination-address vrf-name";
                description
                  "Statistics of IPv6 path MTU entries which can be static, or dynamic.";
                leaf destination-address {
                  type inet:ipv6-address-no-zone;
                  description
                    "Destination IPv6 address, excluding IPv6 loopback interface address, IPv6 local link address, IPv6 unspecified address, IPv6 multicast address, and IPv6 map address.";
                }
    
                leaf vrf-name {
                  type leafref {
                    path "/ni:network-instance/ni:instances/ni:instance/ni:name";
                  }
                  description "VPN name.";
                }
    
                leaf mtu {
                  type uint32;
                  units "Byte";
                  description
                    "IPv6 path MTU value.";
                }
    
                leaf life-time {
                  type uint32;
                  units "min";
                  description
                    "Remaining lifetime of a dynamic PMTU entry.";
                }
    
                leaf mtu-type {
                  ext:support-filter "true";
                  type pmtu-type;
                  description
                    "Static type or dynamic type.";
                }
    
                leaf fragment-flag {
                  type fragment-flag-type;
                  description
                    "Fragmentation flag, packets are fragmented or not fragmented.";
                }
              }  // list ipv6-pmtu-state
            }  // container ipv6-pmtu-states
          }  // container ipv6-pmtus
        }  // container pp6
    
        rpc ipv6-pmtu-clear {
          ext:node-ref "/pp6:pp6/pp6:ipv6-pmtu-states";
          description
            "Clearance of IPv6 path MTU based on VPN names.";
          input {
            leaf vrf-name {
              type leafref {
                path "/ni:network-instance/ni:instances/ni:instance/ni:name";
              }
              description
                "Clearance of IPv6 path MTU Dynamic statistics based on VPN names.";
            }
          }
        }  // rpc ipv6-pmtu-clear
    
        augment /ifm:ifm/ifm:interfaces/ifm:interface/ip:ipv6 {
          when
            "../ifm:type!='ServiceIf' and ../ifm:type!='Virtual-if'";
          description
            "All configurations of the PP6 under the interface.";
          container pp6-collection {
            description
              "Configure PP6 interface attribute configurations.";
            leaf permit-incomplete-fragment {
              type boolean;
              description
                "Enable/disable flag of allowing first fragment with incomplete IPv6 header chain in IPv6 enabled interfaces.";
            }
          }  // container pp6-collection
    
          container pp6-security {
            description
              "Configure the interface IPv6 security configurations.";
            leaf multicast-echo-receive {
              when
                "../../../ifm:type!='NULL' and ../../../ifm:type!='ServiceIf' and ../../../ifm:type!='Virtual-if' and "
                  + "../../../ifm:type!='Cpos' and ../../../ifm:type!='Cpos-Trunk' and ../../../ifm:type!='Atm-Bundle' and "
                  + "../../../ifm:type!='Serial' and ../../../ifm:type!='Trunk-Serial' and ../../../ifm:type!='Global-Mp-Group' and "
                  + "../../../ifm:type!='Gmpls-Uni' and ../../../ifm:type!='HP-GE'";
              type multicast-echo-config-type;
              description
                "Indicates whether to process the multicast ping request packets.";
            }
          }  // container pp6-security
    
          container extension-header-filter {
            when
              "../../ifm:type!='NULL' and ../../ifm:type!='ServiceIf' and ../../ifm:type!='Virtual-if' and "
                + "../../ifm:type!='Cpos' and ../../ifm:type!='Cpos-Trunk' and ../../ifm:type!='Atm-Bundle' and "
                + "../../ifm:type!='Trunk-Serial' and ../../ifm:type!='Global-Mp-Group' and "
                + "../../ifm:type!='Gmpls-Uni' and ../../ifm:type!='HP-GE'";
            description
              "Configure interface IPv6 extension header filter configurations.";
            container hop-by-hop-switch {
              description
                "Configure the IPv6 packet with hop-by-hop options extension header switch.";
              leaf all-options {
                type filter-rule-type;
                description
                  "All options of IPv6 extension header switch.";
              }
    
              container options {
                description
                  "List of some options of IPv6 extension header switch.";
                list option {
                  key "option-code";
                  description
                    "Configure some options of IPv6 extension header switch.";
                  leaf option-code {
                    type uint8 {
                      range "0..255";
                    }
                    description
                      "Option code of IPv6 extension header.";
                  }
    
                  leaf filter-rule {
                    ext:support-filter "true";
                    type filter-rule-type;
                    mandatory true;
                    description
                      "Filter policy of IPv6 packet.";
                  }
                }  // list option
              }  // container options
            }  // container hop-by-hop-switch
    
            container routing-switch {
              description
                "Configure the IPv6 packet with routing options extension header switches.";
              leaf all-options {
                type filter-rule-type;
                description
                  "All options of IPv6 extension header switch.";
              }
    
              container options {
                description
                  "List of some options of IPv6 extension header switch.";
                list option {
                  key "option-code";
                  description
                    "Configure some options of IPv6 extension header switch.";
                  leaf option-code {
                    type uint8 {
                      range "0..255";
                    }
                    description
                      "Option code of IPv6 extension header.";
                  }
    
                  leaf filter-rule {
                    ext:support-filter "true";
                    type filter-rule-type;
                    mandatory true;
                    description
                      "Filter policy of IPv6 packet.";
                  }
                }  // list option
              }  // container options
            }  // container routing-switch
    
            container destination-switch {
              description
                "Configure the IPv6 packet with destination options extension header switches.";
              leaf all-options {
                type filter-rule-type;
                description
                  "All options of IPv6 extension header switch.";
              }
    
              container options {
                description
                  "List of some options of IPv6 extension header switch.";
                list option {
                  key "option-code";
                  description
                    "Configure some options of IPv6 extension header switch.";
                  leaf option-code {
                    type uint8 {
                      range "0..255";
                    }
                    description
                      "Option code of IPv6 extension header.";
                  }
    
                  leaf filter-rule {
                    ext:support-filter "true";
                    type filter-rule-type;
                    mandatory true;
                    description
                      "Filter policy of IPv6 packet.";
                  }
                }  // list option
              }  // container options
            }  // container destination-switch
    
            container no-option-exh-switchs {
              description
                "List of the IPv6 packet with no options extension header switches.";
              list no-option-exh-switch {
                key "exh-type";
                description
                  "Configure the IPv6 packet with hop-by-hop options extension header switch.";
                leaf exh-type {
                  type extension-header-type;
                  description
                    "IPv6 extension header type which have no option.";
                }
    
                leaf filter-rule {
                  ext:support-filter "true";
                  type filter-rule-type;
                  mandatory true;
                  description
                    "Filter policy of IPv6 packet.";
                }
              }  // list no-option-exh-switch
            }  // container no-option-exh-switchs
          }  // container extension-header-filter
        }
    
        augment /ni:network-instance/ni:instances/ni:instance {
          description
            "All configurations of the PP6 under the network instance.";
          container icmp6-source-address {
            presence
              "Configure a loopback interface address as a source IP address for an ICMP6 error packet.";
            description
              "Configure a loopback interface address as a source IP address for an ICMP6 error packet.";
            leaf if-name {
              type leafref {
                path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
              }
              must
                "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:type='LoopBack'";
              must
                "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ip:ipv6";
              must
                "/ifm:ifm/ifm:interfaces/ifm:interface[ifm:name=current()]/ifm:vrf-name = ../../ni:name";
              mandatory true;
              description "Interface name.";
            }
    
            leaf pkt-type {
              type icmp-pkt-type;
              mandatory true;
              description
                "Packet type of ICMPv6.";
            }
          }  // container icmp6-source-address
        }
      }  // module huawei-pp6
    

© 2023 YumaWorks, Inc. All rights reserved.