blob: 451bc0e5faedce9c9c1fe20fcabd8b0d36e04de6 [file] [log] [blame]
Ed Warnickecb9cada2015-12-08 15:45:58 -07001/* Hey Emacs use -*- mode: C -*- */
2/*
3 * Copyright (c) 2015 Cisco and/or its affiliates.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at:
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
Juraj Sloboda75282452018-06-12 14:20:49 +020017option version = "2.0.0";
Dave Barach0d056e52017-09-28 15:11:16 -040018
Ed Warnickecb9cada2015-12-08 15:45:58 -070019/*
Ole Troan94495f22018-08-02 11:58:12 +020020 * Define services not following the normal conventions here
Marek Gradzki51e59682018-03-06 10:05:44 +010021 */
22service {
23 rpc memclnt_rx_thread_suspend returns null;
24 rpc memclnt_read_timeout returns null;
25 rpc rx_thread_exit returns null;
26 rpc trace_plugin_msg_ids returns null;
27};
28
29/*
Ed Warnickecb9cada2015-12-08 15:45:58 -070030 * Create a client registration
31 */
32manual_print
33define memclnt_create {
Ed Warnickecb9cada2015-12-08 15:45:58 -070034 u32 context; /* opaque value to be returned in the reply */
Klement Sekeradab732a2018-07-04 13:43:46 +020035 i32 ctx_quota; /* requested punt context quota */
Ed Warnickecb9cada2015-12-08 15:45:58 -070036 u64 input_queue; /* client's queue */
37 u8 name[64]; /* for show, find by name, whatever */
38 u32 api_versions[8]; /* client-server pairs use as desired */
39};
40
41define memclnt_create_reply {
Klement Sekeradab732a2018-07-04 13:43:46 +020042 u32 context; /* opaque value from the create request */
Ed Warnickecb9cada2015-12-08 15:45:58 -070043 i32 response; /* Non-negative = success */
Dave Barach557d1282016-11-10 14:22:49 -050044 u64 handle; /* handle by which vlib knows this client */
Ed Warnickecb9cada2015-12-08 15:45:58 -070045 u32 index; /* index, used e.g. by API trace replay */
Dave Barach557d1282016-11-10 14:22:49 -050046 u64 message_table; /* serialized message table in shmem */
Ed Warnickecb9cada2015-12-08 15:45:58 -070047};
48
49/*
50 * Delete a client registration
51 */
52manual_print
53define memclnt_delete {
54 u32 index; /* index, used e.g. by API trace replay */
55 u64 handle; /* handle by which vlib knows this client */
56};
57
58define memclnt_delete_reply {
59 i32 response; /* Non-negative = success */
60 u64 handle; /* in case the client wonders */
61};
62
Ole Troandfc9b7c2017-03-06 23:51:57 +010063/*
Ed Warnickecb9cada2015-12-08 15:45:58 -070064 * Client RX thread exit
65 */
Ed Warnickecb9cada2015-12-08 15:45:58 -070066define rx_thread_exit {
67 u8 dummy;
68};
69
70/*
Ole Troandfc9b7c2017-03-06 23:51:57 +010071 * Client RX thread suspend
72 */
73define memclnt_rx_thread_suspend {
74 u8 dummy;
75};
76
77/*
78 * Client read timeout
79 */
80define memclnt_read_timeout {
81 u8 dummy;
82};
83
84/*
Ed Warnickecb9cada2015-12-08 15:45:58 -070085 * RPC
86 */
Dave Barach11b8dbf2017-04-24 10:46:54 -040087autoreply define rpc_call {
Ed Warnickecb9cada2015-12-08 15:45:58 -070088 u32 client_index;
89 u32 context;
90 u64 function;
91 u8 multicast;
92 u8 need_barrier_sync;
93 u8 send_reply;
Juraj Sloboda75282452018-06-12 14:20:49 +020094 u32 data_len;
95 u8 data[data_len];
Ed Warnickecb9cada2015-12-08 15:45:58 -070096};
97
Ed Warnickecb9cada2015-12-08 15:45:58 -070098/*
99 * Lookup message-ID base by name
100 */
101define get_first_msg_id {
102 u32 client_index;
103 u32 context;
104 u8 name[64];
105};
106
107define get_first_msg_id_reply {
Ed Warnickecb9cada2015-12-08 15:45:58 -0700108 u32 context;
109 i32 retval;
110 u16 first_msg_id;
111};
Dave Barach987e11d2017-02-27 13:10:27 -0500112
113/*
Dave Barach0d056e52017-09-28 15:11:16 -0400114 * Get API version table (includes built-in and plugins)
115 */
116typeonly define module_version {
117 u32 major;
118 u32 minor;
119 u32 patch;
120 u8 name[64];
121};
122define api_versions {
123 u32 client_index;
124 u32 context;
125};
126define api_versions_reply {
Dave Barach0d056e52017-09-28 15:11:16 -0400127 u32 context;
128 i32 retval;
129 u32 count;
130 vl_api_module_version_t api_versions[count];
131};
132
133/*
Dave Barach987e11d2017-02-27 13:10:27 -0500134 * Trace the plugin message-id allocator
135 * so we stand a chance of dealing with different sets of plugins
136 * at api trace replay time
137 */
138
139manual_print define trace_plugin_msg_ids
140{
141 u32 client_index;
142 u32 context;
143 u8 plugin_name[128];
144 u16 first_msg_id;
145 u16 last_msg_id;
146};
Dave Barach59b25652017-09-10 15:04:27 -0400147
Ole Troan94495f22018-08-02 11:58:12 +0200148typedef message_table_entry
149{
150 u16 index;
151 u8 name[64];
152};
153
Dave Barach59b25652017-09-10 15:04:27 -0400154/*
155 * Create a socket client registration.
156 */
157define sockclnt_create {
Dave Barach59b25652017-09-10 15:04:27 -0400158 u32 context; /* opaque value to be returned in the reply */
Klement Sekeradab732a2018-07-04 13:43:46 +0200159 u8 name[64]; /* for show, find by name, whatever */
Dave Barach59b25652017-09-10 15:04:27 -0400160};
161
162define sockclnt_create_reply {
Ole Troan94495f22018-08-02 11:58:12 +0200163 u32 client_index;
Klement Sekeradab732a2018-07-04 13:43:46 +0200164 u32 context; /* opaque value from the create request */
Dave Barach59b25652017-09-10 15:04:27 -0400165 i32 response; /* Non-negative = success */
Dave Barach59b25652017-09-10 15:04:27 -0400166 u32 index; /* index, used e.g. by API trace replay */
Ole Troan94495f22018-08-02 11:58:12 +0200167 u16 count;
168 vl_api_message_table_entry_t message_table[count];
Dave Barach59b25652017-09-10 15:04:27 -0400169};
170
171/*
172 * Delete a client registration
173 */
174define sockclnt_delete {
Ole Troan94495f22018-08-02 11:58:12 +0200175 u32 client_index;
176 u32 context;
Dave Barach59b25652017-09-10 15:04:27 -0400177 u32 index; /* index, used e.g. by API trace replay */
Dave Barach59b25652017-09-10 15:04:27 -0400178};
179
180define sockclnt_delete_reply {
Ole Troan94495f22018-08-02 11:58:12 +0200181 u32 context;
Dave Barach59b25652017-09-10 15:04:27 -0400182 i32 response; /* Non-negative = success */
Dave Barach59b25652017-09-10 15:04:27 -0400183};
184
185/*
Florin Coras90a63982017-12-19 04:50:01 -0800186 * Initialize shm api over socket api
187 */
Dave Barach78958722018-05-10 16:44:27 -0400188autoreply define sock_init_shm {
Florin Coras90a63982017-12-19 04:50:01 -0800189 u32 client_index;
190 u32 context;
191 u32 requested_size;
192 u8 nitems;
193 u64 configs[nitems];
194};
195
Dave Barach78958722018-05-10 16:44:27 -0400196/* define sock_init_shm_reply {
Florin Coras90a63982017-12-19 04:50:01 -0800197 u32 client_index;
198 u32 context;
199 i32 retval;
Dave Barach78958722018-05-10 16:44:27 -0400200}; */
Florin Coras90a63982017-12-19 04:50:01 -0800201
202/*
Dave Barach59b25652017-09-10 15:04:27 -0400203 * Memory client ping / response
204 * Only sent on inactive connections
205 */
206autoreply define memclnt_keepalive
207{
208 u32 client_index;
209 u32 context;
210};