blob: e0139e2424c6403f6c97f38ab7d6f09c35085b05 [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
Rich Lane4b1d8f42014-10-31 15:25:14 -070032#version 5
Rich Lanef86f39a2013-10-07 18:04:11 -070033
34/*
35 * Notification of idle flows
36 *
37 * This extension allows the controller to request to be notified periodically
38 * about idle flows. It is very similar to the flow_removed message in standard
39 * OpenFlow, but does not delete the idle flows.
40 *
41 * If the extension is enabled using of_bsn_flow_idle_enable_set_request and
42 * the OFPFF_BSN_SEND_IDLE bit is set in the flow-mod, then the idle_timeout
43 * field in the flow-mod is not used for standard flow expiration. Instead,
44 * the switch will send an of_bsn_flow_idle message every idle_timeout seconds
45 * if the flow was not used during that period.
46 */
47
48struct of_bsn_flow_idle_enable_set_request : of_bsn_header {
49 uint8_t version;
50 uint8_t type == 4;
51 uint16_t length;
52 uint32_t xid;
53 uint32_t experimenter == 0x5c16c7;
54 uint32_t subtype == 36;
55 uint32_t enable; // 0 to disable the extension, 1 to enable it
56};
57
58struct of_bsn_flow_idle_enable_set_reply : of_bsn_header {
59 uint8_t version;
60 uint8_t type == 4;
61 uint16_t length;
62 uint32_t xid;
63 uint32_t experimenter == 0x5c16c7;
64 uint32_t subtype == 37;
65 uint32_t enable; // Resulting state, 0 disabled, 1 enabled
66 uint32_t status; // Result code: 0 success
67};
68
69struct of_bsn_flow_idle_enable_get_request : of_bsn_header {
70 uint8_t version;
71 uint8_t type == 4;
72 uint16_t length;
73 uint32_t xid;
74 uint32_t experimenter == 0x5c16c7;
75 uint32_t subtype == 38;
76};
77
78struct of_bsn_flow_idle_enable_get_reply : of_bsn_header {
79 uint8_t version;
80 uint8_t type == 4;
81 uint16_t length;
82 uint32_t xid;
83 uint32_t experimenter == 0x5c16c7;
84 uint32_t subtype == 39;
85 uint32_t enabled; // 0 if feature is disabled; 1 if feature enabled
86};
87
88struct of_bsn_flow_idle : of_bsn_header {
89 uint8_t version;
90 uint8_t type == 4;
91 uint16_t length;
92 uint32_t xid;
93 uint32_t experimenter == 0x5c16c7;
94 uint32_t subtype == 40;
95 uint64_t cookie;
96 uint16_t priority;
97 uint8_t table_id;
98 pad(5); // align to 8 bytes
99 of_match_t match;
100};