2 * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved.
\r
4 * This program and the accompanying materials are made available under the
\r
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
\r
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
\r
9 module openflow-augments {
\r
10 namespace "urn:opendaylight:openflow:augments";
\r
13 import yang-ext {prefix ext;}
\r
14 import ietf-inet-types {prefix inet;}
\r
15 import ietf-yang-types {prefix yang;}
\r
17 import openflow-types {prefix oft;}
\r
18 import openflow-protocol {prefix ofproto;}
\r
19 import openflow-action {prefix ofaction;}
\r
20 import openflow-instruction {prefix ofinstruction;}
\r
21 import openflow-extensible-match {prefix oxm;}
\r
23 revision "2013-10-02" {
\r
24 description "OpenFlow 1.3 - augments model.
\r
26 https://wiki.opendaylight.org/view/File:OpenFlow_Protocol_Library_-_Project_documentation.pdf
\r
27 - Augmentation Tables chapter";
\r
30 // OFP_MATCH AUGMENTS
\r
31 augment "/oxm:oxm-container/oxm:match-entries" {
\r
32 ext:augment-identifier "port-number-match-entry";
\r
34 type oft:port-number;
\r
37 augment "/oxm:oxm-container/oxm:match-entries" {
\r
38 ext:augment-identifier "metadata-match-entry";
\r
43 augment "/oxm:oxm-container/oxm:match-entries" {
\r
44 ext:augment-identifier "mask-match-entry";
\r
49 augment "/oxm:oxm-container/oxm:match-entries" {
\r
50 ext:augment-identifier "mac-address-match-entry";
\r
52 type yang:mac-address;
\r
55 augment "/oxm:oxm-container/oxm:match-entries" {
\r
56 ext:augment-identifier "eth-type-match-entry";
\r
58 type oft:ether-type;
\r
61 augment "/oxm:oxm-container/oxm:match-entries" {
\r
62 ext:augment-identifier "vlan-vid-match-entry";
\r
70 augment "/oxm:oxm-container/oxm:match-entries" {
\r
71 ext:augment-identifier "vlan-pcp-match-entry";
\r
76 augment "/oxm:oxm-container/oxm:match-entries" {
\r
77 ext:augment-identifier "dscp-match-entry";
\r
82 augment "/oxm:oxm-container/oxm:match-entries" {
\r
83 ext:augment-identifier "ecn-match-entry";
\r
88 augment "/oxm:oxm-container/oxm:match-entries" {
\r
89 ext:augment-identifier "protocol-number-match-entry";
\r
90 leaf protocol-number {
\r
94 augment "/oxm:oxm-container/oxm:match-entries" {
\r
95 ext:augment-identifier "port-match-entry";
\r
97 type inet:port-number;
\r
100 augment "/oxm:oxm-container/oxm:match-entries" {
\r
101 ext:augment-identifier "icmpv4-type-match-entry";
\r
106 augment "/oxm:oxm-container/oxm:match-entries" {
\r
107 ext:augment-identifier "icmpv4-code-match-entry";
\r
112 augment "/oxm:oxm-container/oxm:match-entries" {
\r
113 ext:augment-identifier "op-code-match-entry";
\r
118 augment "/oxm:oxm-container/oxm:match-entries" {
\r
119 ext:augment-identifier "ipv6-flabel-match-entry";
\r
121 type inet:ipv6-flow-label;
\r
124 augment "/oxm:oxm-container/oxm:match-entries" {
\r
125 ext:augment-identifier "icmpv6-type-match-entry";
\r
130 augment "/oxm:oxm-container/oxm:match-entries" {
\r
131 ext:augment-identifier "icmpv6-code-match-entry";
\r
136 augment "/oxm:oxm-container/oxm:match-entries" {
\r
137 ext:augment-identifier "ipv6-address-match-entry";
\r
138 leaf ipv6-address {
\r
139 type inet:ipv6-address;
\r
142 augment "/oxm:oxm-container/oxm:match-entries" {
\r
143 ext:augment-identifier "ipv4-address-match-entry";
\r
144 leaf ipv4-address {
\r
145 type inet:ipv4-address;
\r
148 augment "/oxm:oxm-container/oxm:match-entries" {
\r
149 ext:augment-identifier "mpls-label-match-entry";
\r
154 augment "/oxm:oxm-container/oxm:match-entries" {
\r
155 ext:augment-identifier "tc-match-entry";
\r
160 augment "/oxm:oxm-container/oxm:match-entries" {
\r
161 ext:augment-identifier "bos-match-entry";
\r
166 augment "/oxm:oxm-container/oxm:match-entries" {
\r
167 ext:augment-identifier "isid-match-entry";
\r
172 augment "/oxm:oxm-container/oxm:match-entries" {
\r
173 ext:augment-identifier "pseudo-field-match-entry";
\r
174 leaf pseudo-field {
\r
175 type oft:ipv6-exthdr-flags;
\r
178 augment "/oxm:oxm-container/oxm:match-entries" {
\r
179 ext:augment-identifier "experimenter-id-match-entry";
\r
180 leaf experimenter {
\r
181 type oft:experimenter-id;
\r
184 augment "/oxm:oxm-container/oxm:match-entries" {
\r
185 ext:augment-identifier "tcp-flag-match-entry";
\r
190 augment "/oxm:oxm-container/oxm:match-entries" {
\r
191 ext:augment-identifier "tunnel-ipv4-dst-match-entry";
\r
192 leaf tunnel-ipv4-dst {
\r
193 type inet:ipv4-address;
\r
196 augment "/oxm:oxm-container/oxm:match-entries" {
\r
197 ext:augment-identifier "tunnel-ipv4-src-match-entry";
\r
198 leaf tunnel-ipv4-src {
\r
199 type inet:ipv4-address;
\r
203 // OFP_ACTION AUGMENTS
\r
204 augment "/ofaction:actions-container/ofaction:action" {
\r
205 ext:augment-identifier "port-action";
\r
207 type oft:port-number;
\r
210 augment "/ofaction:actions-container/ofaction:action" {
\r
211 ext:augment-identifier "max-length-action";
\r
216 augment "/ofaction:actions-container/ofaction:action" {
\r
217 ext:augment-identifier "mpls-ttl-action";
\r
222 augment "/ofaction:actions-container/ofaction:action" {
\r
223 ext:augment-identifier "ethertype-action";
\r
225 type oft:ether-type;
\r
228 augment "/ofaction:actions-container/ofaction:action" {
\r
229 ext:augment-identifier "queue-id-action";
\r
234 augment "/ofaction:actions-container/ofaction:action" {
\r
235 ext:augment-identifier "group-id-action";
\r
240 augment "/ofaction:actions-container/ofaction:action" {
\r
241 ext:augment-identifier "nw-ttl-action";
\r
246 augment "/ofaction:actions-container/ofaction:action" {
\r
247 ext:augment-identifier "oxm-fields-action";
\r
248 uses oxm:oxm-fields-grouping;
\r
250 augment "/ofaction:actions-container/ofaction:action" {
\r
251 ext:augment-identifier "experimenter-id-action";
\r
252 leaf experimenter {
\r
253 type oft:experimenter-id;
\r
256 // OF1.0 structures
\r
257 augment "/ofaction:actions-container/ofaction:action" {
\r
258 ext:augment-identifier "vlan-vid-action";
\r
263 augment "/ofaction:actions-container/ofaction:action" {
\r
264 ext:augment-identifier "vlan-pcp-action";
\r
269 augment "/ofaction:actions-container/ofaction:action" {
\r
270 ext:augment-identifier "dl-address-action";
\r
272 type yang:mac-address;
\r
275 augment "/ofaction:actions-container/ofaction:action" {
\r
276 ext:augment-identifier "nw-tos-action";
\r
281 augment "/ofaction:actions-container/ofaction:action" {
\r
282 ext:augment-identifier "ip-address-action";
\r
284 type inet:ipv4-address;
\r
288 // OFP_TABLE_FEATURES_PROPERTIES AUGMENTS
\r
289 augment "/ofproto:table-features-properties-container/ofproto:table-feature-properties" {
\r
290 ext:augment-identifier "instruction-related-table-feature-property";
\r
291 uses ofinstruction:instructions-grouping;
\r
293 augment "/ofproto:table-features-properties-container/ofproto:table-feature-properties" {
\r
294 ext:augment-identifier "next-table-related-table-feature-property";
\r
295 list next-table-ids {
\r
302 augment "/ofproto:table-features-properties-container/ofproto:table-feature-properties" {
\r
303 ext:augment-identifier "action-related-table-feature-property";
\r
304 uses ofaction:actions-grouping;
\r
306 augment "/ofproto:table-features-properties-container/ofproto:table-feature-properties" {
\r
307 ext:augment-identifier "oxm-related-table-feature-property";
\r
308 uses oxm:oxm-fields-grouping;
\r
310 augment "/ofproto:table-features-properties-container/ofproto:table-feature-properties" {
\r
311 ext:augment-identifier "experimenter-id-table-feature-property";
\r
312 leaf experimenter {
\r
313 type oft:experimenter-id;
\r
320 // OFP_INSTRUCTION AUGMENTS
\r
321 augment "/ofinstruction:instruction-container/ofinstruction:instruction" {
\r
322 ext:augment-identifier "table-id-instruction";
\r
327 augment "/ofinstruction:instruction-container/ofinstruction:instruction" {
\r
328 ext:augment-identifier "metadata-instruction";
\r
332 leaf metadata-mask {
\r
336 augment "/ofinstruction:instruction-container/ofinstruction:instruction" {
\r
337 ext:augment-identifier "actions-instruction";
\r
338 uses ofaction:actions-grouping;
\r
340 augment "/ofinstruction:instruction-container/ofinstruction:instruction" {
\r
341 ext:augment-identifier "meter-id-instruction";
\r
346 augment "/ofinstruction:instruction-container/ofinstruction:instruction" {
\r
347 ext:augment-identifier "experimenter-id-instruction";
\r
348 leaf experimenter {
\r
349 type oft:experimenter-id;
\r
353 // OFP_QUEUE_PROP AUGMENTS
\r
354 augment "/ofproto:queue-prop-container/ofproto:queue-property" {
\r
355 ext:augment-identifier "rate-queue-property";
\r
360 augment "/ofproto:queue-prop-container/ofproto:queue-property" {
\r
361 ext:augment-identifier "experimenter-id-queue-property";
\r
362 leaf experimenter {
\r
363 type oft:experimenter-id;
\r
367 // OFP_ERROR_AUGMENTS (only experimenter till OpenFlow v1.3)
\r
368 augment "/ofproto:error-message" {
\r
369 ext:augment-identifier "experimenter-id-error";
\r
370 leaf experimenter {
\r
371 type oft:experimenter-id;
\r
375 // OFP_MULTIPART AUGMENTS
\r
376 augment "/ofproto:multipart-request/input/ofproto:multipart-request-body/ofproto:multipart-request-experimenter-case/ofproto:multipart-request-experimenter" {
\r
377 ext:augment-identifier "experimenter-id-multipart-request";
\r
378 leaf experimenter {
\r
379 type oft:experimenter-id;
\r
385 augment "/ofproto:multipart-reply-message/ofproto:multipart-reply-body/ofproto:multipart-reply-experimenter-case/ofproto:multipart-reply-experimenter" {
\r
386 ext:augment-identifier "experimenter-id-multipart-reply";
\r
387 leaf experimenter {
\r
388 type oft:experimenter-id;
\r
395 // OFP_METER_BAND AUGMENTS
\r
396 augment "/ofproto:meter-band-container/ofproto:meter-band/ofproto:meter-band-experimenter-case/ofproto:meter-band-experimenter" {
\r
397 ext:augment-identifier "experimenter-id-meter-band";
\r
398 leaf experimenter {
\r
399 type oft:experimenter-id;
\r