101-0001-vrrp-update-struct-msghdr.patch (1611B)
1 From dbb2cac9139954bd18813e88bfcb622ad3e93c54 Mon Sep 17 00:00:00 2001 2 From: Stijn Tintel <stijn@linux-ipv6.be> 3 Date: Tue, 10 May 2016 04:26:31 +0300 4 Subject: [PATCH] vrrp: update struct msghdr 5 6 The vrrp netlink code assumes an order for the members of struct msghdr. 7 This breaks recvmsg and sendmsg with musl libc on mips64. Fix this by 8 using designated initializers instead. 9 10 Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be> 11 --- 12 keepalived/vrrp/vrrp_netlink.c | 15 ++++++++++++--- 13 1 file changed, 12 insertions(+), 3 deletions(-) 14 15 diff --git a/keepalived/vrrp/vrrp_netlink.c b/keepalived/vrrp/vrrp_netlink.c 16 index b19e2e7..2c2fd59 100644 17 --- a/keepalived/vrrp/vrrp_netlink.c 18 +++ b/keepalived/vrrp/vrrp_netlink.c 19 @@ -416,8 +416,12 @@ netlink_parse_info(int (*filter) (struct sockaddr_nl *, struct nlmsghdr *), 20 char buf[4096]; 21 struct iovec iov = { buf, sizeof buf }; 22 struct sockaddr_nl snl; 23 - struct msghdr msg = 24 - { (void *) &snl, sizeof snl, &iov, 1, NULL, 0, 0 }; 25 + struct msghdr msg = { 26 + .msg_name = &snl, 27 + .msg_namelen = sizeof(snl), 28 + .msg_iov = &iov, 29 + .msg_iovlen = 1, 30 + }; 31 struct nlmsghdr *h; 32 33 status = recvmsg(nl->fd, &msg, 0); 34 @@ -538,7 +542,12 @@ netlink_talk(nl_handle_t *nl, struct nlmsghdr *n) 35 int ret, flags; 36 struct sockaddr_nl snl; 37 struct iovec iov = { (void *) n, n->nlmsg_len }; 38 - struct msghdr msg = { (void *) &snl, sizeof snl, &iov, 1, NULL, 0, 0 }; 39 + struct msghdr msg = { 40 + .msg_name = &snl, 41 + .msg_namelen = sizeof(snl), 42 + .msg_iov = &iov, 43 + .msg_iovlen = 1, 44 + }; 45 46 memset(&snl, 0, sizeof snl); 47 snl.nl_family = AF_NETLINK; 48 -- 49 2.10.2 50