]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
Set sockaddr family on ifreq instead of casted familiy specific sockaddr
authorMartin Willi <martin@revosec.ch>
Mon, 4 Feb 2013 12:36:11 +0000 (13:36 +0100)
committerMartin Willi <martin@revosec.ch>
Wed, 6 Feb 2013 14:20:32 +0000 (15:20 +0100)
Fixes a strict-aliasing rule compiler warning with older gcc.

src/libstrongswan/networking/tun_device.c

index d07327e5c25b402ae6df1ca306de37215d37969c..1da87df05125918bd85be5be331f5127ba7a756b 100644 (file)
@@ -88,7 +88,6 @@ static void set_netmask(struct ifreq *ifr, int family, u_int8_t netmask)
                case AF_INET:
                {
                        struct sockaddr_in *addr = (struct sockaddr_in*)&ifr->ifr_addr;
-                       addr->sin_family = AF_INET;
                        target = (char*)&addr->sin_addr;
                        len = 4;
                        break;
@@ -96,7 +95,6 @@ static void set_netmask(struct ifreq *ifr, int family, u_int8_t netmask)
                case AF_INET6:
                {
                        struct sockaddr_in6 *addr = (struct sockaddr_in6*)&ifr->ifr_addr;
-                       addr->sin6_family = AF_INET6;
                        target = (char*)&addr->sin6_addr;
                        len = 16;
                        break;
@@ -105,6 +103,8 @@ static void set_netmask(struct ifreq *ifr, int family, u_int8_t netmask)
                        return;
        }
 
+       ifr->ifr_addr.sa_family = family;
+
        bytes = (netmask + 7) / 8;
        bits = (bytes * 8) - netmask;