diff options
author | Dimitri Staessens <dimitri@ouroboros.rocks> | 2021-06-26 00:20:17 +0200 |
---|---|---|
committer | Sander Vrijders <sander@ouroboros.rocks> | 2021-06-28 15:29:16 +0200 |
commit | cb70b78c443de5f8b95c4469dd8eb7f77af880ed (patch) | |
tree | ae90c387087b5288fe4651db485c6cdd1ef80b7c /src/ipcpd/udp/main.c | |
parent | 2a46ecf6e64f1a725a3660ea03d6c9946e74de0f (diff) | |
download | ouroboros-cb70b78c443de5f8b95c4469dd8eb7f77af880ed.tar.gz ouroboros-cb70b78c443de5f8b95c4469dd8eb7f77af880ed.zip |
build: Fix compilation with fuse (RIB) on FreeBSD
Compilation failed on FreeBSD 14 with fuse enabled because of some
missing definitions. __XSI_VISIBLE must be set before including
<ouroboros/rib.h> for some definitions in <sys/stat.h>. FreeBSD
doesn't know the MSG_CONFIRM flag to sendto() or
CLOCK_REALTIME_COARSE, which are Linux-specific.
Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks>
Signed-off-by: Sander Vrijders <sander@ouroboros.rocks>
Diffstat (limited to 'src/ipcpd/udp/main.c')
-rw-r--r-- | src/ipcpd/udp/main.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/ipcpd/udp/main.c b/src/ipcpd/udp/main.c index 03de24ab..6a3fb24a 100644 --- a/src/ipcpd/udp/main.c +++ b/src/ipcpd/udp/main.c @@ -75,6 +75,12 @@ #define MGMT_FRAME_SIZE (sizeof(struct mgmt_msg)) #define MGMT_FRAME_BUF_SIZE 2048 +#ifdef __linux__ +#define SENDTO_FLAGS MSG_CONFIRM +#else +#define SENDTO_FLAGS 0 +#endif + struct ipcp ipcpi; /* Keep order for alignment. */ @@ -216,7 +222,7 @@ static int ipcp_udp_port_alloc(const struct sockaddr_in * r_saddr, memcpy(buf + len, data, dlen); if (sendto(udp_data.s_fd, msg, len + dlen, - MSG_CONFIRM, + SENDTO_FLAGS, (const struct sockaddr *) r_saddr, sizeof(*r_saddr)) < 0) { free(buf); return -1; @@ -249,7 +255,7 @@ static int ipcp_udp_port_alloc_resp(const struct sockaddr_in * r_saddr, memcpy(msg + 1, data, len); if (sendto(udp_data.s_fd, msg, sizeof(*msg) + len, - MSG_CONFIRM, + SENDTO_FLAGS, (const struct sockaddr *) r_saddr, sizeof(*r_saddr)) < 0 ) { free(msg); return -1; @@ -552,7 +558,7 @@ static void * ipcp_udp_packet_writer(void * o) pthread_cleanup_push(cleanup_sdb, sdb); if (sendto(udp_data.s_fd, buf, len + OUR_HEADER_LEN, - MSG_CONFIRM, + SENDTO_FLAGS, (const struct sockaddr *) &saddr, sizeof(saddr)) < 0) log_err("Failed to send packet."); |