static bool set_address_v6(private_tun_device_t *this, host_t *addr,
uint8_t netmask)
{
+ struct sockaddr_in6 *sin6;
struct in6_ifreq ifr6 = {0};
struct ifreq ifr = {0};
return FALSE;
}
- memcpy(&ifr6.ifr6_addr, addr->get_sockaddr(addr),
- *addr->get_sockaddr_len(addr));
+ sin6 = (struct sockaddr_in6*)addr->get_sockaddr(addr);
+ memcpy(&ifr6.ifr6_addr, &sin6->sin6_addr, sizeof(ifr6.ifr6_addr));
ifr6.ifr6_prefixlen = netmask;
ifr6.ifr6_ifindex = ifr.ifr_ifindex;
if (ioctl(this->sock_v6, SIOCSIFADDR, &ifr6) < 0)