Flow specification.
Version: 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.