Added default experimenter serializers
[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: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: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: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: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: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: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: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:action" {\r
223          ext:augment-identifier "oxm-fields-action";\r
224          uses oxm:oxm-fields-grouping;\r
225      }\r
226      augment "/ofaction:actions-container/ofaction:action" {\r
227          ext:augment-identifier "experimenter-action";\r
228          leaf experimenter {\r
229              type uint32;\r
230          }\r
231          leaf data {\r
232              type binary;\r
233          }\r
234      }\r
235      // OF1.0 structures\r
236      augment "/ofaction:actions-container/ofaction:action" {\r
237          ext:augment-identifier "vlan-vid-action";\r
238          leaf vlan-vid {\r
239              type uint16;\r
240          }\r
241      }\r
242      augment "/ofaction:actions-container/ofaction:action" {\r
243          ext:augment-identifier "vlan-pcp-action";\r
244          leaf vlan-pcp {\r
245              type uint8;\r
246          }\r
247      }\r
248      augment "/ofaction:actions-container/ofaction:action" {\r
249          ext:augment-identifier "dl-address-action";\r
250          leaf dl-address {\r
251              type yang:mac-address;\r
252          }\r
253      }\r
254      augment "/ofaction:actions-container/ofaction:action" {\r
255          ext:augment-identifier "nw-tos-action";\r
256          leaf nw-tos {\r
257              type uint8;\r
258          }\r
259      }\r
260      augment "/ofaction:actions-container/ofaction:action" {\r
261          ext:augment-identifier "ip-address-action";\r
262          leaf ip-address {\r
263              type inet:ipv4-address;\r
264          }\r
265      }\r
266 \r
267 // OFP_TABLE_FEATURES_PROPERTIES AUGMENTS\r
268      augment "/ofproto:table-features-properties-container/ofproto:table-feature-properties" {\r
269          ext:augment-identifier "instruction-related-table-feature-property";\r
270          uses ofinstruction:instructions-grouping;\r
271      }\r
272      augment "/ofproto:table-features-properties-container/ofproto:table-feature-properties" {\r
273          ext:augment-identifier "next-table-related-table-feature-property";\r
274          list next-table-ids {\r
275              config false;\r
276              leaf table-id {\r
277                  type uint8;\r
278              }\r
279          }\r
280      }\r
281      augment "/ofproto:table-features-properties-container/ofproto:table-feature-properties" {\r
282          ext:augment-identifier "action-related-table-feature-property";\r
283          uses ofaction:actions-grouping;\r
284      }\r
285      augment "/ofproto:table-features-properties-container/ofproto:table-feature-properties" {\r
286          ext:augment-identifier "oxm-related-table-feature-property";\r
287          uses oxm:oxm-fields-grouping;\r
288      }\r
289      augment "/ofproto:table-features-properties-container/ofproto:table-feature-properties" {\r
290          ext:augment-identifier "experimenter-related-table-feature-property";\r
291          leaf experimenter {\r
292              type uint32;\r
293          }\r
294          leaf exp-type {\r
295              type uint32;\r
296          }\r
297          leaf data {\r
298              type binary;\r
299          }\r
300      }\r
301 \r
302 // OFP_INSTRUCTION AUGMENTS\r
303      augment "/ofinstruction:instruction-container/ofinstruction:instruction" {\r
304          ext:augment-identifier "table-id-instruction";\r
305          leaf table-id {\r
306              type uint8;\r
307          }\r
308      }\r
309      augment "/ofinstruction:instruction-container/ofinstruction:instruction" {\r
310          ext:augment-identifier "metadata-instruction";\r
311          leaf metadata {\r
312              type binary;\r
313          }\r
314          leaf metadata-mask {\r
315              type binary;\r
316          }\r
317      }\r
318      augment "/ofinstruction:instruction-container/ofinstruction:instruction" {\r
319          ext:augment-identifier "actions-instruction";\r
320          uses ofaction:actions-grouping;\r
321      }\r
322      augment "/ofinstruction:instruction-container/ofinstruction:instruction" {\r
323          ext:augment-identifier "meter-id-instruction";\r
324          leaf meter-id {\r
325              type uint32;\r
326          }\r
327      }\r
328      augment "/ofinstruction:instruction-container/ofinstruction:instruction" {\r
329          ext:augment-identifier "experimenter-instruction";\r
330          leaf experimenter {\r
331              type uint32;\r
332          }\r
333          leaf data {\r
334              type binary;\r
335          }\r
336      }\r
337      \r
338 // OFP_QUEUE_PROP AUGMENTS\r
339      augment "/ofproto:queue-prop-container/ofproto:queue-property" {\r
340          ext:augment-identifier "rate-queue-property";\r
341          leaf rate {\r
342              type uint16;\r
343          }\r
344      }\r
345      augment "/ofproto:queue-prop-container/ofproto:queue-property" {\r
346          ext:augment-identifier "experimenter-queue-property";\r
347          leaf experimenter {\r
348              type uint32;\r
349          }\r
350          leaf data {\r
351              type binary;\r
352          }\r
353      }\r
354      \r
355 // OFP_ERROR_AUGMENTS (only experimenter till OpenFlow v1.3)\r
356     augment "/ofproto:error-message" {\r
357          ext:augment-identifier "experimenter-error";\r
358          leaf exp_type {\r
359              type uint16;\r
360          }\r
361          leaf experimenter {\r
362              type uint32;\r
363          }\r
364      }\r
365 \r
366 }