-module openflow-extensible-match {
- namespace "urn:openflowopenflow:oxm";
- prefix "oxm";
+/*
+ * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+ module openflow-extensible-match {
+ namespace "urn:opendaylight:openflow:oxm";
+ prefix "oxm";
-
import ietf-yang-types {prefix yang;}
import ietf-inet-types {prefix inet;}
import openflow-types {prefix oft;}
-
- revision "2013-07-31" {
- description "Initial model";
+ revision "2015-02-25" {
+ description "OpenFlow 1.3 - match model";
}
identity oxm-match-type {
- description
+ description
"The OpenFlow Extensible Match type must be supported by all OpenFlow
switches.";
base oft:match-type-base;
}
-
// oxm classes
- identity class {
- description "Base identity for OXM classes";
- }
-
+ identity oxm-class-base {
+ description "Base identity for OXM classes";
+ }
- identity nxm-0-class {
- description "Backward compatibility with NXM";
- base class;
- }
- identity nxm-1-class {
- description "Backward compatibility with NXM";
- base class;
- }
- identity openflow-basic-class {
- description "Basic class for OpenFlow";
- base class;
- }
- identity experimenter-class {
- description
- "Marks Experimenter match type class.
- All experimenter match classes MUST use this class as a base.";
- base class;
- }
+ identity nxm-0-class {
+ description "Match class for backward compatibility with NXM";
+ base oxm-class-base;
+ }
+ identity nxm-1-class {
+ description "Match class for backward compatibility with NXM";
+ base oxm-class-base;
+ }
+ identity openflow-basic-class {
+ description "Basic class for OpenFlow";
+ base oxm-class-base;
+ }
+ identity experimenter-class {
+ description
+ "Marks Experimenter match type class.
+ All experimenter match classes MUST use this class as a base.";
+ base oxm-class-base;
+ }
+ // match-field types
+ identity match-field {
+ description "Base identity for OXM Fields";
+ }
+ identity in_port {
+ base match-field;
+ description "OXM field for Switch input port.";
+ }
+ identity in_phy_port {
+ base match-field;
+ description "OXM field for Switch physical input port.";
+ }
+ identity metadata {
+ base match-field;
+ description "OXM field for Metadata passed between tables.";
+ }
+ identity eth_dst {
+ base match-field;
+ description "OXM field for Ethernet destination address.";
+ }
+ identity eth_src {
+ base match-field;
+ description "OXM field for Ethernet source address.";
+ }
+ identity eth_type {
+ base match-field;
+ description "OXM field for Ethernet frame type.";
+ }
+ identity vlan_vid {
+ base match-field;
+ description "OXM field for VLAN id.";
+ }
+ identity vlan_pcp {
+ base match-field;
+ description "OXM field for VLAN priority.";
+ }
+ identity ip_dscp {
+ base match-field;
+ description "OXM field for IP DSCP (6 bits in ToS field).";
+ }
+ identity ip_ecn {
+ base match-field;
+ description "OXM field for IP ECN (2 bits in ToS field).";
+ }
+ identity ip_proto {
+ base match-field;
+ description "OXM field for IP protocol.";
+ }
+ identity ipv4_src {
+ base match-field;
+ description "OXM field for IPv4 source address.";
+ }
+ identity ipv4_dst {
+ base match-field;
+ description "OXM field for IPv4 destination address.";
+ }
+ identity tcp_src {
+ base match-field;
+ description "OXM field for TCP source port.";
+ }
+ identity tcp_dst {
+ base match-field;
+ description "OXM field for TCP destination port.";
+ }
+ identity udp_src {
+ base match-field;
+ description "OXM field for UDP source port.";
+ }
+ identity udp_dst {
+ base match-field;
+ description "OXM field for UDP destination port.";
+ }
+ identity sctp_src {
+ base match-field;
+ description "OXM field for SCTP source port.";
+ }
+ identity sctp_dst {
+ base match-field;
+ description "OXM field for SCTP destination port.";
+ }
+ identity icmpv4_type {
+ base match-field;
+ description "OXM field for ICMP type.";
+ }
+ identity icmpv4_code {
+ base match-field;
+ description "OXM field for ICMP code.";
+ }
+ identity arp_op {
+ base match-field;
+ description "OXM field for ARP opcode.";
+ }
+ identity arp_spa {
+ base match-field;
+ description "OXM field for ARP source IPv4 address.";
+ }
+ identity arp_tpa {
+ base match-field;
+ description "OXM field for ARP target IPv4 address.";
+ }
+ identity arp_sha {
+ base match-field;
+ description "OXM field for ARP source hardware address.";
+ }
+ identity arp_tha {
+ base match-field;
+ description "OXM field for ARP target hardware address.";
+ }
+ identity ipv6_src {
+ base match-field;
+ description "OXM field for IPv6 source address.";
+ }
+ identity ipv6_dst {
+ base match-field;
+ description "OXM field for IPv6 destination address.";
+ }
+ identity ipv6_flabel {
+ base match-field;
+ description "OXM field for IPv6 Flow Label";
+ }
+ identity icmpv6_type {
+ base match-field;
+ description "OXM field for ICMPv6 type.";
+ }
+ identity icmpv6_code {
+ base match-field;
+ description "OXM field for ICMPv6 code.";
+ }
+ identity ipv6_nd_target {
+ base match-field;
+ description "OXM field for Target address for ND.";
+ }
+ identity ipv6_nd_sll {
+ base match-field;
+ description "OXM field for Source link-layer for ND.";
+ }
+ identity ipv6_nd_tll {
+ base match-field;
+ description "OXM field for Target link-layer for ND.";
+ }
+ identity mpls_label {
+ base match-field;
+ description "OXM field for MPLS label.";
+ }
+ identity mpls_tc {
+ base match-field;
+ description "OXM field for MPLS TC.";
+ }
+ identity mpls_bos {
+ base match-field;
+ description "OXM field for MPLS BoS bit.";
+ }
+ identity pbb_isid {
+ base match-field;
+ description "OXM field for PBB I-SID.";
+ }
+ identity tunnel_id {
+ base match-field;
+ description "OXM field for Logical Port Metadata";
+ }
+ identity ipv6_exthdr {
+ base match-field;
+ description "OXM field for IPv6 Extension Header pseudo-field";
+ }
- // field types
- /*
- identity match-field {
- description "Base identity for OXM Fields";
+ grouping match-grouping {
+ container match {
+ description "Match structure (OF v1.3)";
+ leaf type {
+ type identityref {
+ base oft:match-type-base;
+ }
+ }
+ uses match-entries-grouping;
}
+ }
- identity in_port {
- base match-field;
- description "Match for Switch input port.";
- }
- identity in_phy_port {
- base match-field;
- description "Match for Switch physical input port.";
- }
- identity metadata {
- base match-field;
- description "Match for Metadata passed between tables.";
- }
- identity eth_dst {
- base match-field;
- description "Match for Ethernet destination address.";
- }
- identity eth_src {
- base match-field;
- description "Match for Ethernet source address.";
- }
- identity eth_type {
- base match-field;
- description "Match for Ethernet frame type.";
- }
- identity vlan_vid {
- base match-field;
- description "Match for VLAN id.";
- }
- identity vlan_pcp {
- base match-field;
- description "Match for VLAN priority.";
- }
- identity ip_dscp {
- base match-field;
- description "Match for IP DSCP (6 bits in ToS field).";
- }
- identity ip_ecn {
- base match-field;
- description "Match for IP ECN (2 bits in ToS field).";
- }
- identity ip_proto {
- base match-field;
- description "Match for IP protocol.";
- }
- identity ipv4_src {
- base match-field;
- description "Match for IPv4 source address.";
+ grouping match-entries-grouping {
+ list match-entry {
+ config false;
+ uses match-entry-fields-grouping;
+ uses match-entry-value-grouping;
}
- identity ipv4_dst {
- base match-field;
- description "Match for IPv4 destination address.";
- }
- identity tcp_src {
- base match-field;
- description "Match for TCP source port.";
- }
- identity tcp_dst {
- base match-field;
- description "Match for TCP destination port.";
- }
- identity udp_src {
- base match-field;
- description "Match for UDP source port.";
- }
- identity udp_dst {
- base match-field;
- description "Match for UDP destination port.";
- }
- identity sctp_src {
- base match-field;
- description "Match for SCTP source port.";
- }
- identity sctp_dst {
- base match-field;
- description "Match for SCTP destination port.";
- }
- identity icmpv4_type {
- base match-field;
- description "Match for ICMP type.";
- }
- identity icmpv4_code {
- base match-field;
- description "Match for ICMP code.";
- }
- identity arp_op {
- base match-field;
- description "Match for ARP opcode.";
- }
- identity arp_spa {
- base match-field;
- description "Match for ARP source IPv4 address.";
- }
- identity arp_tpa {
- base match-field;
- description "Match for ARP target IPv4 address.";
- }
- identity arp_sha {
- base match-field;
- description "Match for ARP source hardware address.";
- }
- identity arp_tha {
- base match-field;
- description "Match for ARP target hardware address.";
- }
- identity ipv6_src {
- base match-field;
- description "Match for IPv6 source address.";
- }
- identity ipv6_dst {
- base match-field;
- description "Match for IPv6 destination address.";
- }
- identity ipv6_flabel {
- base match-field;
- description "Match for IPv6 Flow Label";
- }
- identity icmpv6_type {
- base match-field;
- description "Match for ICMPv6 type.";
- }
- identity icmpv6_code {
- base match-field;
- description "Match for ICMPv6 code.";
- }
- identity ipv6_nd_target {
- base match-field;
- description "Match for Target address for ND.";
- }
- identity ipv6_nd_sll {
- base match-field;
- description "Match for Source link-layer for ND.";
- }
- identity ipv6_nd_tll {
- base match-field;
- description "Match for Target link-layer for ND.";
- }
- identity mpls_label {
- base match-field;
- description "Match for MPLS label.";
- }
- identity mpls_tc {
- base match-field;
- description "Match for MPLS TC.";
- }
- identity mpls_bos {
- base match-field;
- description "Match for MPLS BoS bit.";
- }
- identity pbb_isid {
- base match-field;
- description "Match for PBB I-SID.";
+ }
+
+ grouping match-entry-fields-grouping {
+ leaf oxm-class {
+ type identityref {
+ base oxm-class-base;
+ }
}
- identity tunnel_id {
- base match-field;
- description "Match for Logical Port Metadata";
+ leaf oxm-match-field {
+ type identityref {
+ base match-field;
+ }
}
- identity ipv6_exthdr {
- base match-field;
- description "Match for IPv6 Extension Header pseudo-field";
+ leaf has-mask {
+ type boolean;
}
- */
- // Abstract definitions of fields structure
+ }
+
+ container oxm-container {
+ uses match-entry-value-grouping;
+ }
- grouping in-port {
- description
- "Ingress port. Numerical representation of incoming port, starting at 1. This may be a physical or switch-defined logical port.";
- leaf port-number {
- type oft:port-number;
+ grouping match-entry-value-grouping {
+ choice match-entry-value {
+ case in-port-case {
+ container in-port {
+ leaf port-number {
+ type oft:port-number;
+ }
+ }
}
- }
- grouping in-phy-port {
- description "Physical port. In ofp_packet_in messages, underlying physical port when packet received on a logical port.";
- leaf port-number {
- type oft:port-number;
+ case in-phy-port-case {
+ container in-phy-port {
+ leaf port-number {
+ type oft:port-number;
+ }
+ }
}
- }
- grouping metadata {
- description "Metadata passed between tables.";
- leaf value {
- type oft:metadata;
+ case metadata-case {
+ container metadata {
+ leaf metadata {
+ type binary;
+ }
+ leaf mask {
+ type binary;
+ }
+ }
}
- leaf mask {
- type oft:metadata;
+ case eth-src-case {
+ container eth-src {
+ leaf mac-address {
+ type yang:mac-address;
+ }
+ leaf mask {
+ type binary;
+ }
+ }
}
- }
- grouping eth-dst {
- description "Ethernet destination address.";
- leaf address {
- type yang:mac-address;
+ case eth-dst-case {
+ container eth-dst {
+ leaf mac-address {
+ type yang:mac-address;
+ }
+ leaf mask {
+ type binary;
+ }
+ }
}
- }
- grouping eth-src {
- description "Ethernet source address.";
- leaf address {
- type yang:mac-address;
+ case eth-type-case {
+ container eth-type {
+ leaf eth-type {
+ type oft:ether-type;
+ }
+ }
}
- leaf mask {
- type binary;
+ case vlan-vid-case {
+ container vlan-vid {
+ leaf vlan-vid {
+ type uint16;
+ }
+ leaf cfi-bit {
+ type boolean;
+ }
+ leaf mask {
+ type binary;
+ }
+ }
}
- }
- grouping eth-type {
- description "Ethernet frame type.";
- leaf type {
- type oft:ether-type; // Needs to define that as general model
+ case vlan-pcp-case {
+ container vlan-pcp {
+ leaf vlan-pcp {
+ type uint8;
+ }
+ }
}
- leaf mask {
- type binary;
+ case ip-dscp-case {
+ container ip-dscp {
+ leaf dscp {
+ type inet:dscp;
+ }
+ }
}
- }
- grouping vlan-vid {
- description "VLAN id.";
- leaf vlan-id {
- type uint16; // TODO: Define proper vlan id type.
+ case ip-ecn-case {
+ container ip-ecn {
+ leaf ecn {
+ type uint8;
+ }
+ }
}
- leaf mask {
- type binary;
+ case ip-proto-case {
+ container ip-proto {
+ leaf protocol-number {
+ type uint8;
+ }
+ }
}
- }
- grouping vlan-pcp {
- description "VLAN priority.";
- leaf vlan-pcp {
- type uint8; // TODO: Define PCP type
+ case ipv4-src-case {
+ container ipv4-src {
+ leaf ipv4-address {
+ type inet:ipv4-address;
+ }
+ leaf mask {
+ type binary;
+ }
+ }
}
- }
- grouping ip-dscp {
- description "IP DSCP (6 bits in ToS field).";
-
- leaf dscp {
- type inet:dscp; // TODO: Define DSCP type
+ case ipv4-dst-case {
+ container ipv4-dst {
+ leaf ipv4-address {
+ type inet:ipv4-address;
+ }
+ leaf mask {
+ type binary;
+ }
+ }
}
- }
- grouping ip-ecn {
- description "IP ECN (2 bits in ToS field).";
- leaf ecn {
- type uint8; // TODO define ECN
+ case tcp-src-case {
+ container tcp-src {
+ leaf port {
+ type inet:port-number;
+ }
+ }
}
- }
- grouping ip-proto {
- description "IP protocol.";
- leaf protocol-number {
- type uint8; // TODO define IP protocol number
+ case tcp-dst-case {
+ container tcp-dst {
+ leaf port {
+ type inet:port-number;
+ }
+ }
}
- }
- grouping ipv4-src {
- description "IPv4 source address.";
- leaf prefix {
- type inet:ipv4-prefix;
+ case udp-src-case {
+ container udp-src {
+ leaf port {
+ type inet:port-number;
+ }
+ }
}
- }
- grouping ipv4-dst {
- description "IPv4 destination address.";
- leaf prefix {
- type inet:ipv4-prefix;
+ case udp-dst-case {
+ container udp-dst {
+ leaf port {
+ type inet:port-number;
+ }
+ }
}
- }
- grouping tcp-src {
- description "TCP source port.";
- leaf port {
- type inet:port-number;
+ case sctp-src-case {
+ container sctp-src {
+ leaf port {
+ type inet:port-number;
+ }
+ }
}
- }
- grouping tcp-dst {
- description "TCP destination port.";
+ case sctp-dst-case {
+ container sctp-dst {
leaf port {
- type inet:port-number;
+ type inet:port-number;
+ }
+ }
}
- }
- grouping udp-src {
- description "UDP source port.";
- leaf port {
- type inet:port-number;
+ case icmpv4-type-case {
+ container icmpv4-type {
+ leaf icmpv4-type {
+ type uint8;
+ }
+ }
}
- }
- grouping udp-dst {
- description "UDP destination port.";
- leaf port {
- type inet:port-number;
+ case icmpv4-code-case {
+ container icmpv4-code {
+ leaf icmpv4-code {
+ type uint8;
+ }
+ }
}
- }
- grouping sctp-src {
- description "SCTP source port.";
- leaf port {
- type inet:port-number;
+ case arp-op-case {
+ container arp-op {
+ leaf op-code {
+ type uint16;
+ }
+ }
}
- }
- grouping sctp-dst {
- description "SCTP destination port.";
- leaf port {
- type inet:port-number;
+ case arp-spa-case {
+ container arp-spa {
+ leaf ipv4-address {
+ type inet:ipv4-address;
+ }
+ leaf mask {
+ type binary;
+ }
+ }
}
- }
- grouping icmpv4-type {
- description "ICMP type.";
- leaf type {
- type uint8; // Define ICMP Type
+ case arp-tpa-case {
+ container arp-tpa {
+ leaf ipv4-address {
+ type inet:ipv4-address;
+ }
+ leaf mask {
+ type binary;
+ }
+ }
}
- }
- grouping icmpv4-code {
- description "ICMP code.";
- leaf code {
- type uint8; // Define ICMP Code
+ case arp-sha-case {
+ container arp-sha {
+ leaf mac-address {
+ type yang:mac-address;
+ }
+ leaf mask {
+ type binary;
+ }
+ }
}
- }
- grouping arp-op {
- description "ARP opcode.";
- leaf op-code {
- type uint16;
+ case arp-tha-case {
+ container arp-tha {
+ leaf mac-address {
+ type yang:mac-address;
+ }
+ leaf mask {
+ type binary;
+ }
+ }
}
- }
- grouping arp-spa {
- description "ARP source IPv4 address.";
- leaf prefix {
- type inet:ipv4-prefix;
+ case ipv6-src-case {
+ container ipv6-src {
+ leaf ipv6-address {
+ type inet:ipv6-address;
+ }
+ leaf mask {
+ type binary;
+ }
+ }
}
- }
- grouping arp-tpa {
- description "ARP target IPv4 address.";
- leaf prefix {
- type inet:ipv4-prefix;
+ case ipv6-dst-case {
+ container ipv6-dst {
+ leaf ipv6-address {
+ type inet:ipv6-address;
+ }
+ leaf mask {
+ type binary;
+ }
+ }
}
- }
- grouping arp-sha {
- description "ARP source hardware address.";
- leaf address {
- type yang:mac-address;
+ case ipv6-flabel-case {
+ container ipv6-flabel {
+ leaf ipv6-flabel {
+ type inet:ipv6-flow-label;
+ }
+ leaf mask {
+ type binary;
+ }
+ }
}
- leaf mask {
- type binary;
+ case icmpv6-type-case {
+ container icmpv6-type {
+ leaf icmpv6-type {
+ type uint8;
+ }
+ }
}
- }
- grouping arp-tha {
- description "ARP target hardware address.";
- leaf address {
- type yang:mac-address;
+ case icmpv6-code-case {
+ container icmpv6-code {
+ leaf icmpv6-code {
+ type uint8;
+ }
+ }
}
- leaf mask {
- type binary;
+ case ipv6-nd-target-case {
+ container ipv6-nd-target {
+ leaf ipv6-address {
+ type inet:ipv6-address;
+ }
+ }
}
- }
- grouping ipv6-src {
- description "IPv6 source address.";
- leaf prefix {
- type inet:ipv6-prefix;
+ case ipv6-nd-sll-case {
+ container ipv6-nd-sll {
+ leaf mac-address {
+ type yang:mac-address;
+ }
+ }
}
- }
- grouping ipv6-dst {
- description "IPv6 destination address.";
- leaf prefix {
- type inet:ipv6-prefix;
+ case ipv6-nd-tll-case {
+ container ipv6-nd-tll {
+ leaf mac-address {
+ type yang:mac-address;
+ }
+ }
}
- }
- grouping ipv6-flabel {
- description "IPv6 Flow Label";
- leaf label {
- type inet:ipv6-flow-label;
+ case mpls-label-case {
+ container mpls-label {
+ leaf mpls-label {
+ type uint32;
+ }
+ }
+ }
+ case mpls-tc-case {
+ container mpls-tc {
+ leaf tc {
+ type uint8;
+ }
+ }
+ }
+ case mpls-bos-case {
+ container mpls-bos {
+ leaf bos {
+ type boolean;
+ }
+ }
+ }
+ case pbb-isid-case {
+ container pbb-isid {
+ leaf isid {
+ type uint32;
+ }
+ leaf mask {
+ type binary;
+ }
+ }
+ }
+ case tunnel-id-case {
+ container tunnel-id {
+ leaf tunnel-id {
+ type binary;
+ }
+ leaf mask {
+ type binary;
+ }
+ }
+ }
+ case ipv6-exthdr-case {
+ container ipv6-exthdr {
+ leaf pseudo-field {
+ type oft:ipv6-exthdr-flags;
+ }
+ leaf mask {
+ type binary;
+ }
+ }
}
}
- grouping icmpv6-type {
- description "ICMPv6 type.";
- leaf type {
+ }
+
+ // OF1.0 structures
+ grouping match-v10-grouping {
+ container match-v10 {
+ description "OF v1.0 match structure";
+ leaf wildcards {
+ description "Wildcard fields (only flags).";
+ type oft:flow-wildcards-v10;
+ }
+ leaf nw-src-mask {
+ description "IP source address mask (definition differs from OF v1.0.0 spec to ease
+ understanding, library does the transformation into OF v1.0 spec correct data)";
type uint8;
}
- }
- grouping icmpv6-code {
- description "ICMPv6 code.";
- leaf code {
+ leaf nw-dst-mask {
+ description "IP destination address mask (definition differs from OF v1.0.0 spec to ease
+ understanding, library does the transformation into OF v1.0 spec correct data)";
type uint8;
}
- }
- grouping ipv6-nd-target {
- description "Target address for ND.";
- leaf address {
- type inet:ipv6-address;
+ leaf in-port {
+ description "Input switch port.";
+ type uint16;
}
- }
- grouping ipv6-nd-sll {
- description "Source link-layer for ND.";
- leaf address {
+ leaf dl-src {
+ description "Ethernet source address.";
type yang:mac-address;
}
- }
- grouping ipv6-nd-tll {
- description "Target link-layer for ND.";
- leaf address {
+ leaf dl-dst {
+ description "Ethernet destination address.";
type yang:mac-address;
}
- }
- grouping mpls-label {
- description "MPLS label.";
- leaf label {
- type uint32; // TODO define type
+ leaf dl-vlan {
+ description "Input VLAN id.";
+ type uint16;
}
- }
- grouping mpls-tc {
- description "MPLS TC.";
- leaf tc {
+ leaf dl-vlan-pcp {
+ description "Input VLAN priority.";
type uint8;
}
- }
- grouping mpls-bos {
- description "MPLS BoS bit.";
- leaf bos {
- type boolean;
- }
- }
- grouping pbb-isid {
- description "PBB I-SID.";
- leaf isid {
- type uint32;
+ leaf dl-type {
+ description "Ethernet frame type.";
+ type uint16;
}
- leaf mask {
- type binary;
+ leaf nw-tos {
+ description "IP ToS (actually DSCP field, 6 bits).";
+ type uint8;
}
- }
- grouping tunnel-id {
- description "Logical Port Metadata.";
- leaf value {
- type oft:metadata;
+ leaf nw-proto {
+ description "IP protocol or lower 8 bits of ARP opcode.";
+ type uint8;
}
- leaf mask {
- type oft:metadata;
+ leaf nw-src {
+ description "IP source address.";
+ type inet:ipv4-address;
}
- }
- grouping ipv6-exthdr {
- description "IPv6 Extension Header pseudo-field";
- leaf pseudo-field {
- type bits {
- bit nonext {
- description "<No next header> encountered.";
- position 0;
- }
- bit esp {
- description "Encrypted Sec Payload header present.";
- position 1;
- }
- bit auth {
- description "Authentication header present.";
- position 2;
- }
- bit dest {
- description "1 or 2 dest headers present.";
- position 3;
- }
- bit frag {
- description "Fragment header present.";
- position 4;
- }
- bit router {
- description "Router header present.";
- position 5;
- }
- bit hop {
- description "Hop-by-hop header present.";
- position 6;
- }
- bit unrep {
- description "Unexpected repeats encountered.";
- position 7;
- }
- bit unseq {
- description "Unexpected sequencing encountered.";
- position 8;
- }
- }
+ leaf nw-dst {
+ description "IP destination address.";
+ type inet:ipv4-address;
}
- leaf mask {
- type binary;
+ leaf tp-src {
+ description "TCP/UDP source port.";
+ type uint16;
}
- }
-
- /* Basic Match Fields :
- - Maybe it will be better to split into several groupings
- based on protocol types:
- - L2 match
- - L3 match
- - IPv4 match
- - IPv6 match
- - L4 match
- - ARP match
- etc...
- Maybe this works belongs to other module.
- */
-
- grouping basic-match-fields {
- container in-port {
- presence "";
- uses in-port;
-
- }
- container in-phy-port {
- presence "";
- uses in-phy-port;
-
- }
- container metadata {
- presence "";
- uses metadata;
-
- }
- container eth-dst {
- presence "";
- uses eth-dst;
-
- }
- container eth-src {
- presence "";
- uses eth-src;
-
- }
- container eth-type {
- presence "";
- uses eth-type;
-
- }
- container vlan-vid {
- presence "";
- uses vlan-vid;
-
- }
- container vlan-pcp {
- presence "";
- uses vlan-pcp;
-
- }
- container ip-dscp {
- presence "";
- uses ip-dscp;
-
- }
- container ip-ecn {
- presence "";
- uses ip-ecn;
-
- }
- container ip-proto {
- presence "";
- uses ip-proto;
-
- }
- container ipv4-src {
- presence "";
- uses ipv4-src;
-
- }
- container ipv4-dst {
- presence "";
- uses ipv4-dst;
-
- }
- container tcp-src {
- presence "";
- uses tcp-src;
-
- }
- container tcp-dst {
- presence "";
- uses tcp-dst;
-
- }
- container udp-src {
- presence "";
- uses udp-src;
-
- }
- container udp-dst {
- presence "";
- uses udp-dst;
-
- }
- container sctp-src {
- presence "";
- uses sctp-src;
-
- }
- container sctp-dst {
- presence "";
- uses sctp-dst;
-
- }
- container icmpv4-type {
- presence "";
- uses icmpv4-type;
-
- }
- container icmpv4-code {
- presence "";
- uses icmpv4-code;
-
- }
- container arp-op {
- presence "";
- uses arp-op;
-
- }
- container arp-spa {
- presence "";
- uses arp-spa;
-
- }
- container arp-tpa {
- presence "";
- uses arp-tpa;
-
- }
- container arp-sha {
- presence "";
- uses arp-sha;
-
- }
- container arp-tha {
- presence "";
- uses arp-tha;
-
- }
- container ipv6-src {
- presence "";
- uses ipv6-src;
-
- }
- container ipv6-dst {
- presence "";
- uses ipv6-dst;
-
- }
- container ipv6-flabel {
- presence "";
- uses ipv6-flabel;
-
- }
- container icmpv6-type {
- presence "";
- uses icmpv6-type;
-
- }
- container icmpv6-code {
- presence "";
- uses icmpv6-code;
-
- }
- container ipv6-nd-target {
- presence "";
- uses ipv6-nd-target;
-
- }
- container ipv6-nd-sll {
- presence "";
- uses ipv6-nd-sll;
-
- }
- container ipv6-nd-tll {
- presence "";
- uses ipv6-nd-tll;
-
- }
- container mpls-label {
- presence "";
- uses mpls-label;
-
- }
- container mpls-tc {
- presence "";
- uses mpls-tc;
-
- }
- container mpls-bos {
- presence "";
- uses mpls-bos;
-
- }
- container pbb-isid {
- presence "";
- uses pbb-isid;
-
- }
- container tunnel-id {
- presence "";
- uses tunnel-id;
-
- }
- container ipv6-exthdr {
- presence "";
- uses ipv6-exthdr;
-
+ leaf tp-dst {
+ description "TCP/UDP destination port.";
+ type uint16;
}
}
+ }
}
\ No newline at end of file