1 module openflowplugin-extension-nicira-action {
4 namespace "urn:opendaylight:openflowplugin:extension:nicira:action";
5 prefix "openflowplugin-nicira-action";
7 import yang-ext {prefix ext; revision-date "2013-07-09";}
8 import flow-node-inventory {prefix fni; revision-date 2013-08-19; }
9 import opendaylight-inventory {prefix inv;revision-date "2013-08-19";}
10 import sal-flow {prefix sal-flow;revision-date "2013-08-19";}
11 import sal-group {prefix sal-group;revision-date "2013-09-18";}
12 import packet-processing {prefix sal-packet;revision-date "2013-07-09";}
13 import opendaylight-flow-statistics {prefix odl-flow-stats;revision-date "2013-08-19";}
14 import opendaylight-group-statistics {prefix odl-group-stats;revision-date "2013-11-11";}
15 import nicira-match {prefix nicira-match;revision-date "2014-04-21";}
16 import openflowplugin-extension-general {prefix ext-gen;revision-date "2014-07-14";}
17 import openflow-action {prefix ofaction;revision-date "2013-07-31";}
20 "Nicira openflow action extensions.";
22 revision "2014-07-14" {
23 description "Initial revision";
26 identity nx-action-reg-load-key {
27 base ext-gen:extension-key;
29 identity nx-action-reg-move-key {
30 base ext-gen:extension-key;
33 grouping nxm-nx-reg-grouping {
36 base nicira-match:nxm-nx-reg;
40 grouping nxm-nx-tun-id-grouping {
45 grouping nxm-nx-arp-sha-grouping {
50 grouping nxm-nx-arp-tha-grouping {
55 grouping nxm-of-arp-op-grouping {
60 grouping nxm-of-arp-spa-grouping {
65 grouping nxm-of-arp-tpa-grouping {
70 grouping nxm-nx-tun-ipv4-dst-grouping {
71 leaf nx-tun-ipv4-dst {
75 grouping nxm-nx-tun-ipv4-src-grouping {
76 leaf nx-tun-ipv4-src {
80 grouping nxm-of-eth-src-grouping {
85 grouping nxm-of-eth-dst-grouping {
90 grouping nxm-of-eth-type-grouping {
96 grouping dst-choice-grouping {
98 case dst-nx-reg-case {
99 uses nxm-nx-reg-grouping;
101 case dst-nx-tun-id-case {
102 uses nxm-nx-tun-id-grouping;
104 case dst-nx-arp-sha-case {
105 uses nxm-nx-arp-sha-grouping;
107 case dst-nx-arp-tha-case {
108 uses nxm-nx-arp-tha-grouping;
110 case dst-of-arp-op-case {
111 uses nxm-of-arp-op-grouping;
113 case dst-of-arp-spa-case {
114 uses nxm-of-arp-spa-grouping;
116 case dst-of-arp-tpa-case {
117 uses nxm-of-arp-tpa-grouping;
119 case dst-nx-tun-ipv4-dst-case {
120 uses nxm-nx-tun-ipv4-dst-grouping;
122 case dst-nx-tun-ipv4-src-case {
123 uses nxm-nx-tun-ipv4-src-grouping;
125 case dst-of-eth-src-case {
126 uses nxm-of-eth-src-grouping;
128 case dst-of-eth-dst-case {
129 uses nxm-of-eth-dst-grouping;
134 grouping src-choice-grouping {
136 case src-nx-reg-case {
137 uses nxm-nx-reg-grouping;
139 case src-nx-tun-id-case {
140 uses nxm-nx-tun-id-grouping;
142 case src-nx-arp-sha-case {
143 uses nxm-nx-arp-sha-grouping;
145 case src-nx-arp-tha-case {
146 uses nxm-nx-arp-tha-grouping;
148 case src-of-arp-op-case {
149 uses nxm-of-arp-op-grouping;
151 case src-of-arp-spa-case {
152 uses nxm-of-arp-spa-grouping;
154 case src-of-arp-tpa-case {
155 uses nxm-of-arp-tpa-grouping;
157 case src-nx-tun-ipv4-dst-case {
158 uses nxm-nx-tun-ipv4-dst-grouping;
160 case src-nx-tun-ipv4-src-case {
161 uses nxm-nx-tun-ipv4-src-grouping;
163 case src-of-eth-src-case {
164 uses nxm-of-eth-src-grouping;
166 case src-of-eth-dst-case {
167 uses nxm-of-eth-dst-grouping;
169 case src-of-eth-type-case {
170 uses nxm-of-eth-type-grouping;
175 grouping range-grouping {
177 description "Include value.";
181 description "Include value.";
186 grouping nx-action-reg-load-grouping {
187 container nx-reg-load {
189 description "Writes value to bits start through end, inclusive, in field dst.";
190 uses dst-choice-grouping;
199 grouping nx-action-reg-move-grouping {
200 container nx-reg-move {
202 description "Writes value to bits start through end, inclusive, in field src.";
203 uses src-choice-grouping;
207 description "Writes value to bits start through end, inclusive, in field dst.";
208 uses dst-choice-grouping;
213 grouping nx-action-output-reg-grouping {
214 container nx-output-reg {
216 description "Choose the register with the OpenFlow output port, using the number of
217 bits specified from the register.";
218 uses src-choice-grouping;
224 description "The number of bytes to send when the chosen port is OFPP_CONTROLLER";
229 // ACTION augmentations
231 augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
232 case nx-action-reg-load-rpc-add-flow-write-actions-case {
233 uses nx-action-reg-load-grouping;
236 augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
237 case nx-action-reg-move-rpc-add-flow-write-actions-case {
238 uses nx-action-reg-move-grouping;
241 augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
242 case nx-action-output-reg-rpc-add-flow-write-actions-case {
243 uses nx-action-output-reg-grouping;
246 augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
247 case nx-action-reg-load-rpc-add-flow-apply-actions-case {
248 uses nx-action-reg-load-grouping;
251 augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
252 case nx-action-reg-move-rpc-add-flow-apply-actions-case {
253 uses nx-action-reg-move-grouping;
256 augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
257 case nx-action-output-reg-rpc-add-flow-apply-actions-case {
258 uses nx-action-output-reg-grouping;
262 augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
263 case "nx-action-reg-load-rpc-remove-flow-write-actions-case" {
264 uses nx-action-reg-load-grouping;
267 augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
268 case "nx-action-reg-move-rpc-remove-flow-write-actions-case" {
269 uses nx-action-reg-move-grouping;
272 augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
273 case "nx-action-output-reg-rpc-remove-flow-write-actions-case" {
274 uses nx-action-output-reg-grouping;
277 augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
278 case "nx-action-reg-load-rpc-remove-flow-apply-actions-case" {
279 uses nx-action-reg-load-grouping;
282 augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
283 case "nx-action-reg-move-rpc-remove-flow-apply-actions-case" {
284 uses nx-action-reg-move-grouping;
287 augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
288 case "nx-action-output-reg-rpc-remove-flow-apply-actions-case" {
289 uses nx-action-output-reg-grouping;
293 augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
294 case "nx-action-reg-load-rpc-update-flow-original-write-actions-case" {
295 uses nx-action-reg-load-grouping;
298 augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
299 case "nx-action-reg-move-rpc-update-flow-original-write-actions-case" {
300 uses nx-action-reg-move-grouping;
303 augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
304 case "nx-action-output-reg-rpc-update-flow-original-write-actions-case" {
305 uses nx-action-output-reg-grouping;
308 augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
309 case "nx-action-reg-load-rpc-update-flow-original-apply-actions-case" {
310 uses nx-action-reg-load-grouping;
313 augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
314 case "nx-action-reg-move-rpc-update-flow-original-apply-actions-case" {
315 uses nx-action-reg-move-grouping;
318 augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
319 case "nx-action-output-reg-rpc-update-flow-original-apply-actions-case" {
320 uses nx-action-output-reg-grouping;
323 augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
324 case "nx-action-reg-load-rpc-update-flow-updated-write-actions-case" {
325 uses nx-action-reg-load-grouping;
328 augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
329 case "nx-action-reg-move-rpc-update-flow-updated-write-actions-case" {
330 uses nx-action-reg-move-grouping;
333 augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
334 case "nx-action-output-reg-rpc-update-flow-updated-write-actions-case" {
335 uses nx-action-output-reg-grouping;
338 augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
339 case "nx-action-reg-load-rpc-update-flow-updated-apply-actions-case" {
340 uses nx-action-reg-load-grouping;
343 augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
344 case "nx-action-reg-move-rpc-update-flow-updated-apply-actions-case" {
345 uses nx-action-reg-move-grouping;
348 augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
349 case "nx-action-output-reg-rpc-update-flow-updated-apply-actions-case" {
350 uses nx-action-output-reg-grouping;
354 augment "/sal-group:add-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
355 case "nx-action-reg-load-rpc-add-group-case" {
356 uses nx-action-reg-load-grouping;
359 augment "/sal-group:add-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
360 case "nx-action-reg-move-rpc-add-group-case" {
361 uses nx-action-reg-move-grouping;
364 augment "/sal-group:add-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
365 case "nx-action-output-reg-rpc-add-group-case" {
366 uses nx-action-output-reg-grouping;
370 augment "/sal-group:remove-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
371 case "nx-action-reg-load-rpc-remove-group-case" {
372 uses nx-action-reg-load-grouping;
375 augment "/sal-group:remove-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
376 case "nx-action-reg-move-rpc-remove-group-case" {
377 uses nx-action-reg-move-grouping;
380 augment "/sal-group:remove-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
381 case "nx-action-output-reg-rpc-remove-group-case" {
382 uses nx-action-output-reg-grouping;
386 augment "/sal-group:update-group/sal-group:input/sal-group:original-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
387 case "nx-action-reg-load-rpc-update-group-original-case" {
388 uses nx-action-reg-load-grouping;
391 augment "/sal-group:update-group/sal-group:input/sal-group:original-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
392 case "nx-action-reg-move-rpc-update-group-original-case" {
393 uses nx-action-reg-move-grouping;
396 augment "/sal-group:update-group/sal-group:input/sal-group:original-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
397 case "nx-action-output-reg-rpc-update-group-original-case" {
398 uses nx-action-output-reg-grouping;
401 augment "/sal-group:update-group/sal-group:input/sal-group:updated-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
402 case "nx-action-reg-load-rpc-update-group-updated-case" {
403 uses nx-action-reg-load-grouping;
406 augment "/sal-group:update-group/sal-group:input/sal-group:updated-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
407 case "nx-action-reg-move-rpc-update-group-updated-case" {
408 uses nx-action-reg-move-grouping;
411 augment "/sal-group:update-group/sal-group:input/sal-group:updated-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
412 case "nx-action-output-reg-rpc-update-group-updated-case" {
413 uses nx-action-output-reg-grouping;
417 augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
418 case "nx-action-reg-load-rpc-transmit-packet-case" {
419 uses nx-action-reg-load-grouping;
422 augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
423 case "nx-action-reg-move-rpc-transmit-packet-case" {
424 uses nx-action-reg-move-grouping;
427 augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
428 case "nx-action-output-reg-rpc-transmit-packet-case" {
429 uses nx-action-output-reg-grouping;
434 augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:write-actions-case/fni:write-actions/fni:action/fni:action" {
435 case "nx-action-reg-load-nodes-node-table-flow-write-actions-case" {
436 uses nx-action-reg-load-grouping;
439 augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:write-actions-case/fni:write-actions/fni:action/fni:action" {
440 case "nx-action-reg-move-nodes-node-table-flow-write-actions-case" {
441 uses nx-action-reg-move-grouping;
444 augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:write-actions-case/fni:write-actions/fni:action/fni:action" {
445 case "nx-action-output-reg-nodes-node-table-flow-write-actions-case" {
446 uses nx-action-output-reg-grouping;
449 augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:apply-actions-case/fni:apply-actions/fni:action/fni:action" {
450 case "nx-action-reg-load-nodes-node-table-flow-apply-actions-case" {
451 uses nx-action-reg-load-grouping;
454 augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:apply-actions-case/fni:apply-actions/fni:action/fni:action" {
455 case "nx-action-reg-move-nodes-node-table-flow-apply-actions-case" {
456 uses nx-action-reg-move-grouping;
459 augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:apply-actions-case/fni:apply-actions/fni:action/fni:action" {
460 case "nx-action-output-reg-nodes-node-table-flow-apply-actions-case" {
461 uses nx-action-output-reg-grouping;
465 augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
466 case "nx-action-reg-load-nodes-node-group-buckets-bucket-actions-case" {
467 uses nx-action-reg-load-grouping;
470 augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
471 case "nx-action-reg-move-nodes-node-group-buckets-bucket-actions-case" {
472 uses nx-action-reg-move-grouping;
475 augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
476 case "nx-action-output-reg-nodes-node-group-buckets-bucket-actions-case" {
477 uses nx-action-output-reg-grouping;
482 augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:write-actions-case/odl-flow-stats:write-actions/odl-flow-stats:action/odl-flow-stats:action" {
483 case "nx-action-reg-load-notif-flows-statistics-update-write-actions-case" {
484 uses nx-action-reg-load-grouping;
487 augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:write-actions-case/odl-flow-stats:write-actions/odl-flow-stats:action/odl-flow-stats:action" {
488 case "nx-action-reg-move-notif-flows-statistics-update-write-actions-case" {
489 uses nx-action-reg-move-grouping;
492 augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:write-actions-case/odl-flow-stats:write-actions/odl-flow-stats:action/odl-flow-stats:action" {
493 case "nx-action-output-reg-notif-flows-statistics-update-write-actions-case" {
494 uses nx-action-output-reg-grouping;
497 augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:apply-actions-case/odl-flow-stats:apply-actions/odl-flow-stats:action/odl-flow-stats:action" {
498 case "nx-action-reg-load-notif-flows-statistics-update-apply-actions-case" {
499 uses nx-action-reg-load-grouping;
502 augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:apply-actions-case/odl-flow-stats:apply-actions/odl-flow-stats:action/odl-flow-stats:action" {
503 case "nx-action-reg-move-notif-flows-statistics-update-apply-actions-case" {
504 uses nx-action-reg-move-grouping;
507 augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:apply-actions-case/odl-flow-stats:apply-actions/odl-flow-stats:action/odl-flow-stats:action" {
508 case "nx-action-output-reg-notif-flows-statistics-update-apply-actions-case" {
509 uses nx-action-output-reg-grouping;
513 augment "/odl-group-stats:group-desc-stats-updated/odl-group-stats:group-desc-stats/odl-group-stats:buckets/odl-group-stats:bucket/odl-group-stats:action/odl-group-stats:action" {
514 case "nx-action-reg-load-notif-group-desc-stats-updated-case" {
515 uses nx-action-reg-load-grouping;
518 augment "/odl-group-stats:group-desc-stats-updated/odl-group-stats:group-desc-stats/odl-group-stats:buckets/odl-group-stats:bucket/odl-group-stats:action/odl-group-stats:action" {
519 case "nx-action-reg-move-notif-group-desc-stats-updated-case" {
520 uses nx-action-reg-move-grouping;
523 augment "/odl-group-stats:group-desc-stats-updated/odl-group-stats:group-desc-stats/odl-group-stats:buckets/odl-group-stats:bucket/odl-group-stats:action/odl-group-stats:action" {
524 case "nx-action-output-reg-notif-group-desc-stats-updated-case" {
525 uses nx-action-output-reg-grouping;