]> xenbits.xensource.com Git - libvirt.git/commitdiff
Fix bridge.c warnings with gcc-4.4
authorMark McLoughlin <markmc@redhat.com>
Fri, 13 Feb 2009 19:10:55 +0000 (19:10 +0000)
committerMark McLoughlin <markmc@redhat.com>
Fri, 13 Feb 2009 19:10:55 +0000 (19:10 +0000)
 bridge.c: In function 'brSetInetAddr':
 bridge.c:665: error: dereferencing pointer '({anonymous})' does break strict-aliasing rules
 bridge.c:665: note: initialized from here
 bridge.c:666: error: dereferencing pointer '({anonymous})' does break strict-aliasing rules
 bridge.c:666: note: initialized from here

Fix qemud.c warnings with gcc-4.4

 qemud.c: In function ‘remoteListenTCP’:
 qemud.c:675: error: dereferencing pointer ‘sa.72’ does break strict-aliasing rules
 qemud.c:675: note: initialized from here
 qemud.c:678: error: dereferencing pointer ‘sa.73’ does break strict-aliasing rules
 qemud.c:678: note: initialized from here

ChangeLog
qemud/qemud.c
src/bridge.c

index bf1f7ae99134e2a4c764c38681abc81baf84e64a..7bc45627dcd2401238a6507e7e9c5e85ad06c32a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Fri Feb 13 19:03:30 IST 2009 Mark McLoughlin <markmc@redhat.com>
+
+       * qemud/qemud.c: fix gcc-4.4 warnings
+
+Fri Feb 13 19:03:25 IST 2009 Mark McLoughlin <markmc@redhat.com>
+
+       * src/bridge.c: fix gcc-4.4 warnings
+
 Fri Feb 13 16:50:35 GMT 2009 John Levon <john.levon@sun.com>
 
        * src/xend_internal.c: xend in 3.3 grew a couple of new options
index ca6357ca75271dc789185625680fdacd59ffe939..6cbba21955a55b5d118e3c1390d8d3d364bb3f59 100644 (file)
@@ -649,9 +649,16 @@ remoteListenTCP (struct qemud_server *server,
         return -1;
 
     for (i = 0; i < nfds; ++i) {
-        struct sockaddr_storage sa;
+        union {
+            struct sockaddr_storage sa_stor;
+            struct sockaddr sa;
+            struct sockaddr_in sa_in;
+#ifdef AF_INET6
+            struct sockaddr_in6 sa_in6;
+#endif
+        } s;
         char ebuf[1024];
-        socklen_t salen = sizeof(sa);
+        socklen_t salen = sizeof(s);
 
         if (VIR_ALLOC(sock) < 0) {
             VIR_ERROR(_("remoteListenTCP: calloc: %s"),
@@ -668,14 +675,14 @@ remoteListenTCP (struct qemud_server *server,
         sock->type = type;
         sock->auth = auth;
 
-        if (getsockname(sock->fd, (struct sockaddr *)(&sa), &salen) < 0)
+        if (getsockname(sock->fd, &s.sa, &salen) < 0)
             goto cleanup;
 
-        if (sa.ss_family == AF_INET)
-            sock->port = htons(((struct sockaddr_in*)&sa)->sin_port);
+        if (s.sa.sa_family == AF_INET) {
+            sock->port = htons(s.sa_in.sin_port);
 #ifdef AF_INET6
-        else if (sa.ss_family == AF_INET6)
-            sock->port = htons(((struct sockaddr_in6*)&sa)->sin6_port);
+        } else if (s.sa.sa_family == AF_INET6)
+            sock->port = htons(s.sa_in6.sin6_port);
 #endif
         else
             sock->port = -1;
index 990a5679d30092ff336d62d8de6e69d72a1612c4..fc1142966f87296e7f6849033fce4d6e9199e3af 100644 (file)
@@ -642,6 +642,10 @@ brSetInetAddr(brControl *ctl,
               int cmd,
               const char *addr)
 {
+    union {
+        struct sockaddr sa;
+        struct sockaddr_in sa_in;
+    } s;
     struct ifreq ifr;
     struct in_addr inaddr;
     int len, ret;
@@ -662,8 +666,10 @@ brSetInetAddr(brControl *ctl,
     else if (ret == 0)
         return EINVAL;
 
-    ((struct sockaddr_in *)&ifr.ifr_data)->sin_family = AF_INET;
-    ((struct sockaddr_in *)&ifr.ifr_data)->sin_addr   = inaddr;
+    s.sa_in.sin_family = AF_INET;
+    s.sa_in.sin_addr   = inaddr;
+
+    ifr.ifr_addr = s.sa;
 
     if (ioctl(ctl->fd, cmd, &ifr) < 0)
         return errno;