X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fmodel%2Fmodel-flow-base%2Fsrc%2Fmain%2Fyang%2Fmatch-types.yang;fp=opendaylight%2Fmd-sal%2Fmodel%2Fmodel-flow-base%2Fsrc%2Fmain%2Fyang%2Fmatch-types.yang;h=757686c662ab747baced122af0d5218a170f061a;hp=0000000000000000000000000000000000000000;hb=fe024ad74b8656c3ee61b9ddff6009a779aa2189;hpb=437c1bdb967072319e81774bdcf570b2fb0f7b89 diff --git a/opendaylight/md-sal/model/model-flow-base/src/main/yang/match-types.yang b/opendaylight/md-sal/model/model-flow-base/src/main/yang/match-types.yang new file mode 100644 index 0000000000..757686c662 --- /dev/null +++ b/opendaylight/md-sal/model/model-flow-base/src/main/yang/match-types.yang @@ -0,0 +1,267 @@ +module opendaylight-match-types { + 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;} + + revision "2013-08-19" { + description "Initial revision of flow service"; + } + + grouping "mac-address-filter" { + leaf address { + mandatory true; + type yang:mac-address; + } + leaf 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 { + mandatory true; + type l2t:vlan-id; + } + leaf mask { + type binary; + } + } + 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; + } + } + + 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; + } + } + + 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 "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 "arp-match-fields" { + 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 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 { + + } + + case push-vlan-action { + + } + } + } + + + grouping match { + 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"; + } + } +} \ No newline at end of file