huawei-flowspec

Flow specification.

  • Version: 2020-03-23

    huawei-flowspec@2020-03-23


    
      module huawei-flowspec {
    
        yang-version 1;
    
        namespace
          "urn:huawei:yang:huawei-flowspec";
    
        prefix flowspec;
    
        import huawei-network-instance {
          prefix ni;
        }
        import huawei-extension {
          prefix ext;
        }
        import ietf-inet-types {
          prefix inet;
        }
        import huawei-ifm {
          prefix ifm;
        }
    
        include huawei-flowspec-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 "Flow specification.";
    
        revision "2020-03-23" {
          description
            "Modify container condition.";
          reference
            "Huawei private.";
    
        }
    
        revision "2019-05-08" {
          description "Initial revision.";
          reference
            "Huawei private.";
    
        }
    
        ext:task-name "flow-route";
    
        container flowspec {
          description
            "Configure flow specification.";
          container interface-groups {
            description
              "List of flow specification interface groups.";
            list interface-group {
              key "id";
              max-elements 100;
              description
                "Configure flow specification interface group.";
              leaf id {
                type uint16 {
                  range "0..16383";
                }
                description
                  "Flow specification interface group ID.";
              }
    
              leaf description {
                type string {
                  length "1..63";
                  pattern '([^?]*)';
                }
                description
                  "Flow specification interface group description.";
              }
    
              leaf-list interface-name {
                type leafref {
                  path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:name";
                }
                max-elements 500;
                description
                  "Configure interface in flow specification interface group.";
              }
            }  // list interface-group
          }  // container interface-groups
        }  // container flowspec
    
        augment /ni:network-instance/ni:instances/ni:instance {
          description
            "Flowspec private network instance configuration.";
          container flowspec {
            description
              "Configure flow specification.";
            container flow-routes {
              description
                "List of flow specification routes.";
              list flow-route {
                key "address-family name";
                description
                  "Configure static flow specification route.";
                leaf address-family {
                  type af-type;
                  description
                    "Address Family Type.";
                }
    
                leaf name {
                  type string {
                    length "1..30";
                  }
                  description
                    "Route name. Spaces not supported.";
                }
    
                container condition {
                  description
                    "Configure filtering conditions.";
                  container source-prefix {
                    when
                      "../../address-family='ipv4flow'";
                    presence
                      "Source IP address.";
                    description
                      "Enable/disable the source IP address matching condition.";
                    leaf address {
                      type inet:ipv4-address;
                      mandatory true;
                      description
                        "Source IP address.";
                    }
    
                    leaf mask-length {
                      type uint8 {
                        range "0..32";
                      }
                      mandatory true;
                      description "Mask length.";
                    }
                  }  // container source-prefix
    
                  container destination-prefix {
                    when
                      "../../address-family='ipv4flow'";
                    presence
                      "Destination IP address.";
                    description
                      "Enable/disable the destination IP address matching condition.";
                    leaf address {
                      type inet:ipv4-address;
                      mandatory true;
                      description
                        "Destination IP address.";
                    }
    
                    leaf mask-length {
                      type uint8 {
                        range "0..32";
                      }
                      mandatory true;
                      description "Mask length.";
                    }
                  }  // container destination-prefix
    
                  container source-ipv6-prefix {
                    when
                      "../../address-family='ipv6flow'";
                    presence
                      "Source IPv6 address.";
                    description
                      "Enable/disable the source IPv6 address matching condition.";
                    leaf address {
                      type inet:ipv6-address;
                      mandatory true;
                      description
                        "Source IPv6 address.";
                    }
    
                    leaf mask-length {
                      type uint8 {
                        range "0..128";
                      }
                      mandatory true;
                      description "Mask length.";
                    }
                  }  // container source-ipv6-prefix
    
                  container destination-ipv6-prefix {
                    when
                      "../../address-family='ipv6flow'";
                    presence
                      "Destination IPv6 address";
                    description
                      "Enable/disable the destination IPv6 address matching condition.";
                    leaf address {
                      type inet:ipv6-address;
                      mandatory true;
                      description
                        "Destination IPv6 address.";
                    }
    
                    leaf mask-length {
                      type uint8 {
                        range "0..128";
                      }
                      mandatory true;
                      description "Mask length.";
                    }
                  }  // container destination-ipv6-prefix
    
                  container origin-ass {
                    when
                      "../../address-family='ipv4flow' and ../../../../../ni:name='_public_'";
                    description
                      "List of origin-AS rules.";
                    list origin-as {
                      key "type";
                      description
                        "Configure a filtering rule that is based on the origin AS number of the destination IP address.";
                      leaf type {
                        type match-origin-as-type;
                        description
                          "Specify a type for the origin-AS filtering rule.";
                      }
    
                      leaf value {
                        type as-number-type;
                        mandatory true;
                        description
                          "Specify an AS value for origin AS filtering rule. The value can be in either of the two formats:
    The two-byte format is X. X is an integer ranging from 1 to 65535.
    The four-byte format is X.Y and X. When the format is X.Y, X and Y are both integers, with the value of X ranging from 1 to 65535, and the value of Y ranging from 0 to 65535; when the format is X, X is an interger, with the value ranging from 1 to 4294967295.";
                      }
                    }  // list origin-as
                  }  // container origin-ass
    
                  container tcp-flags {
                    description
                      "List of TCP flags.";
                    list tcp-flag {
                      key "value";
                      max-elements 5;
                      description
                        "Configure a filtering rule based on the TCP flag value.";
                      leaf value {
                        type uint16 {
                          range "0..63";
                        }
                        description
                          "Specify a value for the TCP flag filtering rule.";
                      }
    
                      leaf operator {
                        type flow-match-operator-type;
                        mandatory true;
                        description
                          "Specify an operator for the filtering rule.";
                      }
                    }  // list tcp-flag
                  }  // container tcp-flags
    
                  container fragments {
                    description
                      "List of Fragment types.";
                    list fragment {
                      key "type";
                      max-elements 3;
                      description
                        "Configure a filtering rule based on the fragment type.";
                      leaf type {
                        type match-fragment-type;
                        description
                          "Specify a type for the fragment type filtering rule.";
                      }
    
                      leaf operator {
                        type fragment-operator-type;
                        must
                          "../../../../address-family = 'ipv4flow' or (../../../../address-family = 'ipv6flow' and ../type != 'fragment-spe-first')";
                        mandatory true;
                        description
                          "Specify an operator for the filtering rule.";
                      }
                    }  // list fragment
                  }  // container fragments
    
                  container icmp-codes {
                    description
                      "List of ICMP codes.";
                    list icmp-code {
                      key "range";
                      max-elements 5;
                      description
                        "Configure a filtering rule that is based on the code in ICMP packets.";
                      leaf range {
                        type string {
                          length "1..30";
                          pattern
                            '(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])|(MIN..(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9]))|((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])..MAX)|((25[0-4]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])..(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[1-9]))';
                        }
                        description
                          "Specify a value or value range for a ICMP code-based filtering rule. The range is in any of the following formats: X, MIN..X, X..MAX, or Y..Z. X, MIN..X, and X..MAX indicate that a matched port number must be equal to X, less than X, and greater than X, respectively. Y..Z indicates that a matched port number must be greater than Y and less than Z. X is an integer ranging from 0 to 63, Y is an integer ranging from 0 to 62, and Z is an integer ranging from 1 to 63. Y must be less than Z.";
                      }
                    }  // list icmp-code
                  }  // container icmp-codes
    
                  container icmp-types {
                    description
                      "List of ICMP types.";
                    list icmp-type {
                      key "range";
                      max-elements 5;
                      description
                        "Configure a filtering rule that is based on the type of ICMP packets.";
                      leaf range {
                        type string {
                          length "1..30";
                          pattern
                            '(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])|(MIN..(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9]))|((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])..MAX)|((25[0-4]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])..(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[1-9]))';
                        }
                        description
                          "Specify a value or value range for a ICMP type-based filtering rule. The range is in any of the following formats: X, MIN..X, X..MAX, or Y..Z. X, MIN..X, and X..MAX indicate that a matched port number must be equal to X, less than X, and greater than X, respectively. Y..Z indicates that a matched port number must be greater than Y and less than Z. X is an integer ranging from 0 to 63, Y is an integer ranging from 0 to 62, and Z is an integer ranging from 1 to 63. Y must be less than Z.";
                      }
                    }  // list icmp-type
                  }  // container icmp-types
    
                  container dscps {
                    description "List of DSCPs.";
                    list dscp {
                      key "range";
                      max-elements 5;
                      description
                        "Configure a filtering rule that is based on the DSCP. Relationships between the traffic classifier name and DSCP value are as follows: 0: BE; 8: CS1; 10: AF11; 12: AF12; 14: AF13; 16: CS2; 18: AF21; 20: AF22; 22: AF23; 24: CS3; 26: AF31; 28: AF32; 30: AF33; 32: CS4; 34: AF41; 36: AF42; 38: AF43; 40: CS5; 46: EF; 48: CS6; 56: CS7.";
                      leaf range {
                        type string {
                          length "1..30";
                          pattern
                            '(6[0-3]|[1-5][0-9]|[0-9])|(MIN..(6[0-3]|[1-5][0-9]|[0-9]))|((6[0-3]|[1-5][0-9]|[0-9])..MAX)|((6[0-2]|[1-5][0-9]|[0-9])..(6[0-3]|[1-5][0-9]|[1-9]))';
                        }
                        description
                          "Specify a value or value range for a DSCP-based filtering rule. The range is in any of the following formats: X, MIN..X, X..MAX, or Y..Z. X, MIN..X, and X..MAX indicate that a matched port number must be equal to X, less than X, and greater than X, respectively. Y..Z indicates that a matched port number must be greater than Y and less than Z. X is an integer ranging from 0 to 63, Y is an integer ranging from 0 to 62, and Z is an integer ranging from 1 to 63. Y must be less than Z.";
                      }
                    }  // list dscp
                  }  // container dscps
    
                  container protocols {
                    description
                      "List of IP protocols.";
                    list protocol {
                      key "range";
                      max-elements 5;
                      description
                        "Configure a filtering rule that is based on the IP protocol. Relationships between the protocol name and protocol value are as follows: 1: ICMP; 2: IGMP; 4: IPIP; 6: TCP; 8: EGP; 17: UDP; 41: IPv6; 46: RSVP; 47: GRE; 50: ESP; 89: OSPF; 103: PIM.";
                      leaf range {
                        type string {
                          length "1..30";
                          pattern
                            '(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])|(MIN..(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9]))|((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])..MAX)|((25[0-4]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])..(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[1-9]))';
                        }
                        description
                          "Specify a value or value range for an IP protocol-based filtering rule. The range is in any of the following formats: X, MIN..X, X..MAX, or Y..Z. X, MIN..X, and X..MAX indicate that a matched port number must be equal to X, less than X, and greater than X, respectively. Y..Z indicates that a matched port number must be greater than Y and less than Z. X is an integer ranging from 0 to 63, Y is an integer ranging from 0 to 62, and Z is an integer ranging from 1 to 63. Y must be less than Z.";
                      }
                    }  // list protocol
                  }  // container protocols
    
                  container packet-lengths {
                    description
                      "List of packet-lengths.";
                    list packet-length {
                      key "range";
                      max-elements 5;
                      description
                        "Configure a packet length-based filtering rule for a BGP (IPv6) Flow Specification route or BGP VPN Flow Specification route to filter packets.";
                      leaf range {
                        type string {
                          length "1..30";
                          pattern
                            '(9600|9[0-5][0-9][0-9]||[1-8][0-9][0-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9]|[0-9])|(MIN..(9600|9[0-5][0-9][0-9]||[1-8][0-9][0-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9]|[0-9]))|((9600|9[0-5][0-9][0-9]||[1-8][0-9][0-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9]|[0-9])..MAX)|((9[0-5][0-9][0-9]||[1-8][0-9][0-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9]|[0-9])..(9600|9[0-5][0-9][0-9]||[1-8][0-9][0-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9]|[1-9]))';
                        }
                        description
                          "Specify a length or length range for a BGP (IPv6) Flow Specification route or BGP VPN Flow Specification route to filter packets. The value is in any of the following formats: X, MIN..X, X..MAX, or Y..Z. X, MIN..X, and X..MAX indicate that a matched port number must be equal to X, less than X, and greater than X, respectively. Y..Z indicates that a matched port number must be greater than Y and less than Z. X is an integer ranging from 0 to 9600, Y is an integer ranging from 0 to 9599, and Z is an integer ranging from 1 to 9600. Y must be less than Z.";
                      }
                    }  // list packet-length
                  }  // container packet-lengths
    
                  container packet-port {
                    description
                      "Configure port filtering rules.";
                    choice set-type {
                      description
                        "Set port or source-destination-port filtering rule.";
                      case port-rule {
                        description
                          "Set port rule.";
                        container ports {
                          description
                            "List of ports.";
                          list port {
                            key "range";
                            max-elements 5;
                            description
                              "Configure a filtering rule that is based on the port number. Relationships between the port name and port value are as follows: 1: ICMP; 2: IGMP; 4: IPIP; 6: TCP; 8: EGP; 17: UDP; 41: IPv6; 46: RSVP; 47: GRE; 50: ESP; 89: OSPF; 103: PIM.";
                            leaf range {
                              type string {
                                length "1..30";
                                pattern
                                  '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9][0-9]|6[0-4][0-9][0-9][0-9]|[1-5][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9]|[0-9])|(MIN..(6553[0-5]|655[0-2][0-9]|65[0-4][0-9][0-9]|6[0-4][0-9][0-9][0-9]|[1-5][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9]|[0-9]))|((6553[0-5]|655[0-2][0-9]|65[0-4][0-9][0-9]|6[0-4][0-9][0-9][0-9]|[1-5][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9]|[0-9])..MAX)|((6553[0-4]|655[0-2][0-9]|65[0-4][0-9][0-9]|6[0-4][0-9][0-9][0-9]|[1-5][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9]|[0-9])..(6553[0-5]|655[0-2][0-9]|65[0-4][0-9][0-9]|6[0-4][0-9][0-9][0-9]|[1-5][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9]|[1-9]))';
                              }
                              description
                                "Specify a port number or port number range for traffic filtering. The range is in any of the following formats: X, MIN..X, X..MAX, or Y..Z. X, MIN..X, and X..MAX indicate that a matched port number must be equal to X, less than X, and greater than X, respectively. Y..Z indicates that a matched port number must be greater than Y and less than Z. X is an integer ranging from 0 to 65535, Y is an integer ranging from 0 to 65534, and Z is an integer ranging from 1 to 65535. Y must be less than Z.";
                            }
                          }  // list port
                        }  // container ports
                      }  // case port-rule
    
                      case src-dest-port-rule {
                        description
                          "Set source and destination port rule.";
                        container source-destination-ports {
                          description
                            "List of source and destination ports.";
                          list source-destination-port {
                            key "type range";
                            max-elements 10;
                            description
                              "Configure a filtering rule that is based on the source and destination port number. Relationships between the port name and port value are as follows: 1: ICMP; 2: IGMP; 4: IPIP; 6: TCP; 8: EGP; 17: UDP; 41: IPv6; 46: RSVP; 47: GRE; 50: ESP; 89: OSPF; 103: PIM.";
                            leaf type {
                              type match-port-type;
                              description
                                "Specify a type for the filtering rule.";
                            }
    
                            leaf range {
                              type string {
                                length "1..30";
                                pattern
                                  '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9][0-9]|6[0-4][0-9][0-9][0-9]|[1-5][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9]|[0-9])|(MIN..(6553[0-5]|655[0-2][0-9]|65[0-4][0-9][0-9]|6[0-4][0-9][0-9][0-9]|[1-5][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9]|[0-9]))|((6553[0-5]|655[0-2][0-9]|65[0-4][0-9][0-9]|6[0-4][0-9][0-9][0-9]|[1-5][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9]|[0-9])..MAX)|((6553[0-4]|655[0-2][0-9]|65[0-4][0-9][0-9]|6[0-4][0-9][0-9][0-9]|[1-5][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9]|[0-9])..(6553[0-5]|655[0-2][0-9]|65[0-4][0-9][0-9]|6[0-4][0-9][0-9][0-9]|[1-5][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9]|[1-9]))';
                              }
                              description
                                "Specify a port number or port number range for traffic filtering. The range is in any of the following formats: X, MIN..X, X..MAX, or Y..Z. X, MIN..X, and X..MAX indicate that a matched port number must be equal to X, less than X, and greater than X, respectively. Y..Z indicates that a matched port number must be greater than Y and less than Z. X is an integer ranging from 0 to 65535, Y is an integer ranging from 0 to 65534, and Z is an integer ranging from 1 to 65535. Y must be less than Z.";
                            }
                          }  // list source-destination-port
                        }  // container source-destination-ports
                      }  // case src-dest-port-rule
                    }  // choice set-type
                  }  // container packet-port
                }  // container condition
    
                container action {
                  description
                    "Configure actions to be applied to static flow specification routes.";
                  container remark-dscp {
                    description
                      "Configure remark DSCP.";
                    leaf value {
                      type uint8 {
                        range "0..63";
                      }
                      description
                        "Specify the DSCP Value. Relationships between the traffic classifier name and DSCP value are as follows: 0: BE; 8: CS1; 10: AF11; 12: AF12; 14: AF13; 16: CS2; 18: AF21; 20: AF22; 22: AF23; 24: CS3; 26: AF31; 28: AF32; 30: AF33; 32: CS4; 34: AF41; 36: AF42; 38: AF43; 40: CS5; 46: EF; 48: CS6; 56: CS7.";
                    }
                  }  // container remark-dscp
    
                  container traffic-rate {
                    description
                      "Configure the traffic rate.";
                    leaf value {
                      type uint32 {
                        range "1..100000000";
                      }
                      units "kB/s";
                      description
                        "Specify the traffic rate.";
                    }
    
                    leaf valid-value {
                      type uint32 {
                        range "1..12500000";
                      }
                      units "kB/s";
                      config false;
                      description
                        "The valid traffic rate.";
                    }
                  }  // container traffic-rate
    
                  container traffic {
                    description
                      "Configure the traffic behaviour table.";
                    leaf sample {
                      type empty;
                      description
                        "Apply the traffic behaviour sampling.";
                    }
                  }  // container traffic
    
                  choice redirect-type {
                    description
                      "Set redirect rule.";
                    case ip {
                      description
                        "Set redirect ip rule.";
                      container redirect-ip {
                        when
                          "../../address-family='ipv4flow'";
                        presence
                          "Redirect to IPv4";
                        description
                          "Configure the rule to redirect to IP.";
                        leaf value {
                          type string {
                            length "9..17";
                            pattern
                              '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}:[0-1]';
                          }
                          mandatory true;
                          description
                            "Specify the redirect IP information, Format:X.X.X.X:number[0-1] (0:redirect 1:copy).";
                        }
    
                        leaf color {
                          when "../value";
                          type string {
                            length "3..12";
                            pattern
                              '0:([1-9]|[1-9][0-9]{1,8}|[1-3][0-9]{9}|4[0-1][0-9]{8}|42[0-8][0-9]{7}|429[0-3][0-9]{6}|4294[0-8][0-9]{5}|42949[0-5][0-9]{4}|429496[0-6][0-9]{3}|4294967[0-1][0-9]{2}|42949672[0-8][0-9]|429496729[0-5])';
                          }
                          description
                            "Specify the color information, format:0:number[1-4294967295].";
                        }
                      }  // container redirect-ip
                    }  // case ip
    
                    case ipv6 {
                      description
                        "Set redirect IPv6 rule.";
                      container redirect-ipv6 {
                        when
                          "../../../../../ni:name='_public_'";
                        must
                          "(../../address-family='ipv4flow' and color) or (../../address-family='ipv6flow')";
                        presence
                          "Redirect to IPv6";
                        description
                          "Configure the rule to redirect to IPv6.";
                        leaf ipv6 {
                          type string {
                            length "5..47";
                          }
                          mandatory true;
                          description
                            "Specify the redirect IPv6 information, Format:X:X::X:X.number[0-1] (0:redirect 1:copy).";
                        }
    
                        leaf color {
                          type string {
                            length "3..12";
                          }
                          description
                            "Specify the color information, format:0:number[1-4294967295].";
                        }
    
                        leaf prefix-sid {
                          when "../color";
                          type inet:ipv6-address-no-zone;
                          description
                            "PrefixSid attribute information of Route.";
                        }
                      }  // container redirect-ipv6
                    }  // case ipv6
                  }  // choice redirect-type
    
                  container redirect-vpn-target {
                    presence
                      "Redirect to vpn-target.";
                    description
                      "Configure the rule to redirect to vpn-target.";
                    leaf value {
                      type string {
                        length "3..21";
                        pattern
                          '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}:([0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))|(([0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]):([1-9]|[1-9][0-9]{1,8}|[1-3][0-9]{9}|4[0-1][0-9]{8}|42[0-8][0-9]{7}|429[0-3][0-9]{6}|4294[0-8][0-9]{5}|42949[0-5][0-9]{4}|429496[0-6][0-9]{3}|4294967[0-1][0-9]{2}|42949672[0-8][0-9]|429496729[0-5]))|(([1-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]):([0-9]|[1-9][0-9]{1,8}|[1-3][0-9]{9}|4[0-1][0-9]{8}|42[0-8][0-9]{7}|429[0-3][0-9]{6}|4294[0-8][0-9]{5}|42949[0-5][0-9]{4}|429496[0-6][0-9]{3}|4294967[0-1][0-9]{2}|42949672[0-8][0-9]|429496729[0-5]))|((6(553[6-9]|55[4-9][0-9]|5[6-9][0-9]{2}|[6-9][0-9]{3})|[7-9][0-9]{4}|[1-9][0-9]{5,8}|[1-3][0-9]{9}|4[0-1][0-9]{8}|42[0-8][0-9]{7}|429[0-3][0-9]{6}|4294[0-8][0-9]{5}|42949[0-5][0-9]{4}|429496[0-6][0-9]{3}|4294967[0-1][0-9]{2}|42949672[0-8][0-9]|429496729[0-5]):([0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))|(([1-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])\.([0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]):([0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))|(([0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])\.([1-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]):([0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))|(([0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])\.([0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]):([1-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))';
                      }
                      mandatory true;
                      description
                        "Specify the redirect vpn-target information.";
                    }
                  }  // container redirect-vpn-target
    
                  container deny {
                    presence
                      "Deny attack traffic.";
                    description
                      "Configure traffic drop operations.";
                    leaf enable {
                      type empty;
                      mandatory true;
                      description
                        "Deny attack traffic from BGP flow specification routes to protect devices and improve network security.";
                    }
                  }  // container deny
                }  // container action
    
                container interface-groups {
                  when
                    "../address-family = 'ipv4flow' and ../../../../ni:name = '_public_'";
                  description
                    "List of interface group list to be bounded to static flow specification routes.";
                  list interface-group {
                    key "id";
                    max-elements 100;
                    description
                      "Configure interface group list to be bounded to static flow specification routes.";
                    leaf id {
                      type uint16 {
                        range "0..16383";
                      }
                      description
                        "Interface group ID.";
                    }
                  }  // list interface-group
                }  // container interface-groups
              }  // list flow-route
            }  // container flow-routes
          }  // container flowspec
        }
      }  // module huawei-flowspec
    

© 2023 YumaWorks, Inc. All rights reserved.