]> git.proxmox.com Git - mirror_frr.git/commitdiff
zebra: fix struct msghdr initializers
authorTimo Teräs <timo.teras@iki.fi>
Tue, 29 Jul 2014 09:41:55 +0000 (09:41 +0000)
committerDavid Lamparter <equinox@opensourcerouting.org>
Sun, 17 Aug 2014 23:50:23 +0000 (01:50 +0200)
struct msghdr field orders are not strictly specified in POSIX.
Improve portability by using designated initializer. This fixes
build against musl c-library where struct msghdr is POSIX
compliant (Linux kernel and glibc definitions are non-conforming).

As the result is also more readable, struct iovec initilizers
were also converted.

Signed-off-by: Timo Teräs <timo.teras@iki.fi>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
zebra/rt_netlink.c

index 452ea642187dd35014cba477a3daba97ebbfc970..95a82fd2e46ca461c0cb001ce909c36633bc7a00 100644 (file)
@@ -282,9 +282,17 @@ netlink_parse_info (int (*filter) (struct sockaddr_nl *, struct nlmsghdr *),
   while (1)
     {
       char buf[NL_PKT_BUF_SIZE];
-      struct iovec iov = { buf, sizeof buf };
+      struct iovec iov = {
+        .iov_base = buf,
+        .iov_len = sizeof buf
+      };
       struct sockaddr_nl snl;
-      struct msghdr msg = { (void *) &snl, sizeof snl, &iov, 1, NULL, 0, 0 };
+      struct msghdr msg = {
+        .msg_name = (void *) &snl,
+        .msg_namelen = sizeof snl,
+        .msg_iov = &iov,
+        .msg_iovlen = 1
+      };
       struct nlmsghdr *h;
 
       status = recvmsg (nl->sock, &msg, 0);
@@ -1312,8 +1320,16 @@ netlink_talk (struct nlmsghdr *n, struct nlsock *nl)
 {
   int status;
   struct sockaddr_nl snl;
-  struct iovec iov = { (void *) n, n->nlmsg_len };
-  struct msghdr msg = { (void *) &snl, sizeof snl, &iov, 1, NULL, 0, 0 };
+  struct iovec iov = {
+    .iov_base = (void *) n,
+    .iov_len = n->nlmsg_len
+  };
+  struct msghdr msg = {
+    .msg_name = (void *) &snl,
+    .msg_namelen = sizeof snl,
+    .msg_iov = &iov,
+    .msg_iovlen = 1,
+  };
   int save_errno;
 
   memset (&snl, 0, sizeof snl);