|
|
|
@ -45,7 +45,7 @@ namespace llarp
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
SendServerMessageBufferTo(
|
|
|
|
|
const SockAddr& from, const SockAddr& to, llarp_buffer_t buf) override
|
|
|
|
|
const SockAddr& to, const SockAddr& from, llarp_buffer_t buf) override
|
|
|
|
|
{
|
|
|
|
|
net::IPPacket pkt;
|
|
|
|
|
|
|
|
|
@ -76,15 +76,11 @@ namespace llarp
|
|
|
|
|
ptr += 2;
|
|
|
|
|
std::copy_n(buf.base, buf.sz, ptr);
|
|
|
|
|
|
|
|
|
|
/// queue ip packet write
|
|
|
|
|
const IpAddress remoteIP{from};
|
|
|
|
|
const IpAddress localIP{to};
|
|
|
|
|
|
|
|
|
|
hdr->check = 0;
|
|
|
|
|
hdr->check = net::ipchksum(pkt.buf, 20);
|
|
|
|
|
pkt.sz = 28 + buf.sz;
|
|
|
|
|
m_Endpoint->HandleWriteIPPacket(
|
|
|
|
|
pkt.ConstBuffer(), net::ExpandV4(remoteIP.toIP()), net::ExpandV4(localIP.toIP()), 0);
|
|
|
|
|
pkt.ConstBuffer(), net::ExpandV4(from.asIPv4()), net::ExpandV4(to.asIPv4()), 0);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
@ -102,8 +98,8 @@ namespace llarp
|
|
|
|
|
const uint8_t* ptr = pkt.buf + ip_header_size;
|
|
|
|
|
const auto dst = ToNet(pkt.dstv4());
|
|
|
|
|
const auto src = ToNet(pkt.srcv4());
|
|
|
|
|
const SockAddr raddr{src.n, *reinterpret_cast<const uint16_t*>(ptr)};
|
|
|
|
|
const SockAddr laddr{dst.n, *reinterpret_cast<const uint16_t*>(ptr + 2)};
|
|
|
|
|
const SockAddr laddr{src.n, *reinterpret_cast<const uint16_t*>(ptr)};
|
|
|
|
|
const SockAddr raddr{dst.n, *reinterpret_cast<const uint16_t*>(ptr + 2)};
|
|
|
|
|
|
|
|
|
|
OwnedBuffer buf{pkt.sz - (udp_header_size + ip_header_size)};
|
|
|
|
|
std::copy_n(ptr + udp_header_size, buf.sz, buf.buf.get());
|
|
|
|
|