summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNathan Moos <nmoos@cisco.com>2021-01-15 16:45:14 -0800
committerDamjan Marion <dmarion@me.com>2021-01-21 13:08:57 +0000
commit323418dd1c7825d38e8b1f83d5a8c23766a26de2 (patch)
tree8db40b41eccf9e122e3ec25637e4ce94edca6e9d
parent1523c96deb2bc2f03e7823be4545342309da18fc (diff)
vppinfra: ensure _GNU_SOURCE is present
Type: fix When building with musl, _GNU_SOURCE is required to be defined in more places. This patch defines it in those required places. Additionally, this patch changes the udphdr field names to the standard names. Change-Id: I0fec54214ccc8458289176488afb4218761e9d51 Signed-off-by: Nathan Moos <nmoos@cisco.com>
-rw-r--r--src/vppinfra/socket.c6
-rw-r--r--src/vppinfra/unix-formats.c13
2 files changed, 13 insertions, 6 deletions
diff --git a/src/vppinfra/socket.c b/src/vppinfra/socket.c
index 32260614942..3271393529d 100644
--- a/src/vppinfra/socket.c
+++ b/src/vppinfra/socket.c
@@ -38,6 +38,7 @@
#include <stdio.h>
#include <string.h> /* strchr */
#define __USE_GNU
+#define _GNU_SOURCE
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
@@ -54,6 +55,11 @@
#include <vppinfra/format.h>
#include <vppinfra/error.h>
+#ifndef __GLIBC__
+/* IPPORT_USERRESERVED is not part of musl libc. */
+#define IPPORT_USERRESERVED 5000
+#endif
+
__clib_export void
clib_socket_tx_add_formatted (clib_socket_t * s, char *fmt, ...)
{
diff --git a/src/vppinfra/unix-formats.c b/src/vppinfra/unix-formats.c
index fd0539c7d2b..678700e6129 100644
--- a/src/vppinfra/unix-formats.c
+++ b/src/vppinfra/unix-formats.c
@@ -50,7 +50,6 @@
#define _GNU_SOURCE /* to get REG_* in ucontext.h */
#include <ucontext.h>
-#undef _GNU_SOURCE
#undef __USE_GNU
#include <unistd.h>
@@ -317,11 +316,13 @@ u8 * format_udp4_packet (u8 * s, va_list * args)
struct iphdr * ip = (void *) p;
struct udphdr * udp = (void *) (ip + 1);
- s = format (s, "udp %U:%U -> %U:%U",
- format_network_address, AF_INET, &ip->saddr,
- format_network_port, IPPROTO_UDP, ntohs (udp->source),
- format_network_address, AF_INET, &ip->daddr,
- format_network_port, IPPROTO_UDP, ntohs (udp->dest));
+ u16 source = udp->uh_sport;
+ u16 dest = udp->uh_dport;
+
+ s = format (s, "udp %U:%U -> %U:%U", format_network_address, AF_INET,
+ &ip->saddr, format_network_port, IPPROTO_UDP, ntohs (source),
+ format_network_address, AF_INET, &ip->daddr, format_network_port,
+ IPPROTO_UDP, ntohs (dest));
return s;
}