Model updated with descriptions
[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 \r
179 // OFP_ACTION AUGMENTS\r
180      augment "/ofaction:actions-container/ofaction:actions-list/ofaction:action" {\r
181          ext:augment-identifier "port-action";\r
182          leaf port {\r
183              type oft:port-number;\r
184          }\r
185      }\r
186      augment "/ofaction:actions-container/ofaction:actions-list/ofaction:action" {\r
187          ext:augment-identifier "max-length-action";\r
188          leaf max-length {\r
189              type uint16;\r
190          }\r
191      }\r
192      augment "/ofaction:actions-container/ofaction:actions-list/ofaction:action" {\r
193          ext:augment-identifier "mpls-ttl-action";\r
194          leaf mpls-ttl {\r
195              type uint8;\r
196          }\r
197      }\r
198      augment "/ofaction:actions-container/ofaction:actions-list/ofaction:action" {\r
199          ext:augment-identifier "ethertype-action";\r
200          leaf ethertype {\r
201              type oft:ether-type;\r
202          }\r
203      }\r
204      augment "/ofaction:actions-container/ofaction:actions-list/ofaction:action" {\r
205          ext:augment-identifier "queue-id-action";\r
206          leaf queue-id {\r
207              type uint32;\r
208          }\r
209      }\r
210      augment "/ofaction:actions-container/ofaction:actions-list/ofaction:action" {\r
211          ext:augment-identifier "group-id-action";\r
212          leaf group-id {\r
213              type uint32;\r
214          }\r
215      }\r
216      augment "/ofaction:actions-container/ofaction:actions-list/ofaction:action" {\r
217          ext:augment-identifier "nw-ttl-action";\r
218          leaf nw-ttl {\r
219              type uint8;\r
220          }\r
221      }\r
222      augment "/ofaction:actions-container/ofaction:actions-list/ofaction:action" {\r
223          ext:augment-identifier "oxm-fields-action";\r
224          uses oxm:oxm-fields;\r
225      }\r
226      augment "/ofaction:actions-container/ofaction:actions-list/ofaction:action" {\r
227          ext:augment-identifier "experimenter-action";\r
228          leaf experimenter {\r
229              type uint32;\r
230          }\r
231      }\r
232      // OF1.0 structures\r
233      augment "/ofaction:actions-container/ofaction:actions-list/ofaction:action" {\r
234          ext:augment-identifier "vlan-vid-action";\r
235          leaf vlan-vid {\r
236              type uint16;\r
237          }\r
238      }\r
239      augment "/ofaction:actions-container/ofaction:actions-list/ofaction:action" {\r
240          ext:augment-identifier "vlan-pcp-action";\r
241          leaf vlan-pcp {\r
242              type uint8;\r
243          }\r
244      }\r
245      augment "/ofaction:actions-container/ofaction:actions-list/ofaction:action" {\r
246          ext:augment-identifier "dl-address-action";\r
247          leaf dl-address {\r
248              type yang:mac-address;\r
249          }\r
250      }\r
251      augment "/ofaction:actions-container/ofaction:actions-list/ofaction:action" {\r
252          ext:augment-identifier "nw-tos-action";\r
253          leaf nw-tos {\r
254              type uint8;\r
255          }\r
256      }\r
257      augment "/ofaction:actions-container/ofaction:actions-list/ofaction:action" {\r
258          ext:augment-identifier "ip-address-action";\r
259          leaf ip-address {\r
260              type inet:ipv4-address;\r
261          }\r
262      }\r
263 \r
264 // OFP_TABLE_FEATURES_PROPERTIES AUGMENTS\r
265      augment "/ofproto:table-features-properties-container/ofproto:table-feature-properties" {\r
266          ext:augment-identifier "instruction-related-table-feature-property";\r
267          uses ofinstruction:instructions;\r
268      }\r
269      augment "/ofproto:table-features-properties-container/ofproto:table-feature-properties" {\r
270          ext:augment-identifier "next-table-related-table-feature-property";\r
271          list next-table-ids {\r
272              key "table-id";\r
273              leaf table-id {\r
274                  type uint8;\r
275              }\r
276          }\r
277      }\r
278      augment "/ofproto:table-features-properties-container/ofproto:table-feature-properties" {\r
279          ext:augment-identifier "action-related-table-feature-property";\r
280          uses ofaction:actions;\r
281      }\r
282      augment "/ofproto:table-features-properties-container/ofproto:table-feature-properties" {\r
283          ext:augment-identifier "oxm-related-table-feature-property";\r
284          uses oxm:oxm-fields;\r
285      }\r
286      augment "/ofproto:table-features-properties-container/ofproto:table-feature-properties" {\r
287          ext:augment-identifier "experimenter-related-table-feature-property";\r
288          leaf experimenter {\r
289              type uint32;\r
290          }\r
291          leaf exp-type {\r
292              type uint32;\r
293          }\r
294          leaf data {\r
295              type binary;\r
296          }\r
297      }\r
298 \r
299 // OFP_INSTRUCTION AUGMENTS\r
300      augment "/ofinstruction:instruction-container/ofinstruction:instructions" {\r
301          ext:augment-identifier "table-id-instruction";\r
302          leaf table-id {\r
303              type uint8;\r
304          }\r
305      }\r
306      augment "/ofinstruction:instruction-container/ofinstruction:instructions" {\r
307          ext:augment-identifier "metadata-instruction";\r
308          leaf metadata {\r
309              type binary;\r
310          }\r
311          leaf metadata-mask {\r
312              type binary;\r
313          }\r
314      }\r
315      augment "/ofinstruction:instruction-container/ofinstruction:instructions" {\r
316          ext:augment-identifier "actions-instruction";\r
317          uses ofaction:actions;\r
318      }\r
319      augment "/ofinstruction:instruction-container/ofinstruction:instructions" {\r
320          ext:augment-identifier "meter-id-instruction";\r
321          leaf meter-id {\r
322              type uint32;\r
323          }\r
324      }\r
325      augment "/ofinstruction:instruction-container/ofinstruction:instructions" {\r
326          ext:augment-identifier "experimenter-instruction";\r
327          leaf experimenter {\r
328              type uint32;\r
329          }\r
330          leaf data {\r
331              type binary;\r
332          }\r
333      }\r
334      \r
335 // OFP_QUEUE_PROP AUGMENTS\r
336      augment "/ofproto:queue-prop-container/ofproto:queue-property" {\r
337          ext:augment-identifier "rate-queue-property";\r
338          leaf rate {\r
339              type uint16;\r
340          }\r
341      }\r
342      augment "/ofproto:queue-prop-container/ofproto:queue-property" {\r
343          ext:augment-identifier "experimenter-queue-property";\r
344          leaf experimenter {\r
345              type uint32;\r
346          }\r
347          leaf data {\r
348              type binary;\r
349          }\r
350      }\r
351      \r
352 // OFP_ERROR_AUGMENTS (only experimenter till OpenFlow v1.3)\r
353     augment "/ofproto:error-message" {\r
354          ext:augment-identifier "experimenter-error";\r
355          leaf exp_type {\r
356              type uint16;\r
357          }\r
358          leaf experimenter {\r
359              type uint32;\r
360          }\r
361      }\r
362 \r
363 }