huawei-netstream

Netstream.

  • Version: 2019-06-27

    huawei-netstream@2019-06-27


    
      module huawei-netstream {
    
        yang-version 1;
    
        namespace
          "urn:huawei:yang:huawei-netstream";
    
        prefix netstream;
    
        import huawei-devm {
          prefix devm;
        }
        import huawei-ifm {
          prefix ifm;
        }
        import ietf-inet-types {
          prefix inet;
        }
        import huawei-extension {
          prefix ext;
        }
        import huawei-network-instance {
          prefix ni;
        }
        import huawei-l3vpn {
          prefix l3vpn;
        }
        import ietf-yang-types {
          prefix yang;
        }
        import huawei-pub-type {
          prefix pub-type;
        }
    
        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 "Netstream.";
    
        revision "2019-06-27" {
          description "Initial revision.";
          reference
            "Huawei private.";
    
        }
    
        ext:task-name "netstream";
    
        typedef nsm-direction {
          type enumeration {
            enum "inbound" {
              value 0;
              description "Inbound.";
            }
            enum "outbound" {
              value 1;
              description "Outbound.";
            }
          }
          description
            "Description of sampler direction.";
        }
    
        typedef nsm-agg-type {
          type enumeration {
            enum "as" {
              value 0;
              description "AS aggregation.";
            }
            enum "as-tos" {
              value 1;
              description "AS-ToS aggregation.";
            }
            enum "protocol-port" {
              value 2;
              description "Protocol-port.";
            }
            enum "protocol-port-tos" {
              value 3;
              description
                "Protocol-port-ToS aggregation.";
            }
            enum "source-prefix" {
              value 4;
              description
                "Source-prefix aggregation. It classifies flows by four key values, that is, the source AS number, source mask length, source prefix, and incoming interface index.";
            }
            enum "source-prefix-tos" {
              value 5;
              description
                "Source prefix-ToS aggregation. It classifies flows by five key values, that is, the source AS number, source mask length, source prefix, ToS, and incoming interface index.";
            }
            enum "destination-prefix" {
              value 6;
              description
                "Destination-prefix aggregation. It classifies flows by four key values, that is, the destination AS number, destination mask length, destination prefix, and outgoing interface index.";
            }
            enum "destination-prefix-tos" {
              value 7;
              description
                "Destination prefix-ToS aggregation. It classifies flows by five key values, that is, the destination AS number, destination mask length, destination prefix, ToS, and outgoing interface index.";
            }
            enum "prefix" {
              value 8;
              description
                "Prefix aggregation. It classifies flows by eight key values, that is, the source AS number, destination AS number, source mask length, destination mask length, source prefix, destination prefix, incoming interface index, and outgoing interface index.";
            }
            enum "prefix-tos" {
              value 9;
              description
                "Prefix-ToS aggregation. It classifies flows by nine key values, that is, the source AS number, destination AS number, source mask length, destination mask length, source prefix, destination prefix, ToS, incoming interface index, and outgoing interface index.";
            }
            enum "mpls-label" {
              value 10;
              description
                "MPLS-label aggregation. It classifies flows by six key values, that is, the first layer label, second layer label, third layer label, TopLabelIpAddress, stack bottom symbol of the first layer label, and the EXP value of the first layer label.";
            }
            enum "vlan-id" {
              value 11;
              description
                "VLAN-ID aggregation. It classifies flows by two key values, that is, the VLAN ID and incoming interface index.";
            }
            enum "bgp-nexthop-tos" {
              value 12;
              description
                "BGP next hop-ToS aggregation. It classifies streams by six key values including the BGP next hop, source AS number, destination AS number, incoming interface index, outgoing interface index, and ToS.";
            }
            enum "index-tos" {
              value 13;
              description
                "Interface index-ToS aggregation. It classifies flows by three key values, that is, the incoming interface index, outgoing interface index, and ToS.";
            }
            enum "source-index-tos" {
              value 14;
              description
                "Interface source-index-ToS aggregation.";
            }
            enum "bgp-community" {
              value 15;
              description
                "BGP Community Aggregation.";
            }
            enum "vni-sip-dip" {
              value 16;
              description
                "It classifies flows by three key values, that is, the vni id, sip, and dip.";
            }
          }
          description
            "Description of aggregation type.";
        }
    
        typedef nsm-enable {
          type enumeration {
            enum "false" {
              value 0;
              description "Disabling.";
            }
            enum "true" {
              value 1;
              description "Enabling.";
            }
          }
          description
            "Description of enable type.";
        }
    
        typedef nsm-origin-version {
          type enumeration {
            enum "5" {
              value 5;
              description "Version 5.";
            }
            enum "9" {
              value 9;
              description "Version 9.";
            }
            enum "ipfix" {
              value 10;
              description "Version ipfix.";
            }
          }
          description
            "Description of origin version type.";
        }
    
        typedef nsm-as-type {
          type enumeration {
            enum "invalid-as" {
              value 0;
              description "Invalid system ID.";
            }
            enum "origin-as" {
              value 1;
              description "Start AS number.";
            }
            enum "peer-as" {
              value 2;
              description "Adjacent AS number.";
            }
          }
          description "Description of as type.";
        }
    
        typedef nsm-as-mode-index {
          type enumeration {
            enum "16" {
              value 0;
              description
                "16-bit interface index carried in exported NetStream packets.";
            }
            enum "32" {
              value 1;
              description
                "32-bit interface index carried in exported NetStream packets.";
            }
          }
          description
            "Description of as mode index type.";
        }
    
        typedef nsm-mpls-aware {
          type enumeration {
            enum "ip-only" {
              value 0;
              description
                "IP address collection mode.";
            }
            enum "label-and-ip" {
              value 1;
              description
                "Inner IP packet and label collection mode.";
            }
            enum "label-only" {
              value 2;
              description
                "Label collection mode.";
            }
          }
          description
            "Description of MPLS aware type.";
        }
    
        typedef nsm-flow-type {
          type enumeration {
            enum "ip-flow" {
              value 0;
              description "IPv4.";
            }
            enum "ipv6-flow" {
              value 1;
              description "IPv6.";
            }
          }
          description
            "Description of flow type.";
        }
    
        typedef nsm-srv6-aware {
          type enumeration {
            enum "inner-header" {
              value 1;
              description
                "Collect inner layer header.";
            }
          }
          description
            "Description of SRv6 aware.";
        }
    
        typedef nsm-destination-board {
          type enumeration {
            enum "self" {
              value 0;
              description "To Self.";
            }
            enum "main" {
              value 1;
              description "To Main.";
            }
            enum "bak" {
              value 2;
              description "To Bak.";
            }
          }
          description
            "Description of destination board type.";
        }
    
        typedef nsm-statistic-type {
          type enumeration {
            enum "template" {
              value 0;
              description "Template statistics.";
            }
            enum "pack" {
              value 1;
              description "Packet statistics.";
            }
          }
          description
            "Description of statistic type.";
        }
    
        typedef nsm-template-type {
          type enumeration {
            enum "option" {
              value 0;
              description "Option statistics.";
            }
            enum "aggregation" {
              value 1;
              description
                "Aggregation template statistics.";
            }
            enum "origin" {
              value 2;
              description
                "Origin template statistics.";
            }
            enum "record" {
              value 3;
              description
                "Flexible template statistics.";
            }
          }
          description
            "Description of template type.";
        }
    
        typedef nsm-cache-flow-type {
          type enumeration {
            enum "origin" {
              value 1;
              description "Original flow.";
            }
            enum "aggregation" {
              value 2;
              description "Aggregated flow.";
            }
          }
          description
            "Description of cache flow type.";
        }
    
        typedef nsm-tal-type {
          type enumeration {
            enum "mpls" {
              value 1;
              description "MPLS.";
            }
          }
          description "Description of tal type.";
        }
    
        typedef sequence-mode-type {
          type enumeration {
            enum "flow" {
              value 1;
              description
                "The sequence number mode is the flow mode.";
            }
          }
          description
            "Type of netstream sequence mode.";
        }
    
        typedef nsm-pkt-type {
          type enumeration {
            enum "ipv4" {
              value 1;
              description "IPv4 packet.";
            }
            enum "mpls" {
              value 2;
              description "MPLS packet.";
            }
          }
          description "Description of packet.";
        }
    
        typedef nsm-mpls-type {
          type enumeration {
            enum "exclude" {
              value 1;
              description
                "Disables MPLS packet sampling on an interface.";
            }
          }
          description
            "Enable/disable sample MPLS packet statistics.";
        }
    
        container netstream {
          description "Netstream.";
          container flow-instances {
            description
              "List of configure global instance.";
            list flow-instance {
              ext:generated-by "system" {
                description "The all instances are generated by system automatically.";
              }
              ext:operation-exclude "create" {
                description "The all instances cannot be created or deleted.";
              }
              key "flow-type";
              description
                "Configure global instance.";
              leaf flow-type {
                type nsm-flow-type;
                description "Flow type.";
              }
    
              leaf source-ipv4-address {
                type inet:ipv4-address-no-zone;
                description
                  "Source IPv4 address.";
              }
    
              leaf source-ipv4-port {
                when
                  "not(not(../source-ipv4-address))";
                type uint16 {
                  range "1..65535";
                }
                default "40000";
                description "Source IPv4 port.";
              }
    
              leaf source-ipv6-address {
                type inet:ipv6-address-no-zone;
                description
                  "Source IPv6 address.";
              }
    
              leaf source-ipv6-port {
                when
                  "not(not(../source-ipv6-address))";
                type uint16 {
                  range "1..65535";
                }
                default "40000";
                description "Source IPv6 port.";
              }
    
              leaf export-version {
                type nsm-origin-version;
                must
                  "(../flow-type='ipv6-flow' and (../export-version='9' or ../export-version='ipfix') ) or ((not(../flow-type='ipv6-flow') and (../export-version='5' or ../export-version='9' or ../export-version='ipfix') ))";
                description
                  "Version of NetStream statistics packets. The value of IPv4 can be 5,9 or ipfix, the value of IPv6 can be 9 or ipfix.";
              }
    
              leaf as-type {
                type nsm-as-type;
                must
                  "../as-type='invalid-as' or (../as-type!='invalid-as' and ../export-version)";
                default "invalid-as";
                description
                  "AS number of a specified IP address. The available options are origin-as (start AS number) and peer-as (adjacent AS number).";
              }
    
              leaf bgp-nexthop {
                type nsm-enable;
                must
                  "(../export-version and ../export-version != '5' and ../bgp-nexthop= 'true') or ../bgp-nexthop = 'false'";
                default "false";
                description
                  "Whether exported statistics contain BGP next hop information. Version 5 does not support BGP next hop.";
              }
    
              leaf template-timeout-rate {
                type uint16 {
                  range "1..3600";
                }
                units "min";
                default "30";
                description
                  "The interval for refreshing the template.";
              }
    
              leaf option-template-timeout-rate {
                type uint16 {
                  range "1..3600";
                }
                units "min";
                default "30";
                description
                  "Interval for refreshing the Option template.";
              }
    
              leaf option-template-refresh-rate {
                type uint16 {
                  range "1..600";
                }
                units "packet";
                default "20";
                description
                  "Packet-interval refreshing time of the option template.";
              }
    
              leaf option-data-timeout-rate {
                type uint16 {
                  range "1..16";
                }
                units "min";
                default "16";
                description
                  "Interval for refreshing the option data.";
              }
    
              choice agg-active-age {
                default "minutes";
                description
                  "Specify the active aging time of aggregation flows.";
                case minutes {
                  description
                    "Specify the active aging time (mins) of aggregation flows.";
                  leaf agg-active-age-minutes {
                    type uint32 {
                      range "1..60";
                    }
                    units "min";
                    default "5";
                    description
                      "Specify the active aging time (mins) of aggregation flows.";
                  }
                }  // case minutes
    
                case seconds {
                  description
                    "Specify the active aging time (secs) of aggregation flows.";
                  leaf agg-active-age-seconds {
                    type uint8 {
                      range "15..59";
                    }
                    units "s";
                    description
                      "Specify the active aging time (secs) of aggregation flows.";
                  }
                }  // case seconds
              }  // choice agg-active-age
    
              leaf agg-inactive-age-seconds {
                type uint32 {
                  range "5..600";
                }
                units "s";
                default "300";
                description
                  "Inactive aging time of aggregation flows.";
              }
    
              choice origin-active-age {
                default "minutes";
                description
                  "Active aging time of original flows.";
                case minutes {
                  description
                    "Active aging time (mins) of original flows.";
                  leaf origin-active-age-minutes {
                    type uint32 {
                      range "1..60";
                    }
                    units "min";
                    default "30";
                    description
                      "Active aging time (mins) of original flows.";
                  }
                }  // case minutes
    
                case seconds {
                  description
                    "Active aging time (secs) of original flows.";
                  leaf origin-active-age-seconds {
                    type uint8 {
                      range "15..59";
                    }
                    units "s";
                    description
                      "Active aging time (secs) of original flows.";
                  }
                }  // case seconds
              }  // choice origin-active-age
    
              leaf origin-inactive-seconds {
                type uint32 {
                  range "5..600";
                }
                units "s";
                default "30";
                description
                  "Inactive aging time of original flows.";
              }
    
              leaf as-mode {
                type nsm-as-mode-index;
                default "16";
                description
                  "Mode supported by ASs.";
              }
    
              leaf index-switch {
                type nsm-as-mode-index;
                default "16";
                description
                  "NetStream interface index.";
              }
    
              leaf tcpflag-enable {
                type nsm-enable;
                default "false";
                description
                  "Whether tcp-flag information is extracted during the processing of sampling packets.";
              }
    
              leaf mpls-aware-enable {
                type nsm-mpls-aware;
                default "ip-only";
                description
                  "Whether Layer 3 labels are extracted during the processing of sampling packets. The default value is ip-only, that is, not to extract the label.label-only indicates that only the label is extracted; label-and-ip indicates that both the label and IP address are extracted.";
              }
    
              leaf interface-option-enable {
                type nsm-enable;
                default "false";
                description
                  "Flow of statistics about interface options, including the interface index for enabling NetStream in inbound direction or outbound direction, and corresponding sampling values.";
              }
    
              leaf record-name {
                type leafref {
                  path "../../../flexflow-records/flexflow-record[flow-type=current()/../flow-type]/record-name";
                }
                description
                  "Flexible record name.";
              }
    
              leaf ttl-flag {
                type nsm-enable;
                must
                  "(../export-version and ../export-version != '5' and ../ttl-flag= 'true') or ../ttl-flag = 'false'";
                default "false";
                description
                  "Whether exported statistics contain TTL information.";
              }
    
              leaf sequence-number-fix {
                type nsm-enable;
                default "false";
                description
                  "Whether the numbering mode of IPFIX version packet is fixed mode.";
              }
    
              leaf srv6-aware {
                type nsm-srv6-aware;
                must "../flow-type='ipv6-flow'";
                description
                  "Whether collect inner layer header of SRv6 packet.";
              }
    
              leaf rd-flag {
                type nsm-enable;
                must
                  "(../export-version = '9' and ../rd-flag = 'true') or ../rd-flag = 'false'";
                default "false";
                description
                  "Route distinguisher flag.";
              }
    
              container sampler-rates {
                description
                  "List of configure global sampler instance.";
                list sampler-rate {
                  key "direction";
                  description
                    "Configure global sampler instance.";
                  leaf direction {
                    type nsm-direction;
                    description
                      "Sampler direction.";
                  }
    
                  choice sampler-type {
                    mandatory true;
                    description "Sampler type.";
                    case fix-packets {
                      description
                        "Fix-pack value.";
                      leaf fix-packets-value {
                        type uint32 {
                          range "1..65535";
                        }
                        description
                          "Fix-pack value.";
                      }
                    }  // case fix-packets
    
                    case fix-time {
                      description
                        "Fix-time value.";
                      leaf fix-time-value {
                        type uint32 {
                          range "5..30000";
                        }
                        description
                          "Fix-time value.";
                      }
                    }  // case fix-time
    
                    case random-packets {
                      description
                        "Random-pack value.";
                      leaf random-packets-value {
                        type uint32 {
                          range "1..65535";
                        }
                        description
                          "Random-pack value.";
                      }
                    }  // case random-packets
                  }  // choice sampler-type
                }  // list sampler-rate
              }  // container sampler-rates
    
              container export-ipv4-hosts {
                description
                  "List of configure export vpn destination IPv4 address instance.";
                list export-ipv4-host {
                  key "address port vpn-name";
                  max-elements 8;
                  description
                    "Configure export vpn destination IPv4 address instance.";
                  leaf address {
                    type inet:ipv4-address-no-zone;
                    description
                      "Exported destination IPv4 address.";
                  }
    
                  leaf port {
                    type uint16 {
                      range "1..65535";
                    }
                    description
                      "UDP port number of the NSC.";
                  }
    
                  leaf vpn-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='ipv4-unicast']";
                    description
                      "Vpn instance name.";
                  }
    
                  leaf dscp-value {
                    type uint8 {
                      range "1..63";
                    }
                    description
                      "Differentiated Services Code Point.";
                  }
                }  // list export-ipv4-host
              }  // container export-ipv4-hosts
            }  // list flow-instance
          }  // container flow-instances
    
          container aggregations {
            description
              "List of configure aggregation instance.";
            list aggregation {
              must
                "./flow-type='ip-flow' or ((./flow-type='ipv6-flow') and (./agg-type!='bgp-community' and ./agg-type!='source-index-tos' and ./agg-type!='vni-sip-dip'))";
              key "flow-type agg-type";
              description
                "Configure aggregation instance.";
              leaf flow-type {
                type nsm-flow-type;
                description "Flow type.";
              }
    
              leaf agg-type {
                type nsm-agg-type;
                description "Aggregation type.";
              }
    
              leaf agg-enable {
                type nsm-enable;
                default "false";
                description
                  "Aggregation enabling flag.";
              }
    
              leaf template-timeout-minutes {
                type uint16 {
                  range "1..3600";
                }
                default "30";
                description
                  "Specifies the interval for refreshing the template.";
              }
    
              leaf source-mask {
                ext:dynamic-default {
                  ext:default-value "24" {
                    when "../flow-type = 'ip-flow'";
                    description "The default value is 24 in IPv4 flow.";
                  }
                  ext:default-value "64" {
                    when "../flow-type = 'ipv6-flow'";
                    description " The default value is 64 in IPv6 flow.";
                  }
                }
                when
                  "../agg-type='prefix' or ../agg-type='prefix-tos' or ../agg-type='source-prefix' or ../agg-type='source-prefix-tos'";
                type uint8 {
                  range "1..128";
                }
                must
                  "(../flow-type='ip-flow' and ../source-mask<=32) or ../flow-type != 'ip-flow'";
                description "Source mask.";
              }
    
              leaf dest-mask {
                ext:dynamic-default {
                  ext:default-value "24" {
                    when "../flow-type = 'ip-flow'";
                    description "The default value is 24 in IPv4 flow.";
                  }
                  ext:default-value "64" {
                    when "../flow-type = 'ipv6-flow'";
                    description " The default value is 64 in IPv6 flow.";
                  }
                }
                when
                  "../agg-type='destination-prefix' or ../agg-type='destination-prefix-tos' or ../agg-type='prefix' or ../agg-type='prefix-tos'";
                type uint8 {
                  range "1..128";
                }
                must
                  "(../flow-type='ip-flow' and ../dest-mask<=32) or ../flow-type != 'ip-flow'";
                description "Destination mask.";
              }
            }  // list aggregation
          }  // container aggregations
    
          container monitors {
            description
              "List of configure monitor instance.";
            list monitor {
              key "flow-type monitor-name";
              description
                "Configure monitor instance.";
              leaf flow-type {
                type nsm-flow-type;
                description "Flow type.";
              }
    
              leaf monitor-name {
                type string {
                  length "1..31";
                }
                description "Monitor name.";
              }
    
              leaf apply-interface-count {
                type uint32;
                config false;
                description
                  "Application counter.";
              }
    
              leaf record-name {
                type leafref {
                  path "../../../flexflow-records/flexflow-record[flow-type=current()/../flow-type]/record-name";
                }
                description
                  "Flexible record name.";
              }
    
              leaf source-ipv4-address {
                type inet:ipv4-address-no-zone;
                description
                  "Source IPv4 address.";
              }
    
              leaf source-ipv4-port {
                when "../source-ipv4-address";
                type uint16 {
                  range "1..65535";
                }
                default "40000";
                description "Source IPv4 port.";
              }
    
              leaf source-ipv6-addr {
                type inet:ipv6-address-no-zone;
                description
                  "Source IPv6 address.";
              }
    
              leaf source-ipv6-port {
                when "../source-ipv6-addr";
                type uint16 {
                  range "1..65535";
                }
                default "40000";
                description "Source IPv6 port.";
              }
    
              container export-host-ipv4s {
                description
                  "List of configure export vpn destination IPv4 address instance.";
                list export-host-ipv4 {
                  key "host-ip-address host-port vpn-name";
                  max-elements 8;
                  description
                    "Configure export vpn destination IPv4 address instance.";
                  leaf host-ip-address {
                    type inet:ipv4-address-no-zone;
                    description
                      "Monitor IPv4 address.";
                  }
    
                  leaf host-port {
                    type uint16 {
                      range "1..65535";
                    }
                    description
                      "Monitor IPv4 port.";
                  }
    
                  leaf vpn-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='ipv4-unicast']";
                    description
                      "Vpn instance name.";
                  }
    
                  leaf version {
                    type nsm-origin-version;
                    must
                      "(../../../flow-type='ip-flow' and (../version='5' or ../version='9' or ../version='ipfix') ) or (../../../flow-type='ipv6-flow' and (../version='9' or ../version='ipfix') )";
                    description
                      "Version of NetStream statistics packets.";
                  }
    
                  leaf dscp-value {
                    type uint8 {
                      range "1..63";
                    }
                    description
                      "Differentiated Services Code Point.";
                  }
                }  // list export-host-ipv4
              }  // container export-host-ipv4s
    
              container export-host-ipv6s {
                description
                  "List of configure export vpn destination IPv6 address instance.";
                list export-host-ipv6 {
                  key "host-ipv6-addr host-port vpn-name";
                  max-elements 8;
                  description
                    "Configure export vpn destination IPv6 address instance.";
                  leaf host-ipv6-addr {
                    type inet:ipv6-address-no-zone;
                    description
                      "Monitor IPv6 address.";
                  }
    
                  leaf host-port {
                    type uint16 {
                      range "1..65535";
                    }
                    description
                      "Monitor IPv6 port.";
                  }
    
                  leaf vpn-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 instance name.";
                  }
    
                  leaf version {
                    type nsm-origin-version;
                    must
                      "(../../../flow-type='ip-flow' and (../version='5' or ../version='9' or ../version='ipfix') )or (../../../flow-type='ipv6-flow' and (../version='9' or ../version='ipfix') )";
                    description
                      "Version of NetStream statistics packets.";
                  }
    
                  leaf dscp-value {
                    type uint8 {
                      range "1..63";
                    }
                    description
                      "Differentiated Services Code Point.";
                  }
                }  // list export-host-ipv6
              }  // container export-host-ipv6s
    
              container apply-interfaces {
                description
                  "List of configure monitor interface.";
                list apply-interface {
                  key "interface-name direction";
                  description
                    "Configure monitor interface instance.";
                  leaf interface-name {
                    type leafref {
                      path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                    }
                    description
                      "Interface name.";
                  }
    
                  leaf direction {
                    type nsm-direction;
                    description
                      "Sampler direction.";
                  }
                }  // list apply-interface
              }  // container apply-interfaces
            }  // list monitor
          }  // container monitors
    
          container flexflow-records {
            description
              "List of configure flexible flow instance.";
            list flexflow-record {
              key "flow-type record-name";
              description
                "Configure flexible flow instance.";
              leaf flow-type {
                type nsm-flow-type;
                description "Flow type.";
              }
    
              leaf record-name {
                type string {
                  length "1..32";
                  pattern '[a-zA-Z0-9._]{1,32}';
                }
                description
                  "Flexible flow record name.";
              }
    
              leaf source-address {
                type nsm-enable;
                default "false";
                description
                  "Indicates the aggregation based on source addresses.";
              }
    
              leaf source-as {
                type nsm-enable;
                default "false";
                description
                  "Indicates that the statistics to be sent to the NSC contain source AS information.";
              }
    
              leaf bytes-value {
                type uint8 {
                  range "16..64";
                }
                must
                  "(../bytes-value=16 or ../bytes-value=32 or ../bytes-value=64)";
                description
                  "Specifies the number of bytes.";
              }
    
              leaf packets-value {
                type uint8 {
                  range "16..64";
                }
                must
                  "(../packets-value=16 or ../packets-value=32 or ../packets-value=64)";
                description
                  "Specifies the number of packets.";
              }
    
              leaf first-time {
                type nsm-enable;
                default "false";
                description
                  "Specifies the information of first timestamp.";
              }
    
              leaf last-time {
                type nsm-enable;
                default "false";
                description
                  "Specifies the information of last timestamp.";
              }
            }  // list flexflow-record
          }  // container flexflow-records
    
          container log-enable {
            description
              "Configure enable the storage function for aged NetStream original flows.";
            leaf log-enable {
              type nsm-enable;
              default "false";
              description
                "The storage function for aged NetStream original flows.";
            }
          }  // container log-enable
    
          container nsid-usages {
            config false;
            description
              "List of sampler ID statistics information state.";
            list nsid-usage {
              key "slot-id";
              description
                "Sampler ID statistics information state.";
              leaf slot-id {
                type string {
                  length "1..32";
                }
                description "ID of a slot.";
              }
    
              leaf total-count {
                type uint32;
                description
                  "The total number of sample ID that is can be allocated by slot.";
              }
    
              leaf cur-count {
                type uint32;
                description
                  "The number of sample ID that is allocated by slot based on configuration.";
              }
    
              leaf success-count {
                type uint32;
                description
                  "The number of sample ID that is allocated by slot successfully.";
              }
    
              leaf remain-count {
                type uint32;
                description
                  "The remaining number of sample ID that is can be allocated by slot.";
              }
            }  // list nsid-usage
          }  // container nsid-usages
    
          container slot-sampler-statistics {
            config false;
            description
              "List of statistics about packets sampled on boards in slots.";
            list slot-sampler-statistic {
              key "flow-type slot-id";
              description
                "Operational state of statistics about packets sampled on boards in slots.";
              leaf flow-type {
                type nsm-flow-type;
                description "Type of a flow.";
              }
    
              leaf slot-id {
                type string {
                  length "1..32";
                }
                description "ID of a slot.";
              }
    
              leaf pkt-ipv4-count {
                type uint64;
                description
                  "Number of IPv4 packets.";
              }
    
              leaf pkt-ipv6-count {
                type uint64;
                description
                  "Number of IPv6 packets.";
              }
    
              leaf pkt-mpls-count {
                type uint64;
                description
                  "Number of MPLS packets.";
              }
    
              leaf pkt-vll-count {
                type uint64;
                description
                  "Number of L2 packets.";
              }
    
              leaf pkt-count {
                type uint64;
                description
                  "Number of all sampled packets.";
              }
    
              leaf pkt-count64 {
                type uint64;
                description
                  "Number of packets whose length ranges from 1 to 64 bytes.";
              }
    
              leaf pkt-count128 {
                type uint64;
                description
                  "Number of packets whose length ranges from 65 to 128 bytes.";
              }
    
              leaf pkt-count256 {
                type uint64;
                description
                  "Number of Packets Whose Length Ranges from 129 to 256 Bytes.";
              }
    
              leaf pkt-count512 {
                type uint64;
                description
                  "Number of packets whose length ranges from 257 to 512 bytes.";
              }
    
              leaf pkt-count1024 {
                type uint64;
                description
                  "Number of packets whose length ranges from 513 to 1024 bytes.";
              }
    
              leaf pkt-count1500 {
                type uint64;
                description
                  "Number of packets whose length ranges from 1025 to 1500 bytes.";
              }
    
              leaf pkt-countn {
                type uint64;
                description
                  "Number of packets with more than 1500 bytes.";
              }
    
              container aggregation-statistics {
                description
                  "List of stream state.";
                list aggregation-statistic {
                  key "template-name";
                  description "Stream state.";
                  leaf template-name {
                    type string {
                      length "0..35";
                    }
                    description "TemplateName.";
                  }
    
                  leaf flow-cur-count {
                    type uint64;
                    description
                      "Current Streams.";
                  }
    
                  leaf flow-age-count {
                    type uint64;
                    description "Aged Streams.";
                  }
    
                  leaf flow-create-count {
                    type uint64;
                    description
                      "Created Streams.";
                  }
    
                  leaf pkt-export-count {
                    type uint64;
                    description
                      "Exported Packets.";
                  }
    
                  leaf stream-export-count {
                    type uint64;
                    description
                      "Exported Streams.";
                  }
                }  // list aggregation-statistic
              }  // container aggregation-statistics
            }  // list slot-sampler-statistic
          }  // container slot-sampler-statistics
    
          container cache-usages {
            config false;
            description
              "List of display the list of cache usage state.";
            list cache-usage {
              key "flow-type slot-id";
              description
                "Display cache usage state.";
              leaf flow-type {
                type nsm-cache-flow-type;
                description "Type of a flow.";
              }
    
              leaf slot-id {
                type string {
                  length "1..32";
                }
                description "ID of a slot.";
              }
    
              leaf total-stream-count {
                type uint32;
                description
                  "Number of total flows.";
              }
    
              leaf cur-stream-count {
                type uint32;
                description
                  "Number of current flows.";
              }
            }  // list cache-usage
          }  // container cache-usages
    
          container if-sampler-statistics {
            config false;
            description
              "List of statistics about packets sampled on interfaces.";
            list if-sampler-statistic {
              key "if-name";
              description
                "Operational state of statistics about packets sampled on interfaces.";
              leaf if-name {
                type leafref {
                  path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                }
                description
                  "Name of an interface.";
              }
    
              leaf ipv4-in-byte-stat {
                type uint64;
                description
                  "Number of bytes in IPv4 packets sampled in the inbound (upstream) direction.";
              }
    
              leaf ipv4-out-byte-stat {
                type uint64;
                description
                  "Number of bytes in IPv4 packets sampled in the outbound (downstream) direction.";
              }
    
              leaf ipv6-in-byte-stat {
                type uint64;
                description
                  "Number of bytes in IPv6 packets sampled in the inbound (upstream) direction.";
              }
    
              leaf ipv6-out-byte-stat {
                type uint64;
                description
                  "Number of bytes in IPv6 packets sampled in the outbound (downstream) direction.";
              }
    
              leaf mpls-in-byte-stat {
                type uint64;
                description
                  "Number of bytes in MPLS packets sampled in the inbound (upstream) direction.";
              }
    
              leaf mpls-out-byte-stat {
                type uint64;
                description
                  "Number of bytes in MPLS packets sampled in the outbound (downstream) direction.";
              }
    
              leaf ipv4-in-pkt-stat {
                type uint64;
                description
                  "Number of IPv4 packets sampled in the inbound (upstream) direction.";
              }
    
              leaf ipv4-out-pkt-stat {
                type uint64;
                description
                  "Number of IPv4 packets output.";
              }
    
              leaf ipv6-in-pkt-stat {
                type uint64;
                description
                  "Number of IPv6 packets input.";
              }
    
              leaf ipv6-out-pkt-stat {
                type uint64;
                description
                  "Number of IPv6 packets output.";
              }
    
              leaf mpls-in-pkt-stat {
                type uint64;
                description
                  "Number of MPLS packets input.";
              }
    
              leaf mpls-out-pkt-stat {
                type uint64;
                description
                  "Number of MPLS packets output.";
              }
    
              leaf total-in-byte {
                type uint64;
                description
                  "Total number of bytes in packets input.";
              }
    
              leaf total-in-pkt {
                type uint64;
                description
                  "Total number of packets input.";
              }
    
              leaf total-out-byte {
                type uint64;
                description
                  "Total number of bytes in packets output.";
              }
    
              leaf total-out-pkt {
                type uint64;
                description
                  "Total number of packets output.";
              }
            }  // list if-sampler-statistic
          }  // container if-sampler-statistics
    
          container sampler-rate-lower-limits {
            config false;
            description
              "List of sampler rate lower-limits state.";
            list sampler-rate-lower-limit {
              key "slot-id";
              description
                "Sampler rate lower-limit state.";
              leaf slot-id {
                type string {
                  length "1..16";
                }
                description "Slot id.";
              }
    
              leaf fix-packets-lower-limit {
                type uint32;
                description
                  "Lower limit for fixed-packet-number-based sampling ratio.";
              }
    
              leaf fix-time-lower-limit {
                type uint32;
                description
                  "Lower limit for fixed-time-based sampling ratio.";
              }
    
              leaf random-packets-lower-limit {
                type uint32;
                description
                  "Lower limit for random-packet-number-based sampling ratio.";
              }
            }  // list sampler-rate-lower-limit
          }  // container sampler-rate-lower-limits
    
          container template-export-statistics {
            config false;
            description
              "List of NSM statistics state.";
            list template-export-statistic {
              key "flow-type statistic-type export-type export-key";
              description
                "NSM statistics state.";
              leaf flow-type {
                type nsm-flow-type;
                description "Flow type.";
              }
    
              leaf statistic-type {
                type nsm-statistic-type;
                description "Statistics type.";
              }
    
              leaf export-type {
                type nsm-template-type;
                description "Export type.";
              }
    
              leaf export-key {
                type string {
                  length "1..56";
                }
                description "Export keyword.";
              }
    
              leaf success-num {
                type uint32;
                description
                  "Success times of exporting packets or templates.";
              }
    
              leaf failed-num {
                type uint32;
                description
                  "Failure times of exporting packets or templates.";
              }
            }  // list template-export-statistic
          }  // container template-export-statistics
    
          container option-application-labels {
            description "Configure label list.";
            leaf tal-enable {
              type nsm-enable;
              default "false";
              description "TAL enabling flag.";
            }
    
            container tal-infos {
              config false;
              description
                "List of label information state.";
              list tal-info {
                key "tal-type ip-address";
                description
                  "Label information state.";
                leaf tal-type {
                  type nsm-tal-type;
                  description "Label type.";
                }
    
                leaf ip-address {
                  type inet:ipv4-address-no-zone;
                  description
                    "IP address or address segment of the endpoint of an LSP.";
                }
    
                leaf total-num {
                  type uint32;
                  description
                    "Number of MPLS public TALs.";
                }
    
                leaf router-id {
                  type inet:ipv4-address-no-zone;
                  description "Router ID.";
                }
    
                leaf create-time {
                  type yang:date-and-time;
                  description
                    "Application creating time.";
                }
              }  // list tal-info
            }  // container tal-infos
          }  // container option-application-labels
    
          container stream-infos {
            config false;
            description
              "List of flow information.";
            list stream-info {
              description
                "Statistics of flow information.";
              leaf slot-id {
                ext:support-filter "true";
                type string {
                  length "1..32";
                }
                description
                  "The available slot.";
              }
    
              leaf flow-type {
                ext:support-filter "true";
                type nsm-flow-type;
                description "Flow type.";
              }
    
              leaf agg-type {
                ext:support-filter "true";
                type nsm-agg-type;
                description "Aggregation type.";
              }
    
              leaf flexible-flow-template {
                ext:support-filter "true";
                type string {
                  length "1..33";
                }
                description
                  "Specifies the name of a flexible flow template.";
              }
    
              leaf source-ipv4-address {
                ext:support-filter "true";
                type inet:ipv4-address-no-zone;
                description "IP source address.";
              }
    
              leaf destination-ipv4-address {
                ext:support-filter "true";
                type inet:ipv4-address-no-zone;
                description
                  "IP destination address.";
              }
    
              leaf source-ipv6-address {
                ext:support-filter "true";
                type inet:ipv6-address-no-zone;
                description
                  "IPv6 source address.";
              }
    
              leaf destination-ipv6-address {
                ext:support-filter "true";
                type inet:ipv6-address-no-zone;
                description
                  "IPv6 destination address.";
              }
    
              leaf source-port {
                ext:support-filter "true";
                type uint16;
                description "Source port.";
              }
    
              leaf destination-port {
                ext:support-filter "true";
                type uint16;
                description "Destination port.";
              }
    
              leaf protocol {
                ext:support-filter "true";
                type uint8;
                description
                  "Specifies a protocol.";
              }
    
              leaf interface-name {
                ext:support-filter "true";
                type pub-type:if-name;
                description
                  "The name of interface config netstream.";
              }
    
              leaf destination-interface-name {
                ext:support-filter "true";
                type pub-type:if-name;
                description
                  "Destination interface name.";
              }
    
              leaf packet-type {
                ext:support-filter "true";
                type nsm-pkt-type;
                description "Packet type.";
              }
    
              leaf source-mask {
                type uint8;
                description "Source mask.";
              }
    
              leaf destination-mask {
                type uint8;
                description "Destination mask.";
              }
    
              leaf source-as {
                type uint32;
                description "Source AS number.";
              }
    
              leaf destination-as {
                type uint32;
                description
                  "Destination AS number.";
              }
    
              leaf start-time {
                type yang:date-and-time;
                description "Start time.";
              }
    
              leaf end-time {
                type yang:date-and-time;
                description "End time.";
              }
    
              leaf direction {
                type nsm-direction;
                description "Direction.";
              }
    
              leaf stream-count {
                type uint32;
                description "Stream count.";
              }
    
              leaf packet-count {
                type uint32;
                description
                  "Number of passed IP packets.";
              }
    
              leaf bytes-count {
                type uint32;
                description
                  "Number of passed bytes.";
              }
    
              leaf packet-bytes {
                type uint32;
                description
                  "Average packet length.";
              }
    
              leaf tos {
                type uint8;
                description "IP tos.";
              }
    
              leaf ttl {
                type uint16;
                description "IPv4 TTL.";
              }
    
              leaf tcp-flag {
                type uint8;
                description "TCP flag.";
              }
    
              leaf vni-id {
                type uint32;
                description "Vni ID.";
              }
    
              leaf vlan-id {
                type uint16;
                description "VLAN ID.";
              }
    
              leaf destination-vlan-id {
                type uint16;
                description
                  "Destination VLAN ID.";
              }
    
              leaf mpls-label1 {
                type uint32;
                description "MPLS label.";
              }
    
              leaf mpls-exp1 {
                type uint8;
                description "MPLS exp.";
              }
    
              leaf mpls-bottom1 {
                type uint8;
                description "MPLS bottom.";
              }
    
              leaf mpls-label2 {
                type uint32;
                description "MPLS label.";
              }
    
              leaf mpls-exp2 {
                type uint8;
                description "MPLS exp.";
              }
    
              leaf mpls-bottom2 {
                type uint8;
                description "MPLS bottom.";
              }
    
              leaf mpls-label3 {
                type uint32;
                description "MPLS label.";
              }
    
              leaf mpls-exp3 {
                type uint8;
                description "MPLS exp.";
              }
    
              leaf mpls-bottom3 {
                type uint8;
                description "MPLS bottom.";
              }
    
              leaf source-prefix {
                type inet:ip-address-no-zone;
                description "Source IP prefix.";
              }
    
              leaf destination-prefix {
                type inet:ip-address-no-zone;
                description
                  "Destination IP prefix.";
              }
    
              leaf nexthop {
                type inet:ip-address-no-zone;
                description
                  "Next hop IP address.";
              }
    
              leaf bgp-nexthop {
                type inet:ip-address-no-zone;
                description "BGP next hop.";
              }
    
              leaf top-label-type {
                type uint8;
                description "Outer label type.";
              }
    
              leaf top-label-ip-address {
                type inet:ip-address-no-zone;
                description
                  "IP address of the top label.";
              }
    
              leaf create-time {
                type yang:date-and-time;
                description
                  "Time when the flow table was created.";
              }
    
              leaf last-time {
                type yang:date-and-time;
                description
                  "Time when the flow table was updated.";
              }
    
              leaf vpn {
                type string {
                  length "1..32";
                }
                description
                  "Virtual Private Net.";
              }
    
              leaf flow-label {
                type uint32;
                description
                  "Flow label information.";
              }
    
              leaf rd-value {
                type string {
                  length "1..32";
                }
                description
                  "Route distinguisher value.";
              }
    
              leaf community1 {
                type string {
                  length "1..20";
                }
                description
                  "Community attribute 1.";
              }
    
              leaf community2 {
                type string {
                  length "1..20";
                }
                description
                  "Community attribute 2.";
              }
    
              leaf community3 {
                type string {
                  length "1..20";
                }
                description
                  "Community attribute 3.";
              }
    
              leaf community4 {
                type string {
                  length "1..20";
                }
                description
                  "Community attribute 4.";
              }
    
              leaf first-time-stamp {
                type uint32;
                description
                  "The time stamp of the first IP packet.";
              }
    
              leaf last-time-stamp {
                type uint32;
                description
                  "The time stamp of the last IP packet.";
              }
            }  // list stream-info
          }  // container stream-infos
    
          container stream-log-infos {
            config false;
            description
              "List of flow log information.";
            list stream-log-info {
              description
                "Statistics of flow log information.";
              leaf flow-type {
                ext:support-filter "true";
                type nsm-flow-type;
                description "Flow type.";
              }
    
              leaf source-ipv4-address {
                ext:support-filter "true";
                type inet:ipv4-address-no-zone;
                description "IP source address.";
              }
    
              leaf destination-ipv4-address {
                ext:support-filter "true";
                type inet:ipv4-address-no-zone;
                description
                  "IP destination address.";
              }
    
              leaf source-ipv6-address {
                ext:support-filter "true";
                type inet:ipv6-address-no-zone;
                description
                  "IPv6 source address.";
              }
    
              leaf destination-ipv6-address {
                ext:support-filter "true";
                type inet:ipv6-address-no-zone;
                description
                  "IPv6 destination address.";
              }
    
              leaf source-port {
                ext:support-filter "true";
                type uint16;
                description "Source port.";
              }
    
              leaf destination-port {
                ext:support-filter "true";
                type uint16;
                description "Destination port.";
              }
    
              leaf protocol {
                ext:support-filter "true";
                type uint8;
                description
                  "Specifies a protocol.";
              }
    
              leaf interface-name {
                ext:support-filter "true";
                type pub-type:if-name;
                description
                  "The name of interface config netstream.";
              }
    
              leaf destination-interface-name {
                ext:support-filter "true";
                type pub-type:if-name;
                description
                  "Destination interface name.";
              }
    
              leaf packet-type {
                ext:support-filter "true";
                type nsm-pkt-type;
                description "Packet type.";
              }
    
              leaf source-mask {
                type uint8;
                description "Source mask.";
              }
    
              leaf destination-mask {
                type uint8;
                description "Destination mask.";
              }
    
              leaf source-as {
                type uint32;
                description "Source AS number.";
              }
    
              leaf destination-as {
                type uint32;
                description
                  "Destination AS number.";
              }
    
              leaf start-time {
                type yang:date-and-time;
                description "Start time.";
              }
    
              leaf end-time {
                type yang:date-and-time;
                description "End time.";
              }
    
              leaf direction {
                type nsm-direction;
                description "Direction.";
              }
    
              leaf packet-count {
                type uint32;
                description
                  "Number of passed IP packets.";
              }
    
              leaf bytes-count {
                type uint32;
                description
                  "Number of passed bytes.";
              }
    
              leaf packet-bytes {
                type uint32;
                description
                  "Average packet length.";
              }
    
              leaf tos {
                type uint8;
                description "IP tos.";
              }
    
              leaf ttl {
                type uint16;
                description "IPv4 TTL.";
              }
    
              leaf tcp-flag {
                type uint8;
                description "TCP flag.";
              }
    
              leaf vni-id {
                type uint32;
                description "Vni ID.";
              }
    
              leaf vlan-id {
                type uint16;
                description "VLAN ID.";
              }
    
              leaf mpls-label1 {
                type uint32;
                description "MPLS label.";
              }
    
              leaf mpls-exp1 {
                type uint8;
                description "MPLS exp.";
              }
    
              leaf mpls-bottom1 {
                type uint8;
                description "MPLS bottom.";
              }
    
              leaf mpls-label2 {
                type uint32;
                description "MPLS label.";
              }
    
              leaf mpls-exp2 {
                type uint8;
                description "MPLS exp.";
              }
    
              leaf mpls-bottom2 {
                type uint8;
                description "MPLS bottom.";
              }
    
              leaf mpls-label3 {
                type uint32;
                description "MPLS label.";
              }
    
              leaf mpls-exp3 {
                type uint8;
                description "MPLS exp.";
              }
    
              leaf mpls-bottom3 {
                type uint8;
                description "MPLS bottom.";
              }
    
              leaf nexthop {
                type inet:ip-address-no-zone;
                description
                  "Next hop IP address.";
              }
    
              leaf bgp-nexthop {
                type inet:ip-address-no-zone;
                description "BGP next hop.";
              }
    
              leaf top-label-type {
                type uint8;
                description "Outer label type.";
              }
    
              leaf top-label-ip-address {
                type inet:ip-address-no-zone;
                description
                  "IP address of the top label.";
              }
    
              leaf create-time {
                type yang:date-and-time;
                description
                  "Time when the flow table was created.";
              }
    
              leaf last-time {
                type yang:date-and-time;
                description
                  "Time when the flow table was updated.";
              }
    
              leaf vpn {
                type string {
                  length "1..32";
                }
                description
                  "Virtual Private Net.";
              }
    
              leaf flow-label {
                type uint32;
                description
                  "Flow label information.";
              }
    
              leaf rd-value {
                type string {
                  length "1..32";
                }
                description
                  "Route distinguisher value.";
              }
            }  // list stream-log-info
          }  // container stream-log-infos
        }  // container netstream
    
        augment /devm:devm/devm:lpu-boards/devm:lpu-board {
          description
            "Add netstream configuration to devm slot model.";
          container netstream {
            description "Configure netstream.";
            container sampler-modes {
              description
                "List of configure slot instance.";
              list sampler-mode {
                key "flow-type sampler-mode";
                description
                  "Configure slot instance.";
                leaf flow-type {
                  type nsm-flow-type;
                  description "Flow type.";
                }
    
                leaf sampler-mode {
                  type nsm-destination-board;
                  description
                    "Type of a sampled board.";
                }
    
                leaf dest-slot {
                  when
                    "not(../sampler-mode='self')";
                  type leafref {
                    path "/devm:devm/devm:lpu-boards/devm:lpu-board/devm:position";
                  }
                  must
                    "../../../../devm:position != ../dest-slot";
                  mandatory true;
                  description
                    "Destination slot name. For example, board 3 is input as 0/3.";
                }
              }  // list sampler-mode
            }  // container sampler-modes
    
            container sequence-mode {
              description
                "Configure netstream packets to carry the packet sequence field or the flow sequence field.";
              leaf mode {
                type sequence-mode-type;
                description
                  "Sequence number mode.";
              }
            }  // container sequence-mode
          }  // container netstream
        }
    
        augment /devm:devm/devm:mpu-boards/devm:mpu-board {
          description
            "Add netstream configuration to devm slot model.";
          container netstream {
            description "Configure netstream.";
            container sampler-modes {
              description
                "List of configure slot instance.";
              list sampler-mode {
                key "flow-type sampler-mode";
                description
                  "Configure slot instance.";
                leaf flow-type {
                  type nsm-flow-type;
                  description "Flow type.";
                }
    
                leaf sampler-mode {
                  type nsm-destination-board;
                  description
                    "Type of a sampled board.";
                }
              }  // list sampler-mode
            }  // container sampler-modes
    
            container sequence-mode {
              description
                "Configure netstream packets to carry the packet sequence field or the flow sequence field.";
              leaf mode {
                type sequence-mode-type;
                description
                  "Sequence number mode.";
              }
            }  // container sequence-mode
          }  // container netstream
        }
    
        augment /ifm:ifm/ifm:interfaces/ifm:interface {
          description
            "Add interface configuration to ifm interface model.";
          container netstream {
            description
              "Configure netstream interface.";
            container mpls-exclude {
              description
                "Configure sample MPLS packet statistics.";
              leaf mpls-exclude {
                when
                  "../../sampler-enables/sampler-enable";
                type nsm-mpls-type;
                description
                  "Enable/disable sample MPLS packet statistics.";
              }
            }  // container mpls-exclude
    
            container sampler-enables {
              description
                "List of configure interface sampling instance.";
              list sampler-enable {
                key "flow-type direction";
                description
                  "Configure interface sampling instance.";
                leaf flow-type {
                  type nsm-flow-type;
                  description "Flow type.";
                }
    
                leaf direction {
                  type nsm-direction;
                  description
                    "Sampler direction.";
                }
              }  // list sampler-enable
            }  // container sampler-enables
    
            container sampler-rates {
              description
                "List of Configure interface sampler instance.";
              list sampler-rate {
                key "flow-type direction";
                description
                  "Configure interface sampler instance.";
                leaf flow-type {
                  type nsm-flow-type;
                  description "Flow type.";
                }
    
                leaf direction {
                  type nsm-direction;
                  description
                    "Sampler direction.";
                }
    
                choice sampler-type {
                  mandatory true;
                  description "Sampler type.";
                  case fix-packets {
                    description
                      "Fix packets value.";
                    leaf fix-packets-value {
                      type uint32 {
                        range "1..65535";
                      }
                      description
                        "Fix packets value.";
                    }
                  }  // case fix-packets
    
                  case fix-time {
                    description
                      "Fix time value.";
                    leaf fix-time-value {
                      type uint32 {
                        range "5..30000";
                      }
                      description
                        "Fix time value.";
                    }
                  }  // case fix-time
    
                  case random-packets {
                    description
                      "Random packets value.";
                    leaf random-packets-value {
                      type uint32 {
                        range "1..65535";
                      }
                      description
                        "Random packets value.";
                    }
                  }  // case random-packets
                }  // choice sampler-type
              }  // list sampler-rate
            }  // container sampler-rates
          }  // container netstream
        }
      }  // module huawei-netstream
    

© 2023 YumaWorks, Inc. All rights reserved.