1 module openflow-protocol {
2 namespace "urn:opendaylight:openflow:protocol";
6 import ietf-inet-types {prefix inet;}
7 import ietf-yang-types {prefix yang;}
9 import openflow-types {prefix oft;}
10 import openflow-extensible-match { prefix oxm;}
11 import openflow-instruction { prefix ofinstruction;}
12 import openflow-action {prefix ofaction;}
16 revision "2013-07-31" {
17 description "Initial model";
25 reference "ofp_port.port_no";
29 reference "ofp_port.hw_addr";
30 type yang:mac-address;
33 reference "ofp_port.name";
37 reference "ofp_port.config";
41 reference "ofp_port.state";
44 leaf current-features {
45 description "Current features.";
46 reference "ofp_port.curr";
47 type oft:port-features;
49 leaf advertised-features {
50 description "Features being advertised by the port.";
51 reference "ofp_port.advertised";
52 type oft:port-features;
54 leaf supported-features {
55 description "Features supported by the port.";
56 reference "ofp_port.supported";
57 type oft:port-features;
60 description "Features advertised by peer.";
61 reference "ofp_port.peer";
62 type oft:port-features;
65 description "Current port bitrate in kbps.";
66 reference "ofp_port.curr_speed";
71 description "Max port bitrate in kbps";
72 reference "ofp_port.max_speed";
78 // TODO: ofp_packat_queue
80 // # MESSAGE Structures
81 /* Immutable messages. */
83 reference "OFPT_HELLO message in Openflow Switch 1.3 Spec"
85 /* Symmetric message */
88 reference "OFPT_ERROR message in Openflow Switch 1.3 Spec"
90 /* Symmetric message */
92 grouping echo_request {
93 reference "OFPT_ECHO_REQUEST message in Openflow Switch 1.3 Spec"
95 /* Symmetric message */
98 reference "OFPT_ECHO_REPLY message in Openflow Switch 1.3 Spec"
100 /* Symmetric message */
102 grouping experimenter {
103 reference "OFPT_EXPERIMENTER message in Openflow Switch 1.3 Spec"
105 /* Symmetric message */
107 /* Switch configuration messages. */
108 grouping features_request {
109 reference "OFPT_FEATURES_REQUEST message in Openflow Switch 1.3 Spec"
111 /* Controller/switch message */
113 grouping features_reply {
114 reference "OFPT_FEATURES_REPLY message in Openflow Switch 1.3 Spec"
116 /* Controller/switch message */
118 grouping get_config_request {
119 reference "OFPT_GET_CONFIG_REQUEST message in Openflow Switch 1.3 Spec"
121 /* Controller/switch message */
123 grouping get_config_reply {
124 reference "OFPT_GET_CONFIG_REPLY message in Openflow Switch 1.3 Spec"
126 /* Controller/switch message */
128 grouping set_config {
129 reference "OFPT_SET_CONFIG message in Openflow Switch 1.3 Spec"
131 /* Controller/switch message */
133 /* Asynchronous messages. */
135 reference "OFPT_PACKET_IN message in Openflow Switch 1.3 Spec"
139 grouping flow_removed {
140 reference "OFPT_FLOW_REMOVED message in Openflow Switch 1.3 Spec"
144 grouping port_status {
145 reference "OFPT_PORT_STATUS message in Openflow Switch 1.3 Spec"
147 } /* Async message */
148 /* Controller command messages. */
149 grouping packet_out {
150 reference "OFPT_PACKET_OUT message in Openflow Switch 1.3 Spec"
152 /* Controller/switch message */
155 reference "OFPT_FLOW_MOD message in Openflow Switch 1.3 Spec"
157 /* Controller/switch message */
160 reference "OFPT_GROUP_MOD message in Openflow Switch 1.3 Spec"
162 /* Controller/switch message */
165 reference "OFPT_PORT_MOD message in Openflow Switch 1.3 Spec"
167 } /* Controller/switch message */
169 reference "OFPT_TABLE_MOD message in Openflow Switch 1.3 Spec"
171 } /* Controller/switch message */
172 /* Multipart messages. */
173 grouping multipart_request {
174 reference "OFPT_MULTIPART_REQUEST message in Openflow Switch 1.3 Spec"
176 } /* Controller/switch message */
177 grouping multipart_reply {
178 reference "OFPT_MULTIPART_REPLY message in Openflow Switch 1.3 Spec"
180 } /* Controller/switch message */
181 /* Barrier messages. */
182 grouping barrier_request {
183 reference "OFPT_BARRIER_REQUEST message in Openflow Switch 1.3 Spec"
185 } /* Controller/switch message */
186 grouping barrier_reply {
187 reference "OFPT_BARRIER_REPLY message in Openflow Switch 1.3 Spec"
189 } /* Controller/switch message */
190 /* Queue Configuration messages. */
191 grouping queue_get_config_request {
192 reference "OFPT_QUEUE_GET_CONFIG_REQUEST message in Openflow Switch 1.3 Spec"
194 } /* Controller/switch message */
195 grouping queue_get_config_reply {
196 reference "OFPT_QUEUE_GET_CONFIG_REPLY message in Openflow Switch 1.3 Spec"
198 } /* Controller/switch message */
199 /* Controller role change request messages. */
200 grouping role_request {
201 reference "OFPT_ROLE_REQUEST message in Openflow Switch 1.3 Spec"
203 } /* Controller/switch message */
204 grouping role_reply {
205 reference "OFPT_ROLE_REPLY message in Openflow Switch 1.3 Spec"
207 } /* Controller/switch message */
208 /* Asynchronous message configuration. */
209 grouping get_async_request {
210 reference "OFPT_GET_ASYNC_REQUEST message in Openflow Switch 1.3 Spec"
212 } /* Controller/switch message */
213 grouping get_async_reply {
214 reference "OFPT_GET_ASYNC_REPLY message in Openflow Switch 1.3 Spec"
216 } /* Controller/switch message */
218 reference "OFPT_SET_ASYNC message in Openflow Switch 1.3 Spec"
220 } /* Controller/switch message */
221 /* Meters and rate limiters configuration messages. */
223 reference "OFPT_METER_MOD message in Openflow Switch 1.3 Spec"
225 } /* Controller/switch message */
229 /* Immutable messages. */
232 reference "OFPT_HELLO message in Openflow Switch 1.3 Spec"
234 /* Symmetric message */
238 reference "OFPT_ERROR message in Openflow Switch 1.3 Spec"
240 /* Symmetric message */
242 notification echo_request {
244 reference "OFPT_ECHO_REQUEST message in Openflow Switch 1.3 Spec"
246 /* Symmetric message */
248 notification echo_reply {
250 reference "OFPT_ECHO_REPLY message in Openflow Switch 1.3 Spec"
252 /* Symmetric message */
254 notification experimenter {
256 reference "OFPT_EXPERIMENTER message in Openflow Switch 1.3 Spec"
258 /* Symmetric message */
260 /* Switch configuration messages. */
263 uses features_request;
264 reference "OFPT_FEATURES_REQUEST message in Openflow Switch 1.3 Spec"
268 reference "OFPT_FEATURES_REPLY message in Openflow Switch 1.3 Spec"
273 notification get_config {
275 uses get_config_request;
276 reference "OFPT_GET_CONFIG_REQUEST message in Openflow Switch 1.3 Spec"
279 uses get_config_reply;
280 reference "OFPT_GET_CONFIG_REPLY message in Openflow Switch 1.3 Spec"
284 notification set_config {
287 reference "OFPT_SET_CONFIG message in Openflow Switch 1.3 Spec"
289 /* Controller/switch message */
292 // # Notification and RPCs
295 /* Switch configuration messages. */
297 reference "OFPT_FEATURES_REQUEST message in Openflow Switch 1.3 Spec"
299 uses features_request;
301 /* Controller/switch message */
308 reference "OFPT_GET_CONFIG_REQUEST message in Openflow Switch 1.3 Spec"
310 uses get_config_request;
313 uses get_config_reply;
315 /* Controller/switch message */
318 grouping set_config {
319 reference "OFPT_SET_CONFIG message in Openflow Switch 1.3 Spec"
323 /* Controller/switch message */
325 /* Asynchronous messages. */
326 notification packet_in {
328 reference "OFPT_PACKET_IN message in Openflow Switch 1.3 Spec"
332 notification flow_removed {
334 reference "OFPT_FLOW_REMOVED message in Openflow Switch 1.3 Spec"
338 notification port_status {
340 reference "OFPT_PORT_STATUS message in Openflow Switch 1.3 Spec"
342 } /* Async message */
344 /* Controller command messages. */
348 reference "OFPT_PACKET_OUT message in Openflow Switch 1.3 Spec"
350 /* Controller/switch message */
355 reference "OFPT_FLOW_MOD message in Openflow Switch 1.3 Spec"
357 /* Controller/switch message */
362 reference "OFPT_GROUP_MOD message in Openflow Switch 1.3 Spec"
364 /* Controller/switch message */
369 reference "OFPT_PORT_MOD message in Openflow Switch 1.3 Spec"
371 } /* Controller/switch message */
376 reference "OFPT_TABLE_MOD message in Openflow Switch 1.3 Spec"
378 } /* Controller/switch message */
380 /* Multipart messages. */
381 //FIXME: Arent this wire protocol specific?
383 notification multipart_request {
384 uses multipart_request;
385 reference "OFPT_MULTIPART_REQUEST message in Openflow Switch 1.3 Spec"
387 } /* Controller/switch message */
388 notification multipart_reply {
389 uses multipart_reply;
390 reference "OFPT_MULTIPART_REPLY message in Openflow Switch 1.3 Spec"
392 } /* Controller/switch message */
395 /* Barrier messages. */
398 uses barrier_request;
399 reference "OFPT_BARRIER_REQUEST message in Openflow Switch 1.3 Spec"
403 reference "OFPT_BARRIER_REPLY message in Openflow Switch 1.3 Spec"
406 /* Queue Configuration messages. */
407 rpc get_queue_config {
409 uses queue_get_config_request;
410 reference "OFPT_QUEUE_GET_CONFIG_REQUEST message in Openflow Switch 1.3 Spec"
413 uses queue_get_config_reply;
414 reference "OFPT_QUEUE_GET_CONFIG_REPLY message in Openflow Switch 1.3 Spec"
418 /* Controller role change request messages. */
422 reference "OFPT_ROLE_REQUEST message in Openflow Switch 1.3 Spec"
426 reference "OFPT_ROLE_REPLY message in Openflow Switch 1.3 Spec"
428 } /* Controller/switch message */
430 /* Asynchronous message configuration. */
431 notification get_async_request {
432 uses get_async_request;
433 reference "OFPT_GET_ASYNC_REQUEST message in Openflow Switch 1.3 Spec"
435 } /* Controller/switch message */
436 notification get_async_reply {
437 uses get_async_reply;
438 reference "OFPT_GET_ASYNC_REPLY message in Openflow Switch 1.3 Spec"
440 } /* Controller/switch message */
441 notification set_async {
443 reference "OFPT_SET_ASYNC message in Openflow Switch 1.3 Spec"
445 } /* Controller/switch message */
446 /* Meters and rate limiters configuration messages. */
450 reference "OFPT_METER_MOD message in Openflow Switch 1.3 Spec"
452 } /* Controller/switch message */