xref: /openbmc/libpldm/src/transport/transport.h (revision efb40069)
1 /* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later */
2 #ifndef LIBPLDM_SRC_TRANSPORT_TRANSPORT_H
3 #define LIBPLDM_SRC_TRANSPORT_TRANSPORT_H
4 
5 #include <libpldm/base.h>
6 #include <libpldm/pldm.h>
7 struct pollfd;
8 
9 /**
10  * @brief Generic PLDM transport struct
11  *
12  * @var name - name of the transport
13  * @var version - version of transport to use
14  * @var recv - pointer to the transport specific function to receive a message
15  * @var send - pointer to the transport specific function to send a message
16  * @var init_pollfd - pointer to the transport specific init_pollfd function
17  */
18 struct pldm_transport {
19 	const char *name;
20 	uint8_t version;
21 	pldm_requester_rc_t (*recv)(struct pldm_transport *transport,
22 				    pldm_tid_t *tid, void **pldm_resp_msg,
23 				    size_t *msg_len);
24 	pldm_requester_rc_t (*send)(struct pldm_transport *transport,
25 				    pldm_tid_t tid, const void *pldm_msg,
26 				    size_t msg_len);
27 	int (*init_pollfd)(struct pldm_transport *transport,
28 			   struct pollfd *pollfd);
29 };
30 
31 #endif // LIBPLDM_SRC_TRANSPORT_TRANSPORT_H
32