1 module opendaylight-table-types {
2 namespace "urn:opendaylight:table:types";
5 import opendaylight-flow-types {prefix flow;revision-date "2013-10-26";}
6 import opendaylight-action-types {prefix action;}
7 import opendaylight-multipart-types { prefix multipart; revision-date "2017-01-12"; }
9 revision "2013-10-26" {
10 description "Initial revision of table service";
18 type instance-identifier;
21 typedef table-config {
28 identity match-field {
29 description "Base identity for match Fields";
34 description "Match for Switch input port.";
36 identity in_phy_port {
38 description "Match for Switch physical input port.";
42 description "Match for Metadata passed between tables.";
46 description "Match for Ethernet destination address.";
50 description "Match for Ethernet source address.";
54 description "Match for Ethernet frame type.";
58 description "Match for VLAN id.";
62 description "Match for VLAN priority.";
66 description "Match for IP DSCP (6 bits in ToS field).";
70 description "Match for IP ECN (2 bits in ToS field).";
74 description "Match for IP protocol.";
78 description "Match for IPv4 source address.";
82 description "Match for IPv4 destination address.";
86 description "Match for TCP source port.";
90 description "Match for TCP destination port.";
94 description "Match for UDP source port.";
98 description "Match for UDP destination port.";
102 description "Match for SCTP source port.";
106 description "Match for SCTP destination port.";
108 identity icmpv4_type {
110 description "Match for ICMP type.";
112 identity icmpv4_code {
114 description "Match for ICMP code.";
118 description "Match for ARP opcode.";
122 description "Match for ARP source IPv4 address.";
126 description "Match for ARP target IPv4 address.";
130 description "Match for ARP source hardware address.";
134 description "Match for ARP target hardware address.";
138 description "Match for IPv6 source address.";
142 description "Match for IPv6 destination address.";
144 identity ipv6_flabel {
146 description "Match for IPv6 Flow Label";
148 identity icmpv6_type {
150 description "Match for ICMPv6 type.";
152 identity icmpv6_code {
154 description "Match for ICMPv6 code.";
156 identity ipv6_nd_target {
158 description "Match for Target address for ND.";
160 identity ipv6_nd_sll {
162 description "Match for Source link-layer for ND.";
164 identity ipv6_nd_tll {
166 description "Match for Target link-layer for ND.";
168 identity mpls_label {
170 description "Match for MPLS label.";
174 description "Match for MPLS TC.";
178 description "Match for MPLS BoS bit.";
182 description "Match for PBB I-SID.";
186 description "Match for Logical Port Metadata";
188 identity ipv6_exthdr {
190 description "Match for IPv6 Extension Header pseudo-field";
194 description "TCP Flags Match";
196 identity tunnel_ipv4_dst {
198 description "IPv4 destination tunnel endpoint address.";
200 identity tunnel_ipv4_src {
202 description "IPv4 source tunnel endpoint address.";
205 grouping set-field-match {
206 list set-field-match {
219 grouping table-feature-prop-type {
220 choice table-feature-prop-type {
222 container instructions {
223 uses flow:instruction-list;
227 case instructions-miss {
228 container instructions-miss {
229 uses flow:instruction-list;
235 leaf-list table-ids {
242 case next-table-miss {
243 container tables-miss {
244 leaf-list table-ids {
252 container write-actions {
253 uses action:action-list;
257 case write-actions-miss {
258 container write-actions-miss {
259 uses action:action-list;
264 container apply-actions {
265 uses action:action-list;
269 case apply-actions-miss {
270 container apply-actions-miss {
271 uses action:action-list;
276 container match-setfield {
277 uses set-field-match;
282 container wildcard-setfield {
283 uses set-field-match;
287 case write-setfield {
288 container write-setfield {
289 uses set-field-match;
293 case write-setfield-miss {
294 container write-setfield-miss {
295 uses set-field-match;
299 case apply-setfield {
300 container apply-setfield {
301 uses set-field-match;
305 case apply-setfield-miss {
306 container apply-setfield-miss {
307 uses set-field-match;
313 grouping table-features {
314 list table-features {
322 description "Name of the table";
326 leaf metadata-match {
327 description "Bits of metadata table can match";
331 leaf metadata-write {
332 description "Bits of metadata table can write";
337 description "Max number of entries supported";
342 description "Bitmap of OFPTC_ values";
346 container table-properties {
347 list table-feature-properties {
350 uses table-feature-prop-type;
356 augment "/multipart:multipart-reply/multipart:multipart-reply-body" {
357 case multipart-reply-table-features {
362 augment "/multipart:multipart-request/multipart:multipart-request-body" {
363 case multipart-request-table-features {