+++ /dev/null
-module opendaylight-match-types {
- namespace "urn:opendaylight:model:match:types";
- prefix "match";
-
- import ietf-inet-types {prefix inet; revision-date "2010-09-24";}
- import ietf-yang-types {prefix yang; revision-date "2010-09-24";}
- import opendaylight-l2-types {prefix l2t;revision-date "2013-08-27";}
- import opendaylight-inventory {prefix inv;revision-date "2013-08-19";}
-
- revision "2013-10-26" {
- description "Initial revision of macth types";
- }
-
- grouping "mac-address-filter" {
- leaf address {
- mandatory true;
- type yang:mac-address;
- }
- leaf mask {
- type binary;
- }
- }
-
- grouping "of-metadata" {
- leaf metadata {
- type uint64;
- }
-
- leaf metadata-mask {
- type binary;
- }
- }
-
- /** Match Groupings **/
- grouping "ethernet-match-fields" {
- container ethernet-source {
- description "Ethernet source address.";
- presence "Match field is active and set";
- uses mac-address-filter;
- }
- container ethernet-destination {
- description "Ethernet destination address.";
- presence "Match field is active and set";
- uses mac-address-filter;
- }
- container ethernet-type {
- description "Ethernet frame type.";
- presence "Match field is active and set";
-
- leaf type {
- mandatory true;
- type l2t:ether-type; // Needs to define that as general model
- }
-
- leaf mask {
- type binary;
- }
- }
- }
-
- grouping "vlan-match-fields" {
- container vlan-id {
- description "VLAN id.";
- presence "Match field is active and set";
-
- leaf vlan-id-present {
- type boolean;
- }
-
- leaf vlan-id {
- type l2t:vlan-id;
- }
- }
- leaf vlan-pcp {
- description "VLAN priority.";
- type l2t:vlan-pcp;
- }
- }
-
- grouping "ip-match-fields" {
- leaf ip-protocol {
- description "IP protocol.";
- type uint8;
- }
-
- leaf ip-dscp {
- description "IP DSCP (6 bits in ToS field).";
- type inet:dscp;
- }
-
- leaf ip-ecn {
- description "IP ECN (2 bits in ToS field).";
- type uint8;
- }
-
- leaf ip-proto {
- description "IP Proto (IPv4 or IPv6 Protocol Number).";
- type inet:ip-version;
- }
- }
-
- grouping "ipv4-match-fields" {
- leaf ipv4-source {
- description "IPv4 source address.";
- type inet:ipv4-prefix;
- }
-
- leaf ipv4-destination {
- description "IPv4 destination address.";
- type inet:ipv4-prefix;
- }
-
- }
-
- grouping "ipv6-match-fields" {
- leaf ipv6-source {
- description "IPv6 source address.";
- type inet:ipv6-prefix;
- }
-
- leaf ipv6-destination {
- description "IPv6 destination address.";
- type inet:ipv6-prefix;
- }
-
- leaf ipv6-nd-target {
- description "IPv6 target address for neighbour discovery message";
- type inet:ipv6-address;
- }
-
- container "ipv6-label" {
- leaf ipv6-flabel {
- type inet:ipv6-flow-label;
- }
-
- leaf flabel-mask {
- type binary;
- }
- }
-
- leaf ipv6-nd-sll {
- description "Link layer source address for neighbour discovery message";
- type yang:mac-address;
- }
-
- leaf ipv6-nd-tll {
- description "Link layer target address for neighbour discovery message";
- type yang:mac-address;
- }
-
- container "ipv6-ext-header" {
- leaf ipv6-exthdr {
- description "IPv6 Extension Header field";
- type uint16;
- }
-
- leaf ipv6-exthdr-mask {
- type binary;
- }
- }
- }
-
- grouping "udp-match-fields" {
- leaf udp-source-port {
- description "UDP source port.";
- type inet:port-number;
- }
- leaf udp-destination-port {
- description "UDP destination port.";
- type inet:port-number;
- }
- }
-
- grouping "protocol-match-fields" {
- leaf mpls-label {
- description "Label in the first MPLS shim header";
- type uint32;
- }
-
- leaf mpls-tc {
- description "TC in the first MPLS shim header";
- type uint8;
- }
-
- leaf mpls-bos {
- description "BoS bit in the first MPLS shim header";
- type uint8;
- }
-
- container "pbb" {
- leaf pbb-isid {
- description "I-SID in the first PBB service instance tag";
- type uint32;
- }
-
- leaf pbb-mask {
- type binary;
- }
- }
- }
-
- grouping "tcp-match-fields" {
- leaf tcp-source-port {
- description "TCP source port.";
- type inet:port-number;
- }
- leaf tcp-destination-port {
- description "TCP destination port.";
- type inet:port-number;
- }
- }
-
- grouping "sctp-match-fields" {
- leaf sctp-source-port {
- description "SCTP source port.";
- type inet:port-number;
- }
- leaf sctp-destination-port {
- description "SCTP destination port.";
- type inet:port-number;
- }
- }
-
- grouping "icmpv4-match-fields" {
- leaf icmpv4-type {
- description "ICMP type.";
- type uint8; // Define ICMP Type
- }
- description "ICMP code.";
- leaf icmpv4-code {
- type uint8; // Define ICMP Code
- }
- }
-
- grouping "icmpv6-match-fields" {
- leaf icmpv6-type {
- description "ICMP type.";
- type uint8; // Define ICMP Type
- }
- description "ICMP code.";
- leaf icmpv6-code {
- type uint8; // Define ICMP Code
- }
- }
-
- grouping "arp-match-fields" {
- leaf arp-op {
- type uint16;
- }
-
- leaf arp-source-transport-address {
- description "ARP source IPv4 address.";
- type inet:ipv4-prefix;
- }
-
- leaf arp-target-transport-address {
- description "ARP target IPv4 address.";
- type inet:ipv4-prefix;
- }
- container arp-source-hardware-address {
- description "ARP source hardware address.";
- presence "Match field is active and set";
- uses mac-address-filter;
- }
- container arp-target-hardware-address {
- description "ARP target hardware address.";
- presence "Match field is active and set";
- uses mac-address-filter;
- }
- }
-
- grouping match {
- leaf in-port {
- type inv:node-connector-id;
- }
-
- leaf in-phy-port {
- type inv:node-connector-id;
- }
-
- container "metadata" {
- uses of-metadata;
- }
-
- container "tunnel" {
- leaf tunnel-id {
- description "Metadata associated in the logical port";
- type uint64;
- }
-
- leaf tunnel-mask {
- type binary;
- }
- }
-
- container "ethernet-match" {
- uses "ethernet-match-fields";
- }
-
- container "vlan-match" {
- uses "vlan-match-fields";
- }
-
- container "ip-match" {
- uses "ip-match-fields";
- }
-
- choice layer-3-match {
- case "ipv4-match" {
- uses "ipv4-match-fields";
- }
- case "ipv6-match" {
- uses "ipv6-match-fields";
- }
- case "arp-match" {
- uses "arp-match-fields";
- }
- }
-
- choice layer-4-match {
- case "udp-match" {
- uses "udp-match-fields";
- }
- case "tcp-match" {
- uses "tcp-match-fields";
- }
- case "sctp-match" {
- uses "sctp-match-fields";
- }
- }
-
- container "icmpv4-match" {
- uses "icmpv4-match-fields";
- }
-
- container "icmpv6-match" {
- uses "icmpv6-match-fields";
- }
-
- container "protocol-match-fields" {
- uses "protocol-match-fields";
- }
- }
-}
\ No newline at end of file