-module openflow-extensible-match {
+/*
+ * 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";
}
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 clazz {
+ identity oxm-class-base {
description "Base identity for OXM classes";
}
identity nxm-0-class {
- description "Backward compatibility with NXM";
- base clazz;
+ description "Match class for backward compatibility with NXM";
+ base oxm-class-base;
}
identity nxm-1-class {
- description "Backward compatibility with NXM";
- base clazz;
+ description "Match class for backward compatibility with NXM";
+ base oxm-class-base;
}
identity openflow-basic-class {
description "Basic class for OpenFlow";
- base clazz;
+ base oxm-class-base;
}
identity experimenter-class {
- description
+ description
"Marks Experimenter match type class.
All experimenter match classes MUST use this class as a base.";
- base clazz;
+ base oxm-class-base;
}
// field types
identity in_port {
base match-field;
- description "Match for Switch input port.";
+ description "OXM field for Switch input port.";
}
identity in_phy_port {
base match-field;
- description "Match for Switch physical input port.";
+ description "OXM field for Switch physical input port.";
}
identity metadata {
base match-field;
- description "Match for Metadata passed between tables.";
+ description "OXM field for Metadata passed between tables.";
}
identity eth_dst {
base match-field;
- description "Match for Ethernet destination address.";
+ description "OXM field for Ethernet destination address.";
}
identity eth_src {
base match-field;
- description "Match for Ethernet source address.";
+ description "OXM field for Ethernet source address.";
}
identity eth_type {
base match-field;
- description "Match for Ethernet frame type.";
+ description "OXM field for Ethernet frame type.";
}
identity vlan_vid {
base match-field;
- description "Match for VLAN id.";
+ description "OXM field for VLAN id.";
}
identity vlan_pcp {
base match-field;
- description "Match for VLAN priority.";
+ description "OXM field for VLAN priority.";
}
identity ip_dscp {
base match-field;
- description "Match for IP DSCP (6 bits in ToS field).";
+ description "OXM field for IP DSCP (6 bits in ToS field).";
}
identity ip_ecn {
base match-field;
- description "Match for IP ECN (2 bits in ToS field).";
+ description "OXM field for IP ECN (2 bits in ToS field).";
}
identity ip_proto {
base match-field;
- description "Match for IP protocol.";
+ description "OXM field for IP protocol.";
}
identity ipv4_src {
base match-field;
- description "Match for IPv4 source address.";
+ description "OXM field for IPv4 source address.";
}
identity ipv4_dst {
base match-field;
- description "Match for IPv4 destination address.";
+ description "OXM field for IPv4 destination address.";
}
identity tcp_src {
base match-field;
- description "Match for TCP source port.";
+ description "OXM field for TCP source port.";
}
identity tcp_dst {
base match-field;
- description "Match for TCP destination port.";
+ description "OXM field for TCP destination port.";
}
identity udp_src {
base match-field;
- description "Match for UDP source port.";
+ description "OXM field for UDP source port.";
}
identity udp_dst {
base match-field;
- description "Match for UDP destination port.";
+ description "OXM field for UDP destination port.";
}
identity sctp_src {
base match-field;
- description "Match for SCTP source port.";
+ description "OXM field for SCTP source port.";
}
identity sctp_dst {
base match-field;
- description "Match for SCTP destination port.";
+ description "OXM field for SCTP destination port.";
}
identity icmpv4_type {
base match-field;
- description "Match for ICMP type.";
+ description "OXM field for ICMP type.";
}
identity icmpv4_code {
base match-field;
- description "Match for ICMP code.";
+ description "OXM field for ICMP code.";
}
identity arp_op {
base match-field;
- description "Match for ARP opcode.";
+ description "OXM field for ARP opcode.";
}
identity arp_spa {
base match-field;
- description "Match for ARP source IPv4 address.";
+ description "OXM field for ARP source IPv4 address.";
}
identity arp_tpa {
base match-field;
- description "Match for ARP target IPv4 address.";
+ description "OXM field for ARP target IPv4 address.";
}
identity arp_sha {
base match-field;
- description "Match for ARP source hardware address.";
+ description "OXM field for ARP source hardware address.";
}
identity arp_tha {
base match-field;
- description "Match for ARP target hardware address.";
+ description "OXM field for ARP target hardware address.";
}
identity ipv6_src {
base match-field;
- description "Match for IPv6 source address.";
+ description "OXM field for IPv6 source address.";
}
identity ipv6_dst {
base match-field;
- description "Match for IPv6 destination address.";
+ description "OXM field for IPv6 destination address.";
}
identity ipv6_flabel {
base match-field;
- description "Match for IPv6 Flow Label";
+ description "OXM field for IPv6 Flow Label";
}
identity icmpv6_type {
base match-field;
- description "Match for ICMPv6 type.";
+ description "OXM field for ICMPv6 type.";
}
identity icmpv6_code {
base match-field;
- description "Match for ICMPv6 code.";
+ description "OXM field for ICMPv6 code.";
}
identity ipv6_nd_target {
base match-field;
- description "Match for Target address for ND.";
+ description "OXM field for Target address for ND.";
}
identity ipv6_nd_sll {
base match-field;
- description "Match for Source link-layer for ND.";
+ description "OXM field for Source link-layer for ND.";
}
identity ipv6_nd_tll {
base match-field;
- description "Match for Target link-layer for ND.";
+ description "OXM field for Target link-layer for ND.";
}
identity mpls_label {
base match-field;
- description "Match for MPLS label.";
+ description "OXM field for MPLS label.";
}
identity mpls_tc {
base match-field;
- description "Match for MPLS TC.";
+ description "OXM field for MPLS TC.";
}
identity mpls_bos {
base match-field;
- description "Match for MPLS BoS bit.";
+ description "OXM field for MPLS BoS bit.";
}
identity pbb_isid {
base match-field;
- description "Match for PBB I-SID.";
+ description "OXM field for PBB I-SID.";
}
identity tunnel_id {
base match-field;
- description "Match for Logical Port Metadata";
+ description "OXM field for Logical Port Metadata";
}
identity ipv6_exthdr {
base match-field;
- description "Match for IPv6 Extension Header pseudo-field";
+ description "OXM field for IPv6 Extension Header pseudo-field";
+ }
+ identity tcp_flag {
+ base match-field;
+ description "NXM field for NXM_NX_TCP_FLAGS";
+ }
+ identity tunnel_ipv4_dst {
+ base match-field;
+ description "NXM field for NXM_NX_TUN_IPV4_DST";
+ }
+ identity tunnel_ipv4_src {
+ base match-field;
+ description "NXM field for NXM_NX_TUN_IPV4_SRC";
}
-
container oxm-container {
- uses oxm-fields;
+ uses oxm-fields-grouping;
}
-
- grouping oxm-fields {
+
+ grouping oxm-fields-grouping {
list match-entries {
+ description "OXM TLV-structures (Type Length Value)";
+ config false;
leaf oxm-class {
type identityref {
- base clazz;
+ base oxm-class-base;
}
}
leaf oxm-match-field {
}
leaf has-mask {
type boolean;
- }
+ }
}
}
-
+
+ grouping match-grouping {
+ container match {
+ description "Match structure (OF v1.3)";
+ leaf type {
+ type identityref {
+ base oft:match-type-base;
+ }
+ }
+ uses oxm-fields-grouping;
+ }
+ }
+
// 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;
}
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;
}
leaf in-port {
+ description "Input switch port.";
type uint16;
}
leaf dl-src {
+ description "Ethernet source address.";
type yang:mac-address;
}
leaf dl-dst {
+ description "Ethernet destination address.";
type yang:mac-address;
}
leaf dl-vlan {
+ description "Input VLAN id.";
type uint16;
}
leaf dl-vlan-pcp {
+ description "Input VLAN priority.";
type uint8;
}
leaf dl-type {
+ description "Ethernet frame type.";
type uint16;
}
leaf nw-tos {
+ description "IP ToS (actually DSCP field, 6 bits).";
type uint8;
}
leaf nw-proto {
+ description "IP protocol or lower 8 bits of ARP opcode.";
type uint8;
}
leaf nw-src {
+ description "IP source address.";
type inet:ipv4-address;
}
leaf nw-dst {
+ description "IP destination address.";
type inet:ipv4-address;
}
leaf tp-src {
+ description "TCP/UDP source port.";
type uint16;
}
leaf tp-dst {
+ description "TCP/UDP destination port.";
type uint16;
}
}
}
-
+
}
\ No newline at end of file