44986927df0393ebb05dbcff7d6ee2aa841af887
[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-match-entry";\r
180          leaf experimenter {\r
181              type uint32;\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-action";\r
252          leaf experimenter {\r
253              type uint32;\r
254          }\r
255          leaf data {\r
256              type binary;\r
257          }\r
258      }\r
259      // OF1.0 structures\r
260      augment "/ofaction:actions-container/ofaction:action" {\r
261          ext:augment-identifier "vlan-vid-action";\r
262          leaf vlan-vid {\r
263              type uint16;\r
264          }\r
265      }\r
266      augment "/ofaction:actions-container/ofaction:action" {\r
267          ext:augment-identifier "vlan-pcp-action";\r
268          leaf vlan-pcp {\r
269              type uint8;\r
270          }\r
271      }\r
272      augment "/ofaction:actions-container/ofaction:action" {\r
273          ext:augment-identifier "dl-address-action";\r
274          leaf dl-address {\r
275              type yang:mac-address;\r
276          }\r
277      }\r
278      augment "/ofaction:actions-container/ofaction:action" {\r
279          ext:augment-identifier "nw-tos-action";\r
280          leaf nw-tos {\r
281              type uint8;\r
282          }\r
283      }\r
284      augment "/ofaction:actions-container/ofaction:action" {\r
285          ext:augment-identifier "ip-address-action";\r
286          leaf ip-address {\r
287              type inet:ipv4-address;\r
288          }\r
289      }\r
290 \r
291 // OFP_TABLE_FEATURES_PROPERTIES AUGMENTS\r
292      augment "/ofproto:table-features-properties-container/ofproto:table-feature-properties" {\r
293          ext:augment-identifier "instruction-related-table-feature-property";\r
294          uses ofinstruction:instructions-grouping;\r
295      }\r
296      augment "/ofproto:table-features-properties-container/ofproto:table-feature-properties" {\r
297          ext:augment-identifier "next-table-related-table-feature-property";\r
298          list next-table-ids {\r
299              config false;\r
300              leaf table-id {\r
301                  type uint8;\r
302              }\r
303          }\r
304      }\r
305      augment "/ofproto:table-features-properties-container/ofproto:table-feature-properties" {\r
306          ext:augment-identifier "action-related-table-feature-property";\r
307          uses ofaction:actions-grouping;\r
308      }\r
309      augment "/ofproto:table-features-properties-container/ofproto:table-feature-properties" {\r
310          ext:augment-identifier "oxm-related-table-feature-property";\r
311          uses oxm:oxm-fields-grouping;\r
312      }\r
313      augment "/ofproto:table-features-properties-container/ofproto:table-feature-properties" {\r
314          ext:augment-identifier "experimenter-related-table-feature-property";\r
315          leaf experimenter {\r
316              type uint32;\r
317          }\r
318          leaf exp-type {\r
319              type uint32;\r
320          }\r
321          leaf data {\r
322              type binary;\r
323          }\r
324      }\r
325 \r
326 // OFP_INSTRUCTION AUGMENTS\r
327      augment "/ofinstruction:instruction-container/ofinstruction:instruction" {\r
328          ext:augment-identifier "table-id-instruction";\r
329          leaf table-id {\r
330              type uint8;\r
331          }\r
332      }\r
333      augment "/ofinstruction:instruction-container/ofinstruction:instruction" {\r
334          ext:augment-identifier "metadata-instruction";\r
335          leaf metadata {\r
336              type binary;\r
337          }\r
338          leaf metadata-mask {\r
339              type binary;\r
340          }\r
341      }\r
342      augment "/ofinstruction:instruction-container/ofinstruction:instruction" {\r
343          ext:augment-identifier "actions-instruction";\r
344          uses ofaction:actions-grouping;\r
345      }\r
346      augment "/ofinstruction:instruction-container/ofinstruction:instruction" {\r
347          ext:augment-identifier "meter-id-instruction";\r
348          leaf meter-id {\r
349              type uint32;\r
350          }\r
351      }\r
352      augment "/ofinstruction:instruction-container/ofinstruction:instruction" {\r
353          ext:augment-identifier "experimenter-instruction";\r
354          leaf experimenter {\r
355              type uint32;\r
356          }\r
357          leaf data {\r
358              type binary;\r
359          }\r
360      }\r
361      \r
362 // OFP_QUEUE_PROP AUGMENTS\r
363      augment "/ofproto:queue-prop-container/ofproto:queue-property" {\r
364          ext:augment-identifier "rate-queue-property";\r
365          leaf rate {\r
366              type uint16;\r
367          }\r
368      }\r
369      augment "/ofproto:queue-prop-container/ofproto:queue-property" {\r
370          ext:augment-identifier "experimenter-queue-property";\r
371          leaf experimenter {\r
372              type uint32;\r
373          }\r
374          leaf data {\r
375              type binary;\r
376          }\r
377      }\r
378      \r
379 // OFP_ERROR_AUGMENTS (only experimenter till OpenFlow v1.3)\r
380     augment "/ofproto:error-message" {\r
381          ext:augment-identifier "experimenter-error";\r
382          leaf exp_type {\r
383              type uint16;\r
384          }\r
385          leaf experimenter {\r
386              type uint32;\r
387          }\r
388          leaf exp-data {\r
389              type binary;\r
390          }\r
391      }\r
392 \r
393 }