blob: 40a95d8b40f6fb1dab6263f1f26b17075a47bff9 [file] [log] [blame]
Rich Lanef86f39a2013-10-07 18:04:11 -07001// Copyright 2013, Big Switch Networks, Inc.
2//
3// LoxiGen is licensed under the Eclipse Public License,
4// version 1.0 (EPL), with the following special exception:
5//
6// LOXI Exception
7//
8// As a special exception to the terms of the EPL, you may
9// distribute libraries generated by LoxiGen (LoxiGen Libraries)
10// under the terms of your choice, provided that copyright and
11// licensing notices generated by LoxiGen are not altered or removed
12// from the LoxiGen Libraries and the notice provided below is (i)
13// included in the LoxiGen Libraries, if distributed in source code
14// form and (ii) included in any documentation for the LoxiGen
15// Libraries, if distributed in binary form.
16//
17// Notice: "Copyright 2013, Big Switch Networks, Inc.
18// This library was generated by the LoxiGen Compiler."
19//
20// You may not use this file except in compliance with the EPL or
21// LOXI Exception. You may obtain a copy of the EPL at:
22//
23// http://www.eclipse.org/legal/epl-v10.html
24//
25// Unless required by applicable law or agreed to in writing,
26// software distributed under the License is distributed on an "AS
27// IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
28// express or implied. See the EPL for the specific language
29// governing permissions and limitations under the EPL.
30
31#version 4
32
33/*
34 * Notification of idle flows
35 *
36 * This extension allows the controller to request to be notified periodically
37 * about idle flows. It is very similar to the flow_removed message in standard
38 * OpenFlow, but does not delete the idle flows.
39 *
40 * If the extension is enabled using of_bsn_flow_idle_enable_set_request and
41 * the OFPFF_BSN_SEND_IDLE bit is set in the flow-mod, then the idle_timeout
42 * field in the flow-mod is not used for standard flow expiration. Instead,
43 * the switch will send an of_bsn_flow_idle message every idle_timeout seconds
44 * if the flow was not used during that period.
45 */
46
47struct of_bsn_flow_idle_enable_set_request : of_bsn_header {
48 uint8_t version;
49 uint8_t type == 4;
50 uint16_t length;
51 uint32_t xid;
52 uint32_t experimenter == 0x5c16c7;
53 uint32_t subtype == 36;
54 uint32_t enable; // 0 to disable the extension, 1 to enable it
55};
56
57struct of_bsn_flow_idle_enable_set_reply : of_bsn_header {
58 uint8_t version;
59 uint8_t type == 4;
60 uint16_t length;
61 uint32_t xid;
62 uint32_t experimenter == 0x5c16c7;
63 uint32_t subtype == 37;
64 uint32_t enable; // Resulting state, 0 disabled, 1 enabled
65 uint32_t status; // Result code: 0 success
66};
67
68struct of_bsn_flow_idle_enable_get_request : of_bsn_header {
69 uint8_t version;
70 uint8_t type == 4;
71 uint16_t length;
72 uint32_t xid;
73 uint32_t experimenter == 0x5c16c7;
74 uint32_t subtype == 38;
75};
76
77struct of_bsn_flow_idle_enable_get_reply : of_bsn_header {
78 uint8_t version;
79 uint8_t type == 4;
80 uint16_t length;
81 uint32_t xid;
82 uint32_t experimenter == 0x5c16c7;
83 uint32_t subtype == 39;
84 uint32_t enabled; // 0 if feature is disabled; 1 if feature enabled
85};
86
87struct of_bsn_flow_idle : of_bsn_header {
88 uint8_t version;
89 uint8_t type == 4;
90 uint16_t length;
91 uint32_t xid;
92 uint32_t experimenter == 0x5c16c7;
93 uint32_t subtype == 40;
94 uint64_t cookie;
95 uint16_t priority;
96 uint8_t table_id;
97 pad(5); // align to 8 bytes
98 of_match_t match;
99};