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 "OpenFlow 1.3 - match model"; } identity oxm-match-type { description "The OpenFlow Extensible Match type must be supported by all OpenFlow switches."; base oft:match-type-base; } // oxm classes identity clazz { description "Base identity for OXM classes"; } identity nxm-0-class { description "Backward compatibility with NXM"; base clazz; } identity nxm-1-class { description "Backward compatibility with NXM"; base clazz; } identity openflow-basic-class { description "Basic class for OpenFlow"; base clazz; } identity experimenter-class { description "Marks Experimenter match type class. All experimenter match classes MUST use this class as a base."; base clazz; } // field types identity match-field { description "Base identity for OXM Fields"; } 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."; } 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."; } identity tunnel_id { base match-field; description "Match for Logical Port Metadata"; } identity ipv6_exthdr { base match-field; description "Match for IPv6 Extension Header pseudo-field"; } container oxm-container { uses oxm-fields; } grouping oxm-fields { list match-entries { leaf oxm-class { type identityref { base clazz; } } leaf oxm-match-field { type identityref { base match-field; } } leaf has-mask { type boolean; } } } // OF1.0 structures grouping match-v10-grouping { container match-v10 { leaf wildcards { type oft:flow-wildcards-v10; } leaf nw-src-mask { type uint8; } leaf nw-dst-mask { type uint8; } leaf in-port { type uint16; } leaf dl-src { type yang:mac-address; } leaf dl-dst { type yang:mac-address; } leaf dl-vlan { type uint16; } leaf dl-vlan-pcp { type uint8; } leaf dl-type { type uint16; } leaf nw-tos { type uint8; } leaf nw-proto { type uint8; } leaf nw-src { type inet:ipv4-address; } leaf nw-dst { type inet:ipv4-address; } leaf tp-src { type uint16; } leaf tp-dst { type uint16; } } } }