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 {
241 case next-table-miss {
242 container tables-miss {
243 leaf-list table-ids {
250 container write-actions {
251 uses action:action-list;
255 case write-actions-miss {
256 container write-actions-miss {
257 uses action:action-list;
262 container apply-actions {
263 uses action:action-list;
267 case apply-actions-miss {
268 container apply-actions-miss {
269 uses action:action-list;
274 container match-setfield {
275 uses set-field-match;
280 container wildcard-setfield {
281 uses set-field-match;
285 case write-setfield {
286 container write-setfield {
287 uses set-field-match;
291 case write-setfield-miss {
292 container write-setfield-miss {
293 uses set-field-match;
297 case apply-setfield {
298 container apply-setfield {
299 uses set-field-match;
303 case apply-setfield-miss {
304 container apply-setfield-miss {
305 uses set-field-match;
311 grouping table-features {
312 list table-features {
320 description "Name of the table";
324 leaf metadata-match {
325 description "Bits of metadata table can match";
329 leaf metadata-write {
330 description "Bits of metadata table can write";
335 description "Max number of entries supported";
340 description "Bitmap of OFPTC_ values";
344 container table-properties {
345 list table-feature-properties {
348 uses table-feature-prop-type;
354 augment "/multipart:multipart-reply/multipart:multipart-reply-body" {
355 case multipart-reply-table-features {
360 augment "/multipart:multipart-request/multipart:multipart-request-body" {
361 case multipart-request-table-features {