diff --git a/src/net_hi.c b/src/net_hi.c index 441ca29..cbd787d 100644 --- a/src/net_hi.c +++ b/src/net_hi.c @@ -112,16 +112,18 @@ void net_hi_update(double now) { } static void stoonpeer_to_enets(const char *peercode, ENetAddress *v4, ENetAddress *v6, int *mask) { - memset(v4->host.__in6_u.__u6_addr8, 0, 16); - v4->host.__in6_u.__u6_addr8[10] = 0xFF; - v4->host.__in6_u.__u6_addr8[11] = 0xFF; - v4->host.__in6_u.__u6_addr8[12] = peercode[0]; - v4->host.__in6_u.__u6_addr8[13] = peercode[1]; - v4->host.__in6_u.__u6_addr8[14] = peercode[2]; - v4->host.__in6_u.__u6_addr8[15] = peercode[3]; + uint8_t *addr8 = (uint8_t*) &v4->host; + + memset(addr8, 0, 16); + addr8[10] = 0xFF; + addr8[11] = 0xFF; + addr8[12] = peercode[0]; + addr8[13] = peercode[1]; + addr8[14] = peercode[2]; + addr8[15] = peercode[3]; v4->port = ntohs(*(uint16_t*) &peercode[4]); - memcpy(v6->host.__in6_u.__u6_addr8, peercode + 6, 16); + memcpy(&v6->host, peercode + 6, 16); v6->port = ntohs(*(uint16_t*) &peercode[22]); *mask = 0;