api: memclnt api use string type.
[vpp.git] / src / vlibmemory / memclnt.api
1 /* 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
17 option version = "2.1.0";
18
19 /*
20  * Define services not following the normal conventions here
21  */
22 service {
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 /*
30  * Create a client registration 
31  */
32 manual_print 
33 define memclnt_create {
34     u32 context;                /* opaque value to be returned in the reply */
35     i32 ctx_quota;              /* requested punt context quota */
36     u64 input_queue;            /* client's queue */
37     string name[64];            /* for show, find by name, whatever */
38     u32 api_versions[8];        /* client-server pairs use as desired */
39 };
40
41 define memclnt_create_reply {
42     u32 context;                /* opaque value from the create request */
43     i32 response;               /* Non-negative = success */
44     u64 handle;                 /* handle by which vlib knows this client */
45     u32 index;                  /* index, used e.g. by API trace replay */
46     u64 message_table;          /* serialized message table in shmem */
47 };
48
49 /*
50  * Delete a client registration 
51  */
52 manual_print
53 define memclnt_delete {
54     u32 index;                  /* index, used e.g. by API trace replay */
55     u64 handle;               /* handle by which vlib knows this client */
56     u8 do_cleanup;                              /* vlib to cleanup the registration */
57 };
58
59 define memclnt_delete_reply {
60     i32 response;               /* Non-negative = success */
61     u64 handle;               /* in case the client wonders */
62 };
63
64 /*
65  * Client RX thread exit
66  */
67 define rx_thread_exit {
68     u8 dummy;
69 };
70
71 /*
72  * Client RX thread suspend
73  */
74 define memclnt_rx_thread_suspend {
75     u8 dummy;
76 };
77
78 /*
79  * Client read timeout
80  */
81 define memclnt_read_timeout {
82     u8 dummy;
83 };
84
85 /*
86  * RPC
87  */
88 autoreply define rpc_call {
89     u32 client_index;
90     u32 context;
91     u64 function;
92     u8 multicast;
93     u8 need_barrier_sync;
94     u8 send_reply;
95     u32 data_len;
96     u8 data[data_len];
97 };
98
99 /*
100  * Lookup message-ID base by name
101  */
102 define get_first_msg_id {
103     u32 client_index;
104     u32 context;
105     string name[64];
106 };
107
108 define get_first_msg_id_reply {
109     u32 context;
110     i32 retval;
111     u16 first_msg_id;
112 };
113
114 /*
115  * Get API version table (includes built-in and plugins)
116  */
117 typedef module_version {
118   u32 major;
119   u32 minor;
120   u32 patch;
121   string name[64];
122 };
123 define api_versions {
124   u32 client_index;
125   u32 context;
126 };
127 define api_versions_reply {
128   u32 context;
129   i32 retval;
130   u32 count;
131   vl_api_module_version_t api_versions[count];
132 };
133
134 /*
135  * Trace the plugin message-id allocator
136  * so we stand a chance of dealing with different sets of plugins
137  * at api trace replay time
138  */
139
140 manual_print define trace_plugin_msg_ids
141 {
142     u32 client_index;
143     u32 context;
144     string plugin_name[128];
145     u16 first_msg_id;
146     u16 last_msg_id;
147 };
148
149 typedef message_table_entry
150 {
151   u16 index;
152   string name[64];
153 };
154
155 /*
156  * Create a socket client registration. 
157  */
158 define sockclnt_create {
159     u32 context;                /* opaque value to be returned in the reply */
160     string name[64];                /* for show, find by name, whatever */
161 };
162
163 define sockclnt_create_reply {
164     u32 client_index;
165     u32 context;                /* opaque value from the create request */
166     i32 response;               /* Non-negative = success */
167     u32 index;                  /* index, used e.g. by API trace replay */
168     u16 count;
169     vl_api_message_table_entry_t message_table[count];
170 };
171
172 /*
173  * Delete a client registration 
174  */
175 define sockclnt_delete {
176     u32 client_index;
177     u32 context;
178     u32 index;                  /* index, used e.g. by API trace replay */
179 };
180
181 define sockclnt_delete_reply {
182     u32 context;
183     i32 response;               /* Non-negative = success */
184 };
185
186 /*
187  * Initialize shm api over socket api
188  */
189 autoreply define sock_init_shm {
190     u32 client_index;
191     u32 context;
192     u32 requested_size;
193     u8 nitems;
194     u64 configs[nitems];
195 };
196
197 /* define sock_init_shm_reply {
198     u32 client_index;
199     u32 context;
200     i32 retval;
201 }; */
202
203 /*
204  * Memory client ping / response
205  * Only sent on inactive connections
206  */
207 autoreply define memclnt_keepalive
208 {
209   u32 client_index;
210   u32 context;
211 };