namespace "urn:opendaylight:model:match:types";
prefix "match";
- import ietf-inet-types {prefix inet;}
- import ietf-yang-types {prefix yang;}
- import opendaylight-l2-types {prefix l2t;}
+ 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-08-19" {
- description "Initial revision of flow service";
+ revision "2013-10-26" {
+ description "Initial revision of macth types";
}
-
+
grouping "mac-address-filter" {
leaf address {
mandatory true;
type binary;
}
}
+
+ grouping "of-metadata" {
+ leaf metadata {
+ type uint64;
+ }
+
+ leaf metadata-mask {
+ type binary;
+ }
+ }
/** Match Groupings **/
grouping "ethernet-match-fields" {
mandatory true;
type l2t:ether-type; // Needs to define that as general model
}
+
leaf mask {
type binary;
}
container vlan-id {
description "VLAN id.";
presence "Match field is active and set";
-
+
+ leaf vlan-id-present {
+ type boolean;
+ }
+
leaf vlan-id {
- mandatory true;
type l2t:vlan-id;
}
- leaf mask {
- type binary;
- }
}
leaf vlan-pcp {
description "VLAN priority.";
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" {
}
}
+ 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 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;
container arp-source-hardware-address {
description "ARP source hardware address.";
presence "Match field is active and set";
- uses mac-address-filter;
+ 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;
+ uses mac-address-filter;
}
}
-
- grouping action {
- choice action {
- case output-action {
- leaf-list output-node-connector {
- type string;
- }
- }
-
- case controller-action {
- leaf max-length {
- type uint16 {
- range "0..65294";
- }
- }
- }
-
- case set-queue-action {
- leaf queue {
- type string; // TODO: define queues
- }
- }
-
- case pop-mpls-action {
- container pop-mpls {
- leaf ethernet-type {
- type uint16; // TODO: define ethertype type
- }
- }
- }
-
- case set-mpls-ttl-action {
- leaf mpls-ttl {
- type uint8;
- }
- }
-
- case set-nw-ttl-action {
- leaf nw-ttl {
- type uint8;
- }
- }
-
- case push-pbb-action {
-
- }
-
- case push-mpls-action {
-
+
+ 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;
}
-
- case push-vlan-action {
-
+
+ leaf tunnel-mask {
+ type binary;
}
}
- }
-
-
- grouping match {
+
container "ethernet-match" {
uses "ethernet-match-fields";
}
+
container "vlan-match" {
uses "vlan-match-fields";
}
+
container "ip-match" {
uses "ip-match-fields";
}
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