diff --git a/sys/net/gnrc/network_layer/ipv6/whitelist/gnrc_ipv6_whitelist.c b/sys/net/gnrc/network_layer/ipv6/whitelist/gnrc_ipv6_whitelist.c
index d2beae522469b90fcbfa97ce919a868663126137..6cfa72c06a61e3acd7a17cb8e8566cf6a43bc96e 100644
--- a/sys/net/gnrc/network_layer/ipv6/whitelist/gnrc_ipv6_whitelist.c
+++ b/sys/net/gnrc/network_layer/ipv6/whitelist/gnrc_ipv6_whitelist.c
@@ -13,6 +13,7 @@
  * @author Martine Lenders <mlenders@inf.fu-berlin.de>
  */
 
+#include <string.h>
 #include "bitfield.h"
 
 #include "net/gnrc/ipv6/whitelist.h"
@@ -32,8 +33,7 @@ int gnrc_ipv6_whitelist_add(const ipv6_addr_t *addr)
     for (int i = 0; i < GNRC_IPV6_WHITELIST_SIZE; i++) {
         if (!bf_isset(gnrc_ipv6_whitelist_set, i)) {
             bf_set(gnrc_ipv6_whitelist_set, i);
-            gnrc_ipv6_whitelist[i].u64[0].u64 = addr->u64[0].u64;
-            gnrc_ipv6_whitelist[i].u64[1].u64 = addr->u64[1].u64;
+            memcpy(&gnrc_ipv6_whitelist[i], addr, sizeof(*addr));
             DEBUG("IPv6 whitelist: whitelisted %s\n",
                   ipv6_addr_to_str(addr_str, addr, sizeof(addr_str)));
             return 0;