aboutsummaryrefslogtreecommitdiffstats
path: root/meta-oe/recipes-connectivity/zabbix/zabbix/0001-initialize-msghdr-portably.patch
blob: a7a1dc1986961b5e84b52943848fb03a6438f40d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
From 37b662cf44e14b33e93759d4b129d23095b41372 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 31 Aug 2022 23:55:02 -0700
Subject: [PATCH] initialize msghdr portably

on linux we have musl as an option for system C library and current
initialization assumes the structure to be same as glibc, therefore
initialize the elements of structure instead, so it can work on both
glibc and musl.

Fixes
net.c:115:79: error: incompatible pointer to integer conversion initializing 'int' with an expression of type 'void *' [-Wint-conversion]
        struct msghdr           s_msg = { (void *)&s_sa, sizeof(struct sockaddr_nl), s_io, 1, NULL, 0, 0};
                                                                                              ^~~~

Upstream-Status: Submitted [https://github.com/zabbix/zabbix/pull/77]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 src/libs/zbxsysinfo/linux/net.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/libs/zbxsysinfo/linux/net.c b/src/libs/zbxsysinfo/linux/net.c
index 1425a3604d..98f03de0dd 100644
--- a/src/libs/zbxsysinfo/linux/net.c
+++ b/src/libs/zbxsysinfo/linux/net.c
@@ -114,13 +114,21 @@ static int	find_tcp_port_by_state_nl(unsigned short port, int state, int *found)
 
 	struct sockaddr_nl	s_sa = { AF_NETLINK, 0, 0, 0 };
 	struct iovec		s_io[1] = { { &request, sizeof(request) } };
-	struct msghdr		s_msg = { (void *)&s_sa, sizeof(struct sockaddr_nl), s_io, 1, NULL, 0, 0};
+	struct msghdr		s_msg = { 0 };
+	s_msg.msg_name 		= (void *)&s_sa;
+	s_msg.msg_namelen 	= sizeof(struct sockaddr_nl);
+	s_msg.msg_iov 		= s_io;
+	s_msg.msg_iovlen 	= 1;
 
 	char			buffer[BUFSIZ] = { 0 };
 
 	struct sockaddr_nl	r_sa = { AF_NETLINK, 0, 0, 0 };
 	struct iovec		r_io[1] = { { buffer, BUFSIZ } };
-	struct msghdr		r_msg = { (void *)&r_sa, sizeof(struct sockaddr_nl), r_io, 1, NULL, 0, 0};
+	struct msghdr		r_msg = { 0 };
+	r_msg.msg_name 		= (void *)&r_sa;
+	r_msg.msg_namelen 	= sizeof(struct sockaddr_nl);
+	r_msg.msg_iov 		= r_io;
+	r_msg.msg_iovlen 	= 1;
 
 	struct nlmsghdr		*r_hdr;
 
-- 
2.37.3