xref: /openbmc/libpldm/src/transport/transport.h (revision 691668fe7662d779e6fd000e6e8e6aa7f3c8b17c)
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/requester/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