]> xenbits.xensource.com Git - libvirt.git/commitdiff
network: selectively disable -Wcast-align in virNetDevParseDadStatus
authorIan Campbell <ian.campbell@citrix.com>
Thu, 26 Nov 2015 15:10:12 +0000 (15:10 +0000)
committerJim Fehlig <jfehlig@suse.com>
Wed, 2 Dec 2015 15:07:22 +0000 (08:07 -0700)
Commit 0f7436ca54c9 "network: wait for DAD to finish for bridge IPv6 addresses"
results in:

 CC     util/libvirt_util_la-virnetdevmacvlan.lo
util/virnetdev.c: In function 'virNetDevParseDadStatus':
util/virnetdev.c:1319:188: error: cast increases required alignment of target type [-Werror=cast-align]
util/virnetdev.c:1332:41: error: cast increases required alignment of target type [-Werror=cast-align]
util/virnetdev.c:1334:92: error: cast increases required alignment of target type [-Werror=cast-align]
cc1: all warnings being treated as errors

on at least ARM platforms.

The three macros involved (NLMSG_NEXT, IFA_RTA and RTA_NEXT) all appear to
correctly take care of alignment, therefore suppress Wcast-align around their
uses.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Cc: Maxim Perevedentsev <mperevedentsev@virtuozzo.com>
Cc: Laine Stump <laine@laine.org>
Cc: Dario Faggioli <dario.faggioli@citrix.com>
Cc: Jim Fehlig <jfehlig@suse.com>
src/util/virnetdev.c

index e7f44cdd24ac1634f3cd15c9092b51a6058ce822..6f3e68170bf948c25bd67d430b51b25574ead212 100644 (file)
@@ -1316,7 +1316,10 @@ virNetDevParseDadStatus(struct nlmsghdr *nlh, int len,
     struct rtattr *rtattr_ptr;
     size_t i;
     struct in6_addr *addr;
+
+    VIR_WARNINGS_NO_CAST_ALIGN
     for (; NLMSG_OK(nlh, len); nlh = NLMSG_NEXT(nlh, len)) {
+    VIR_WARNINGS_RESET
         if (NLMSG_PAYLOAD(nlh, 0) < sizeof(struct ifaddrmsg)) {
             /* Message without payload is the last one. */
             break;
@@ -1329,9 +1332,11 @@ virNetDevParseDadStatus(struct nlmsghdr *nlh, int len,
         }
 
         ifaddrmsg_len = IFA_PAYLOAD(nlh);
+        VIR_WARNINGS_NO_CAST_ALIGN
         rtattr_ptr = (struct rtattr *) IFA_RTA(ifaddrmsg_ptr);
         for (; RTA_OK(rtattr_ptr, ifaddrmsg_len);
             rtattr_ptr = RTA_NEXT(rtattr_ptr, ifaddrmsg_len)) {
+            VIR_WARNINGS_RESET
             if (RTA_PAYLOAD(rtattr_ptr) != sizeof(struct in6_addr)) {
                 /* No address: ignore. */
                 continue;