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