FD.io VPP
v19.01.3-6-g70449b9b9
Vector Packet Processing
socket_api.h
Go to the documentation of this file.
1
/*
2
*------------------------------------------------------------------
3
* Copyright (c) 2018 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
18
#ifndef SRC_VLIBMEMORY_SOCKET_API_H_
19
#define SRC_VLIBMEMORY_SOCKET_API_H_
20
21
#include <
vlibapi/api_common.h
>
22
#include <
svm/ssvm.h
>
23
#include <
vppinfra/file.h
>
24
25
#define API_SOCKET_FILE "/run/vpp-api.sock"
26
27
typedef
struct
28
{
29
clib_file_t
*
clib_file
;
30
vl_api_registration_t
*
regp
;
31
u8
*
data
;
32
}
vl_socket_args_for_process_t
;
33
34
typedef
struct
35
{
36
/* Server port number */
37
u8
*
socket_name
;
38
39
/* By default, localhost... */
40
u32
bind_address
;
41
42
/*
43
* (listen, server, client) registrations. Shared memory
44
* registrations are in shared memory
45
*/
46
vl_api_registration_t
*
registration_pool
;
47
/*
48
* Chain-drag variables, so message API handlers
49
* (generally) don't know whether they're talking to a socket
50
* or to a shared-memory connection.
51
*/
52
vl_api_registration_t
*
current_rp
;
53
clib_file_t
*
current_uf
;
54
/* One input buffer, shared across all sockets */
55
i8
*
input_buffer
;
56
57
/* pool of process args for socket clients */
58
vl_socket_args_for_process_t
*
process_args
;
59
60
/* Listen for API connections here */
61
clib_socket_t
socksvr_listen_socket
;
62
}
socket_main_t
;
63
64
extern
socket_main_t
socket_main
;
65
66
void
vl_socket_free_registration_index
(
u32
pool_index);
67
clib_error_t
*
vl_socket_read_ready
(
struct
clib_file
*uf);
68
clib_error_t
*
vl_socket_write_ready
(
struct
clib_file
*uf);
69
void
vl_socket_api_send
(
vl_api_registration_t
* rp,
u8
* elem);
70
void
vl_socket_process_api_msg
(
clib_file_t
* uf,
vl_api_registration_t
* rp,
71
i8
* input_v);
72
void
vl_sock_api_dump_clients
(
vlib_main_t
*
vm
,
api_main_t
* am);
73
clib_error_t
*
vl_sock_api_init
(
vlib_main_t
*
vm
);
74
clib_error_t
*
vl_sock_api_send_fd_msg
(
int
socket_fd,
int
fds[],
int
n_fds);
75
clib_error_t
*
vl_sock_api_recv_fd_msg
(
int
socket_fd,
int
fds[],
int
n_fds,
76
u32
wait);
77
78
vl_api_registration_t
*
vl_socket_api_client_handle_to_registration
(
u32
idx);
79
u8
vl_socket_api_registration_handle_is_valid
(
u32
reg_index);
80
81
#endif
/* SRC_VLIBMEMORY_SOCKET_API_H_ */
82
83
/*
84
* fd.io coding-style-patch-verification: ON
85
*
86
* Local Variables:
87
* eval: (c-set-style "gnu")
88
* End:
89
*/
vl_socket_args_for_process_t::regp
vl_api_registration_t * regp
Definition:
socket_api.h:30
vl_socket_free_registration_index
void vl_socket_free_registration_index(u32 pool_index)
Definition:
socket_api.c:169
socket_main_t::registration_pool
vl_api_registration_t * registration_pool
Definition:
socket_api.h:46
vl_socket_process_api_msg
void vl_socket_process_api_msg(clib_file_t *uf, vl_api_registration_t *rp, i8 *input_v)
Definition:
socket_api.c:193
vl_sock_api_dump_clients
void vl_sock_api_dump_clients(vlib_main_t *vm, api_main_t *am)
Definition:
socket_api.c:72
vl_socket_read_ready
clib_error_t * vl_socket_read_ready(struct clib_file *uf)
Definition:
socket_api.c:207
socket_main_t::current_rp
vl_api_registration_t * current_rp
Definition:
socket_api.h:52
socket_main_t::process_args
vl_socket_args_for_process_t * process_args
Definition:
socket_api.h:58
vl_socket_args_for_process_t::clib_file
clib_file_t * clib_file
Definition:
socket_api.h:29
u8
unsigned char u8
Definition:
types.h:56
vl_sock_api_recv_fd_msg
clib_error_t * vl_sock_api_recv_fd_msg(int socket_fd, int fds[], int n_fds, u32 wait)
Definition:
socket_client.c:200
file.h
vl_socket_args_for_process_t::data
u8 * data
Definition:
socket_api.h:31
u32
unsigned int u32
Definition:
types.h:88
socket_main_t::socket_name
u8 * socket_name
Definition:
socket_api.h:37
socket_main_t::bind_address
u32 bind_address
Definition:
socket_api.h:40
vl_socket_write_ready
clib_error_t * vl_socket_write_ready(struct clib_file *uf)
Definition:
socket_api.c:319
vl_socket_api_client_handle_to_registration
vl_api_registration_t * vl_socket_api_client_handle_to_registration(u32 idx)
Definition:
socket_api.c:99
socket_main_t::current_uf
clib_file_t * current_uf
Definition:
socket_api.h:53
i8
signed char i8
Definition:
types.h:45
ssvm.h
api_main_t
API main structure, used by both vpp and binary API clients.
Definition:
api_common.h:202
vl_socket_args_for_process_t
Definition:
socket_api.h:27
vl_api_registration_
An API client registration, only in vpp/vlib.
Definition:
api_common.h:45
vm
vlib_main_t * vm
Definition:
buffer.c:301
socket_main_t::socksvr_listen_socket
clib_socket_t socksvr_listen_socket
Definition:
socket_api.h:61
socket_main_t
Definition:
socket_api.h:34
vl_socket_api_registration_handle_is_valid
u8 vl_socket_api_registration_handle_is_valid(u32 reg_index)
Definition:
socket_api.c:66
clib_socket_t
struct _socket_t clib_socket_t
socket_main
socket_main_t socket_main
Definition:
socket_api.c:48
clib_error_t
Definition:
clib_error.h:21
vlib_main_t
Definition:
main.h:61
socket_main_t::input_buffer
i8 * input_buffer
Definition:
socket_api.h:55
vl_sock_api_send_fd_msg
clib_error_t * vl_sock_api_send_fd_msg(int socket_fd, int fds[], int n_fds)
Definition:
socket_api.c:495
api_common.h
clib_file
Definition:
file.h:51
vl_socket_api_send
void vl_socket_api_send(vl_api_registration_t *rp, u8 *elem)
Definition:
socket_api.c:114
vl_sock_api_init
clib_error_t * vl_sock_api_init(vlib_main_t *vm)
Definition:
socket_api.c:683
src
vlibmemory
socket_api.h
Generated on Mon Nov 25 2019 16:00:42 for FD.io VPP by
1.8.13