2 * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 module openflow-augments {
10 namespace "urn:opendaylight:openflow:augments";
13 import yang-ext {prefix ext;}
14 import ietf-inet-types {prefix inet;}
15 import ietf-yang-types {prefix yang;}
17 import openflow-types {prefix oft;}
18 import openflow-protocol {prefix ofproto;}
19 import openflow-action {prefix ofaction;}
20 import openflow-instruction {prefix ofinstruction;}
21 import openflow-extensible-match {prefix oxm;}
23 revision "2013-10-02" {
24 description "OpenFlow 1.3 - augments model.
26 https://wiki.opendaylight.org/view/File:OpenFlow_Protocol_Library_-_Project_documentation.pdf
27 - Augmentation Tables chapter";
31 augment "/oxm:oxm-container/oxm:match-entries" {
32 ext:augment-identifier "port-number-match-entry";
37 augment "/oxm:oxm-container/oxm:match-entries" {
38 ext:augment-identifier "metadata-match-entry";
43 augment "/oxm:oxm-container/oxm:match-entries" {
44 ext:augment-identifier "mask-match-entry";
49 augment "/oxm:oxm-container/oxm:match-entries" {
50 ext:augment-identifier "mac-address-match-entry";
52 type yang:mac-address;
55 augment "/oxm:oxm-container/oxm:match-entries" {
56 ext:augment-identifier "eth-type-match-entry";
61 augment "/oxm:oxm-container/oxm:match-entries" {
62 ext:augment-identifier "vlan-vid-match-entry";
70 augment "/oxm:oxm-container/oxm:match-entries" {
71 ext:augment-identifier "vlan-pcp-match-entry";
76 augment "/oxm:oxm-container/oxm:match-entries" {
77 ext:augment-identifier "dscp-match-entry";
82 augment "/oxm:oxm-container/oxm:match-entries" {
83 ext:augment-identifier "ecn-match-entry";
88 augment "/oxm:oxm-container/oxm:match-entries" {
89 ext:augment-identifier "protocol-number-match-entry";
90 leaf protocol-number {
94 augment "/oxm:oxm-container/oxm:match-entries" {
95 ext:augment-identifier "port-match-entry";
97 type inet:port-number;
100 augment "/oxm:oxm-container/oxm:match-entries" {
101 ext:augment-identifier "icmpv4-type-match-entry";
106 augment "/oxm:oxm-container/oxm:match-entries" {
107 ext:augment-identifier "icmpv4-code-match-entry";
112 augment "/oxm:oxm-container/oxm:match-entries" {
113 ext:augment-identifier "op-code-match-entry";
118 augment "/oxm:oxm-container/oxm:match-entries" {
119 ext:augment-identifier "ipv6-flabel-match-entry";
121 type inet:ipv6-flow-label;
124 augment "/oxm:oxm-container/oxm:match-entries" {
125 ext:augment-identifier "icmpv6-type-match-entry";
130 augment "/oxm:oxm-container/oxm:match-entries" {
131 ext:augment-identifier "icmpv6-code-match-entry";
136 augment "/oxm:oxm-container/oxm:match-entries" {
137 ext:augment-identifier "ipv6-address-match-entry";
139 type inet:ipv6-address;
142 augment "/oxm:oxm-container/oxm:match-entries" {
143 ext:augment-identifier "ipv4-address-match-entry";
145 type inet:ipv4-address;
148 augment "/oxm:oxm-container/oxm:match-entries" {
149 ext:augment-identifier "mpls-label-match-entry";
154 augment "/oxm:oxm-container/oxm:match-entries" {
155 ext:augment-identifier "tc-match-entry";
160 augment "/oxm:oxm-container/oxm:match-entries" {
161 ext:augment-identifier "bos-match-entry";
166 augment "/oxm:oxm-container/oxm:match-entries" {
167 ext:augment-identifier "isid-match-entry";
172 augment "/oxm:oxm-container/oxm:match-entries" {
173 ext:augment-identifier "pseudo-field-match-entry";
175 type oft:ipv6-exthdr-flags;
178 augment "/oxm:oxm-container/oxm:match-entries" {
179 ext:augment-identifier "experimenter-id-match-entry";
181 type oft:experimenter-id;
184 augment "/oxm:oxm-container/oxm:match-entries" {
185 ext:augment-identifier "tcp-flag-match-entry";
190 augment "/oxm:oxm-container/oxm:match-entries" {
191 ext:augment-identifier "tunnel-ipv4-dst-match-entry";
192 leaf tunnel-ipv4-dst {
193 type inet:ipv4-address;
196 augment "/oxm:oxm-container/oxm:match-entries" {
197 ext:augment-identifier "tunnel-ipv4-src-match-entry";
198 leaf tunnel-ipv4-src {
199 type inet:ipv4-address;
203 // OFP_ACTION AUGMENTS
204 augment "/ofaction:actions-container/ofaction:action" {
205 ext:augment-identifier "port-action";
207 type oft:port-number;
210 augment "/ofaction:actions-container/ofaction:action" {
211 ext:augment-identifier "max-length-action";
216 augment "/ofaction:actions-container/ofaction:action" {
217 ext:augment-identifier "mpls-ttl-action";
222 augment "/ofaction:actions-container/ofaction:action" {
223 ext:augment-identifier "ethertype-action";
228 augment "/ofaction:actions-container/ofaction:action" {
229 ext:augment-identifier "queue-id-action";
234 augment "/ofaction:actions-container/ofaction:action" {
235 ext:augment-identifier "group-id-action";
240 augment "/ofaction:actions-container/ofaction:action" {
241 ext:augment-identifier "nw-ttl-action";
246 augment "/ofaction:actions-container/ofaction:action" {
247 ext:augment-identifier "oxm-fields-action";
248 uses oxm:oxm-fields-grouping;
250 augment "/ofaction:actions-container/ofaction:action" {
251 ext:augment-identifier "experimenter-id-action";
253 type oft:experimenter-id;
257 base ofaction:experimenter-action-sub-type;
262 augment "/ofaction:actions-container/ofaction:action" {
263 ext:augment-identifier "vlan-vid-action";
268 augment "/ofaction:actions-container/ofaction:action" {
269 ext:augment-identifier "vlan-pcp-action";
274 augment "/ofaction:actions-container/ofaction:action" {
275 ext:augment-identifier "dl-address-action";
277 type yang:mac-address;
280 augment "/ofaction:actions-container/ofaction:action" {
281 ext:augment-identifier "nw-tos-action";
286 augment "/ofaction:actions-container/ofaction:action" {
287 ext:augment-identifier "ip-address-action";
289 type inet:ipv4-address;
293 // OFP_TABLE_FEATURES_PROPERTIES AUGMENTS
294 augment "/ofproto:table-features-properties-container/ofproto:table-feature-properties" {
295 ext:augment-identifier "instruction-related-table-feature-property";
296 uses ofinstruction:instructions-grouping;
298 augment "/ofproto:table-features-properties-container/ofproto:table-feature-properties" {
299 ext:augment-identifier "next-table-related-table-feature-property";
300 list next-table-ids {
307 augment "/ofproto:table-features-properties-container/ofproto:table-feature-properties" {
308 ext:augment-identifier "action-related-table-feature-property";
309 uses ofaction:actions-grouping;
311 augment "/ofproto:table-features-properties-container/ofproto:table-feature-properties" {
312 ext:augment-identifier "oxm-related-table-feature-property";
313 uses oxm:oxm-fields-grouping;
315 augment "/ofproto:table-features-properties-container/ofproto:table-feature-properties" {
316 ext:augment-identifier "experimenter-id-table-feature-property";
318 type oft:experimenter-id;
325 // OFP_INSTRUCTION AUGMENTS
326 augment "/ofinstruction:instruction-container/ofinstruction:instruction" {
327 ext:augment-identifier "table-id-instruction";
332 augment "/ofinstruction:instruction-container/ofinstruction:instruction" {
333 ext:augment-identifier "metadata-instruction";
341 augment "/ofinstruction:instruction-container/ofinstruction:instruction" {
342 ext:augment-identifier "actions-instruction";
343 uses ofaction:actions-grouping;
345 augment "/ofinstruction:instruction-container/ofinstruction:instruction" {
346 ext:augment-identifier "meter-id-instruction";
351 augment "/ofinstruction:instruction-container/ofinstruction:instruction" {
352 ext:augment-identifier "experimenter-id-instruction";
354 type oft:experimenter-id;
358 // OFP_QUEUE_PROP AUGMENTS
359 augment "/ofproto:queue-prop-container/ofproto:queue-property" {
360 ext:augment-identifier "rate-queue-property";
365 augment "/ofproto:queue-prop-container/ofproto:queue-property" {
366 ext:augment-identifier "experimenter-id-queue-property";
368 type oft:experimenter-id;
372 // OFP_ERROR_AUGMENTS (only experimenter till OpenFlow v1.3)
373 augment "/ofproto:error-message" {
374 ext:augment-identifier "experimenter-id-error";
376 type oft:experimenter-id;
380 // OFP_MULTIPART AUGMENTS
381 augment "/ofproto:multipart-request/input/ofproto:multipart-request-body/ofproto:multipart-request-experimenter-case/ofproto:multipart-request-experimenter" {
382 ext:augment-identifier "experimenter-id-multipart-request";
384 type oft:experimenter-id;
390 augment "/ofproto:multipart-reply-message/ofproto:multipart-reply-body/ofproto:multipart-reply-experimenter-case/ofproto:multipart-reply-experimenter" {
391 ext:augment-identifier "experimenter-id-multipart-reply";
393 type oft:experimenter-id;
400 // OFP_METER_BAND AUGMENTS
401 augment "/ofproto:meter-band-container/ofproto:meter-band/ofproto:meter-band-experimenter-case/ofproto:meter-band-experimenter" {
402 ext:augment-identifier "experimenter-id-meter-band";
404 type oft:experimenter-id;