lede-packages-rs

git clone git://archive.git.mtrnord.blog/MTRNord/lede-packages-rs.git
Log | Files | Refs | README | LICENSE

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