diff options
Diffstat (limited to 'src/host/virt_phy/include/osmocom/bb/virtphy/osmo_mcast_sock.h')
-rw-r--r-- | src/host/virt_phy/include/osmocom/bb/virtphy/osmo_mcast_sock.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/host/virt_phy/include/osmocom/bb/virtphy/osmo_mcast_sock.h b/src/host/virt_phy/include/osmocom/bb/virtphy/osmo_mcast_sock.h new file mode 100644 index 00000000..aa2013c6 --- /dev/null +++ b/src/host/virt_phy/include/osmocom/bb/virtphy/osmo_mcast_sock.h @@ -0,0 +1,29 @@ +#pragma once + +#include <stdbool.h> +#include <stdint.h> +#include <netinet/in.h> +#include <osmocom/core/select.h> + +struct mcast_bidir_sock { + struct osmo_fd tx_ofd; + struct osmo_fd rx_ofd; +}; + +struct mcast_bidir_sock *mcast_bidir_sock_setup(void *ctx, + const char *tx_mcast_group, uint16_t tx_mcast_port, + const char *rx_mcast_group, uint16_t rx_mcast_port, bool loopback, + int (*fd_rx_cb)(struct osmo_fd *ofd, unsigned int what), + void *osmo_fd_data); + +int mcast_server_sock_setup(struct osmo_fd *ofd, const char *tx_mcast_group, + uint16_t tx_mcast_port, bool loopback); + +int mcast_client_sock_setup(struct osmo_fd *ofd, const char *mcast_group, uint16_t mcast_port, + int (*fd_rx_cb)(struct osmo_fd *ofd, unsigned int what), + void *osmo_fd_data); + +int mcast_bidir_sock_tx(struct mcast_bidir_sock *bidir_sock, const uint8_t *data, unsigned int data_len); +int mcast_bidir_sock_rx(struct mcast_bidir_sock *bidir_sock, uint8_t *buf, unsigned int buf_len); +void mcast_bidir_sock_close(struct mcast_bidir_sock* bidir_sock); + |