diff --git a/src/asyncudplistener.cpp b/src/asyncudplistener.cpp index b157705..9e628c9 100644 --- a/src/asyncudplistener.cpp +++ b/src/asyncudplistener.cpp @@ -95,6 +95,7 @@ UdpPacketWrapper makeUdpPacketWrapper(pbufUniquePtr &&_pb, const ip_addr_t *radd const eth_hdr *ethHdr{}; //memcpy(&_remoteIp, raddr, sizeof(ip_addr_t)); + ip_addr_t _localAddr { .type = raddr->type }; ip_addr_t _remoteAddr { .type = raddr->type }; switch (_remoteAddr.type) @@ -114,8 +115,10 @@ UdpPacketWrapper makeUdpPacketWrapper(pbufUniquePtr &&_pb, const ip_addr_t *radd ethHdr = reinterpret_cast(payload - UDP_HLEN - IP6_HLEN - SIZEOF_ETH_HDR); const ip6_hdr *ip6hdr = reinterpret_cast(payload - UDP_HLEN - IP6_HLEN); - std::copy(std::cbegin(ip6hdr->dest.addr), std::cend(ip6hdr->dest.addr), std::begin(_localAddr.u_addr.ip6.addr)); - std::copy(std::cbegin(ip6hdr->src.addr), std::cend(ip6hdr->src.addr), std::begin(_remoteAddr.u_addr.ip6.addr)); + memcpy(&_localAddr.u_addr.ip6.addr, (uint8_t *)ip6hdr->dest.addr, 16); + memcpy(&_remoteAddr.u_addr.ip6.addr, (uint8_t *)ip6hdr->src.addr, 16); +// std::copy(std::cbegin(ip6hdr->dest.addr), std::cend(ip6hdr->dest.addr), std::begin(_localAddr.u_addr.ip6.addr)); +// std::copy(std::cbegin(ip6hdr->src.addr), std::cend(ip6hdr->src.addr), std::begin(_remoteAddr.u_addr.ip6.addr)); break; }