1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
|
/*
* Copyright (c) 2024 InMon Corp.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @file sflow.api
* @brief VPP control-plane API messages.
*
* This file defines VPP control-plane binary API messages which are generally
* called through a shared memory interface.
*/
/* Version and type recitations */
option version = "0.1.0";
import "vnet/interface_types.api";
/** @brief API to enable / disable sflow
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param enable_disable - 1 to enable, 0 to disable the feature
@param hw_if_index - hardware interface handle
*/
autoreply define sflow_enable_disable {
/* Client identifier, set from api_main.my_client_index */
u32 client_index;
/* Arbitrary context, so client can match reply to request */
u32 context;
/* Enable / disable the feature */
bool enable_disable;
/* Interface handle */
vl_api_interface_index_t hw_if_index;
};
/** @brief API to get sflow sampling-rate
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
*/
define sflow_sampling_rate_get {
/* Client identifier, set from api_main.my_client_index */
u32 client_index;
/* Arbitrary context, so client can match reply to request */
u32 context;
};
/** \brief API go the sflow sampling-rate
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sampling_N - the current 1-in-N sampling rate
*/
define sflow_sampling_rate_get_reply
{
u32 context;
u32 sampling_N;
option in_progress;
};
/** @brief API to set sflow sampling-rate
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sampling_N - 1-in-N random sampling rate
*/
autoreply define sflow_sampling_rate_set {
/* Client identifier, set from api_main.my_client_index */
u32 client_index;
/* Arbitrary context, so client can match reply to request */
u32 context;
/* Sampling_N */
u32 sampling_N [default=10000];
};
/** @brief API to set sflow polling-interval
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param polling_S - polling interval in seconds
*/
autoreply define sflow_polling_interval_set {
/* Client identifier, set from api_main.my_client_index */
u32 client_index;
/* Arbitrary context, so client can match reply to request */
u32 context;
/* Polling_S */
u32 polling_S [default=20];
};
/** @brief API to get sflow polling-interval
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
*/
define sflow_polling_interval_get {
/* Client identifier, set from api_main.my_client_index */
u32 client_index;
/* Arbitrary context, so client can match reply to request */
u32 context;
};
/** \brief API go the sflow polling-interval
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param polling_S - current polling interval in seconds
*/
define sflow_polling_interval_get_reply
{
u32 context;
u32 polling_S;
option in_progress;
};
/** @brief API to set sflow header-bytes
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param header_B - max header length in bytes
*/
autoreply define sflow_header_bytes_set {
/* Client identifier, set from api_main.my_client_index */
u32 client_index;
/* Arbitrary context, so client can match reply to request */
u32 context;
/* header_B */
u32 header_B [default=128];
};
/** @brief API to get sflow header-bytes
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
*/
define sflow_header_bytes_get {
/* Client identifier, set from api_main.my_client_index */
u32 client_index;
/* Arbitrary context, so client can match reply to request */
u32 context;
};
/** \brief API go the sflow header-bytes
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param header_B - current maximum header length in bytes
*/
define sflow_header_bytes_get_reply
{
u32 context;
u32 header_B;
option in_progress;
};
/** \brief Dump sflow enabled interface(s)
@param client_index - opaque cookie to identify the sender
@param hw_if_index - hw_if_index of a specific interface, or -1 (default)
to return all sflow enabled interfaces
*/
define sflow_interface_dump
{
u32 client_index;
u32 context;
vl_api_interface_index_t hw_if_index [default=0xffffffff];
};
/** \brief sflow enabled interface details
*/
define sflow_interface_details
{
u32 context;
vl_api_interface_index_t hw_if_index;
};
|