910dfa5fe0fd97eb049983fcc9b3a7f0fa5ec451
[openflowjava.git] / openflow-protocol-api / src / main / yang / openflow-augments.yang
1 /*\r
2  * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved.\r
3  *\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
7  */\r
8  \r
9  module openflow-augments {\r
10     namespace "urn:opendaylight:openflow:augments";\r
11     prefix "aug";\r
12     \r
13     import yang-ext {prefix ext;}\r
14     import ietf-inet-types {prefix inet;}\r
15     import ietf-yang-types {prefix yang;}\r
16 \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
22 \r
23     revision "2013-10-02" {\r
24         description "OpenFlow 1.3 - augments model. \r
25                     Please visit \r
26                     https://wiki.opendaylight.org/view/File:OpenFlow_Protocol_Library_-_Project_documentation.pdf\r
27                      - Augmentation Tables chapter";\r
28     }\r
29 \r
30 // OFP_MATCH AUGMENTS\r
31      augment "/oxm:oxm-container/oxm:match-entries" {\r
32          ext:augment-identifier "port-number-match-entry";\r
33          leaf port-number {\r
34              type oft:port-number;\r
35          }\r
36      }\r
37      augment "/oxm:oxm-container/oxm:match-entries" {\r
38          ext:augment-identifier "metadata-match-entry";\r
39          leaf metadata {\r
40              type binary;\r
41          }\r
42      }\r
43      augment "/oxm:oxm-container/oxm:match-entries" {\r
44          ext:augment-identifier "mask-match-entry";\r
45          leaf mask {\r
46              type binary;\r
47          }\r
48      }\r
49      augment "/oxm:oxm-container/oxm:match-entries" {\r
50          ext:augment-identifier "mac-address-match-entry";\r
51          leaf mac-address {\r
52              type yang:mac-address;\r
53          }\r
54      }\r
55      augment "/oxm:oxm-container/oxm:match-entries" {\r
56          ext:augment-identifier "eth-type-match-entry";\r
57          leaf eth-type {\r
58              type oft:ether-type;\r
59          }\r
60      }\r
61      augment "/oxm:oxm-container/oxm:match-entries" {\r
62          ext:augment-identifier "vlan-vid-match-entry";\r
63          leaf vlan-vid {\r
64              type uint16;\r
65          }\r
66          leaf cfi-bit {\r
67              type boolean;\r
68          }\r
69      }\r
70      augment "/oxm:oxm-container/oxm:match-entries" {\r
71          ext:augment-identifier "vlan-pcp-match-entry";\r
72          leaf vlan-pcp {\r
73              type uint8;\r
74          }\r
75      }\r
76      augment "/oxm:oxm-container/oxm:match-entries" {\r
77          ext:augment-identifier "dscp-match-entry";\r
78          leaf dscp {\r
79              type inet:dscp;\r
80          }\r
81      }\r
82      augment "/oxm:oxm-container/oxm:match-entries" {\r
83          ext:augment-identifier "ecn-match-entry";\r
84          leaf ecn {\r
85              type uint8;\r
86          }\r
87      }\r
88      augment "/oxm:oxm-container/oxm:match-entries" {\r
89          ext:augment-identifier "protocol-number-match-entry";\r
90          leaf protocol-number {\r
91              type uint8;\r
92          }\r
93      }\r
94      augment "/oxm:oxm-container/oxm:match-entries" {\r
95          ext:augment-identifier "port-match-entry";\r
96          leaf port {\r
97              type inet:port-number;\r
98          }\r
99      }\r
100      augment "/oxm:oxm-container/oxm:match-entries" {\r
101          ext:augment-identifier "icmpv4-type-match-entry";\r
102          leaf icmpv4-type {\r
103              type uint8;\r
104          }\r
105      }\r
106      augment "/oxm:oxm-container/oxm:match-entries" {\r
107          ext:augment-identifier "icmpv4-code-match-entry";\r
108          leaf icmpv4-code {\r
109              type uint8;\r
110          }\r
111      }\r
112      augment "/oxm:oxm-container/oxm:match-entries" {\r
113          ext:augment-identifier "op-code-match-entry";\r
114          leaf op-code {\r
115              type uint16;\r
116          }\r
117      }\r
118      augment "/oxm:oxm-container/oxm:match-entries" {\r
119          ext:augment-identifier "ipv6-flabel-match-entry";\r
120          leaf ipv6-flabel {\r
121              type inet:ipv6-flow-label;\r
122          }\r
123      }\r
124      augment "/oxm:oxm-container/oxm:match-entries" {\r
125          ext:augment-identifier "icmpv6-type-match-entry";\r
126          leaf icmpv6-type {\r
127              type uint8;\r
128          }\r
129      }\r
130      augment "/oxm:oxm-container/oxm:match-entries" {\r
131          ext:augment-identifier "icmpv6-code-match-entry";\r
132          leaf icmpv6-code {\r
133              type uint8;\r
134          }\r
135      }\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
140          }\r
141      }\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
146          }\r
147      }\r
148      augment "/oxm:oxm-container/oxm:match-entries" {\r
149          ext:augment-identifier "mpls-label-match-entry";\r
150          leaf mpls-label {\r
151              type uint32;\r
152          }\r
153      }\r
154      augment "/oxm:oxm-container/oxm:match-entries" {\r
155          ext:augment-identifier "tc-match-entry";\r
156          leaf tc {\r
157              type uint8;\r
158          }\r
159      }\r
160      augment "/oxm:oxm-container/oxm:match-entries" {\r
161          ext:augment-identifier "bos-match-entry";\r
162          leaf bos {\r
163              type boolean;\r
164          }\r
165      }\r
166      augment "/oxm:oxm-container/oxm:match-entries" {\r
167          ext:augment-identifier "isid-match-entry";\r
168          leaf isid {\r
169              type uint32;\r
170          }\r
171      }\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
176          }\r
177      }\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
182          }\r
183      }\r
184      augment "/oxm:oxm-container/oxm:match-entries" {\r
185          ext:augment-identifier "tcp-flag-match-entry";\r
186          leaf tcp-flag {\r
187              type uint16;\r
188          }\r
189      }\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
194          }\r
195      }\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
200          }\r
201      }\r
202 \r
203 // OFP_ACTION AUGMENTS\r
204      augment "/ofaction:actions-container/ofaction:action" {\r
205          ext:augment-identifier "port-action";\r
206          leaf port {\r
207              type oft:port-number;\r
208          }\r
209      }\r
210      augment "/ofaction:actions-container/ofaction:action" {\r
211          ext:augment-identifier "max-length-action";\r
212          leaf max-length {\r
213              type uint16;\r
214          }\r
215      }\r
216      augment "/ofaction:actions-container/ofaction:action" {\r
217          ext:augment-identifier "mpls-ttl-action";\r
218          leaf mpls-ttl {\r
219              type uint8;\r
220          }\r
221      }\r
222      augment "/ofaction:actions-container/ofaction:action" {\r
223          ext:augment-identifier "ethertype-action";\r
224          leaf ethertype {\r
225              type oft:ether-type;\r
226          }\r
227      }\r
228      augment "/ofaction:actions-container/ofaction:action" {\r
229          ext:augment-identifier "queue-id-action";\r
230          leaf queue-id {\r
231              type uint32;\r
232          }\r
233      }\r
234      augment "/ofaction:actions-container/ofaction:action" {\r
235          ext:augment-identifier "group-id-action";\r
236          leaf group-id {\r
237              type uint32;\r
238          }\r
239      }\r
240      augment "/ofaction:actions-container/ofaction:action" {\r
241          ext:augment-identifier "nw-ttl-action";\r
242          leaf nw-ttl {\r
243              type uint8;\r
244          }\r
245      }\r
246      augment "/ofaction:actions-container/ofaction:action" {\r
247          ext:augment-identifier "oxm-fields-action";\r
248          uses oxm:oxm-fields-grouping;\r
249      }\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
254          }\r
255      }\r
256      // OF1.0 structures\r
257      augment "/ofaction:actions-container/ofaction:action" {\r
258          ext:augment-identifier "vlan-vid-action";\r
259          leaf vlan-vid {\r
260              type uint16;\r
261          }\r
262      }\r
263      augment "/ofaction:actions-container/ofaction:action" {\r
264          ext:augment-identifier "vlan-pcp-action";\r
265          leaf vlan-pcp {\r
266              type uint8;\r
267          }\r
268      }\r
269      augment "/ofaction:actions-container/ofaction:action" {\r
270          ext:augment-identifier "dl-address-action";\r
271          leaf dl-address {\r
272              type yang:mac-address;\r
273          }\r
274      }\r
275      augment "/ofaction:actions-container/ofaction:action" {\r
276          ext:augment-identifier "nw-tos-action";\r
277          leaf nw-tos {\r
278              type uint8;\r
279          }\r
280      }\r
281      augment "/ofaction:actions-container/ofaction:action" {\r
282          ext:augment-identifier "ip-address-action";\r
283          leaf ip-address {\r
284              type inet:ipv4-address;\r
285          }\r
286      }\r
287 \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
292      }\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
296              config false;\r
297              leaf table-id {\r
298                  type uint8;\r
299              }\r
300          }\r
301      }\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
305      }\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
309      }\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
314          }\r
315          leaf exp-type {\r
316              type uint32;\r
317          }\r
318      }\r
319 \r
320 // OFP_INSTRUCTION AUGMENTS\r
321      augment "/ofinstruction:instruction-container/ofinstruction:instruction" {\r
322          ext:augment-identifier "table-id-instruction";\r
323          leaf table-id {\r
324              type uint8;\r
325          }\r
326      }\r
327      augment "/ofinstruction:instruction-container/ofinstruction:instruction" {\r
328          ext:augment-identifier "metadata-instruction";\r
329          leaf metadata {\r
330              type binary;\r
331          }\r
332          leaf metadata-mask {\r
333              type binary;\r
334          }\r
335      }\r
336      augment "/ofinstruction:instruction-container/ofinstruction:instruction" {\r
337          ext:augment-identifier "actions-instruction";\r
338          uses ofaction:actions-grouping;\r
339      }\r
340      augment "/ofinstruction:instruction-container/ofinstruction:instruction" {\r
341          ext:augment-identifier "meter-id-instruction";\r
342          leaf meter-id {\r
343              type uint32;\r
344          }\r
345      }\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
350          }\r
351      }\r
352      \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
356          leaf rate {\r
357              type uint16;\r
358          }\r
359      }\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
364          }\r
365      }\r
366      \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
372          }\r
373      }\r
374 \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
380          }\r
381          leaf exp-type {\r
382              type uint32;\r
383          }\r
384      }\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
389          }\r
390          leaf exp-type {\r
391              type uint32;\r
392          }\r
393      }\r
394 \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
400          }\r
401      }\r
402 }