Source: https://github.com/OLSR/olsrd/pull/129/commits/46e14c71f957c5e577ea90ec9917b51103230225.patch This patch applies the second of two hunks. The first part is for a component that does not yet exist in version 0.9.8. ``` src/linux/kernel_routes_nl.c: In function 'rtnetlink_read': src/linux/kernel_routes_nl.c:164:5: error: initialization of 'int' from 'void *' makes integer from pointer without a cast [-Wint-conversion] 164 | NULL, | ^~~~ src/linux/kernel_routes_nl.c:164:5: note: (near initialization for 'msg.__pad1') ``` -- From 46e14c71f957c5e577ea90ec9917b51103230225 Mon Sep 17 00:00:00 2001 From: Rosen Penev <rosenp@gmail.com> Date: Sun, 9 Jun 2024 16:18:18 -0700 Subject: [PATCH] fix compilation with GCC14 the msghdr has padding in both glibc and musl. Initialize with names to avoid dealing with the padding. There's also a wrong struct type that's an error now. Signed-off-by: Rosen Penev <rosenp@gmail.com> --- diff --git a/src/linux/kernel_routes_nl.c b/src/linux/kernel_routes_nl.c index 1a2810da2..f21d6bbe1 100644 --- a/src/linux/kernel_routes_nl.c +++ b/src/linux/kernel_routes_nl.c @@ -157,13 +157,13 @@ static void rtnetlink_read(int sock, void *data __attribute__ ((unused)), unsign struct iovec iov; struct sockaddr_nl nladdr; struct msghdr msg = { - &nladdr, - sizeof(nladdr), - &iov, - 1, - NULL, - 0, - 0 + .msg_name = &nladdr, + .msg_namelen = sizeof(nladdr), + .msg_iov = &iov, + .msg_iovlen = 1, + .msg_control = NULL, + .msg_controllen = 0, + .msg_flags = 0, }; char buffer[4096];