diff options
author | Martin Willi <martin@revosec.ch> | 2013-02-04 13:36:11 +0100 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2013-02-06 15:20:32 +0100 |
commit | 82c884c015ec8d868d3566e03801139cb7492051 (patch) | |
tree | f591b5976d2601b609ab98fc4a8697ceaa381d36 | |
parent | d830174e3c5d6fb0978384f43893ca9cfbe4e1e0 (diff) | |
download | strongswan-82c884c015ec8d868d3566e03801139cb7492051.tar.bz2 strongswan-82c884c015ec8d868d3566e03801139cb7492051.tar.xz |
Set sockaddr family on ifreq instead of casted familiy specific sockaddr
Fixes a strict-aliasing rule compiler warning with older gcc.
-rw-r--r-- | src/libstrongswan/networking/tun_device.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/libstrongswan/networking/tun_device.c b/src/libstrongswan/networking/tun_device.c index d07327e5c..1da87df05 100644 --- a/src/libstrongswan/networking/tun_device.c +++ b/src/libstrongswan/networking/tun_device.c @@ -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; |