aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet/ipfix-export/ipfix_export.api
blob: 8a9d5b1312492e6d5da4508db38b3aa870895a7d (plain)
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
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
/*
 * Copyright (c) 2015-2016 Cisco and/or its affiliates.
 * 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.
 */

option version = "2.0.3";

import "vnet/ip/ip_types.api";

/** \brief Configure IPFIX exporter process request
    @param client_index - opaque cookie to identify the sender
    @param context - sender context, to match reply w/ request
    @param collector_address - address of IPFIX collector
    @param collector_port - port of IPFIX collector
    @param src_address - address of IPFIX exporter
    @param vrf_id - VRF / fib table ID
    @param path_mtu - Path MTU between exporter and collector
    @param template_interval - number of seconds after which to resend template
    @param udp_checksum - UDP checksum calculation enable flag
*/
autoreply define set_ipfix_exporter
{
  u32 client_index;
  u32 context;
  vl_api_address_t collector_address;
  u16 collector_port;
  vl_api_address_t src_address;
  u32 vrf_id;
  u32 path_mtu;
  u32 template_interval;
  bool udp_checksum;
};

/** \brief IPFIX exporter dump request
    @param client_index - opaque cookie to identify the sender
    @param context - sender context, to match reply w/ request
*/
define ipfix_exporter_dump
{
  u32 client_index;
  u32 context;
};

/** \brief Reply to IPFIX exporter dump request
    @param context - sender context which was passed in the request
    @param collector_address - address of IPFIX collector
    @param collector_port - port of IPFIX collector
    @param src_address - address of IPFIX exporter
    @param fib_index - fib table index
    @param path_mtu - Path MTU between exporter and collector
    @param template_interval - number of seconds after which to resend template
    @param udp_checksum - UDP checksum calculation enable flag
*/
define ipfix_exporter_details
{
  u32 context;
  vl_api_address_t collector_address;
  u16 collector_port;
  vl_api_address_t src_address;
  u32 vrf_id;
  u32 path_mtu;
  u32 template_interval;
  bool udp_checksum;
};

/** Configure IPFIX exporter within the exporting process.
    The exporting process can contain multiple independent exporters,
    each of which have their own state.  The collector_address is the key
    field that identifies a unique exporter. The already existing API
    'set_ipfix_exporter' is used to modify a single exporter (which will
    always have stat index 0).  If more than one exporter is required then
    they can be created and deleted using this API.

    @param client_index - opaque cookie to identify the sender
    @param context - sender context, to match reply w/ request
    @param is_create - True for create, False for delete
    @param collector_address - address of IPFIX collector
    @param collector_port - port of IPFIX collector
    @param src_address - address of IPFIX exporter
    @param vrf_id - VRF / fib table ID
    @param path_mtu - Path MTU between exporter and collector
    @param template_interval - number of seconds after which to resend template
    @param udp_checksum - UDP checksum calculation enable flag
*/

define ipfix_exporter_create_delete {
  u32 client_index;
  u32 context;
  bool is_create;
  vl_api_address_t collector_address;
  u16 collector_port;
  vl_api_address_t src_address;
  u32 vrf_id;
  u32 path_mtu;
  u32 template_interval;
  bool udp_checksum;
};

define ipfix_exporter_create_delete_reply {
  u32 context;
  i32 retval;
  u32 stat_index;
};

service {
  rpc ipfix_all_exporter_get returns ipfix_all_exporter_get_reply
    stream ipfix_all_exporter_details;
};

define ipfix_all_exporter_get
{
  u32 client_index;
  u32 context;
  u32 cursor;
};

define ipfix_all_exporter_get_reply
{
  u32 context;
  i32 retval;
  u32 cursor;
};

/** \brief Ipfix meter details in response to the get_meters command
    @param context - sender context, to match reply w/ request
    @param name The name of the ipfix meter
*/
define ipfix_all_exporter_details
{
  u32 context;
  vl_api_address_t collector_address;
  u16 collector_port;
  vl_api_address_t src_address;
  u32 vrf_id;
  u32 path_mtu;
  u32 template_interval;
  bool udp_checksum;
};

/** \brief IPFIX classify stream configure request
    @param client_index - opaque cookie to identify the sender
    @param context - sender context, to match reply w/ request
    @param domain_id - domain ID reported in IPFIX messages for classify stream
    @param src_port - source port of UDP session for classify stream
*/
autoreply define set_ipfix_classify_stream {
    u32 client_index;
    u32 context;
    u32 domain_id;
    u16 src_port;
};

/** \brief IPFIX classify stream dump request
    @param client_index - opaque cookie to identify the sender
    @param context - sender context, to match reply w/ request
*/
define ipfix_classify_stream_dump {
    u32 client_index;
    u32 context;
};

/** \brief Reply to IPFIX classify stream dump request
    @param context - sender context, to match reply w/ request
    @param domain_id - domain ID reported in IPFIX messages for classify stream
    @param src_port - source port of UDP session for classify stream
*/
define ipfix_classify_stream_details {
    u32 context;
    u32 domain_id;
    u16 src_port;
};

/** \brief IPFIX add or delete classifier table request
    @param client_index - opaque cookie to identify the sender
    @param context - sender context, to match reply w/ request
    @param table_id - classifier table ID
    @param ip_version - version of IP used in the classifier table
    @param transport_protocol - transport protocol used in the classifier table or 255 for unspecified
*/
autoreply define ipfix_classify_table_add_del {
    u32 client_index;
    u32 context;
    u32 table_id;
    vl_api_address_family_t ip_version;
    vl_api_ip_proto_t transport_protocol;
    bool is_add;
};

/** \brief IPFIX classify tables dump request
    @param client_index - opaque cookie to identify the sender
    @param context - sender context, to match reply w/ request
*/
define ipfix_classify_table_dump {
    u32 client_index;
    u32 context;
};

/** \brief Reply to IPFIX classify tables dump request
    @param context - sender context, to match reply w/ request
    @param table_id - classifier table ID
    @param ip_version - version of IP used in the classifier table
    @param transport_protocol - transport protocol used in the classifier table or 255 for unspecified
*/
define ipfix_classify_table_details {
    u32 context;
    u32 table_id;
    vl_api_address_family_t ip_version;
    vl_api_ip_proto_t transport_protocol;
};

autoreply define ipfix_flush {
    u32 client_index;
    u32 context;
};

/*
 * Local Variables:
 * eval: (c-set-style "gnu")
 * End:
 */