tun: fix "fix "clear src/dst addresses and checksum before sending""

correct dst address is required for FlushSend to work, so do IP address and checksum null'ing there.
dang myself.
pull/21/head
cathugger 6 years ago
parent 4f7ae52cad
commit 0f8e0e9d58

@ -307,6 +307,13 @@ namespace llarp
inet_ntoa({htonl(pkt.dst())}));
return true;
}
// prepare packet for insertion into network
pkt.UpdateChecksumsOnSrc();
// clear addresses
pkt.src(0);
pkt.dst(0);
if(!SendToOrQueue(itr->second, pkt.Buffer(), service::eProtocolTraffic))
{
llarp::LogWarn(Name(), " did not flush packets");
@ -462,15 +469,8 @@ namespace llarp
llarp::LogDebug("got pkt ", sz, " bytes");
if(!self->m_UserToNetworkPktQueue.EmplaceIf(
[self, buf, sz](net::IPv4Packet &pkt) -> bool {
if(!pkt.Load(llarp::InitBuffer(buf, sz))
|| pkt.Header()->version != 4)
return false;
// prepare packet for insertion into network
pkt.UpdateChecksumsOnSrc();
// clear addresses
pkt.src(0);
pkt.dst(0);
return true;
return pkt.Load(llarp::InitBuffer(buf, sz))
&& pkt.Header()->version == 4;
}))
{
llarp::LogInfo("Failed to parse ipv4 packet");

Loading…
Cancel
Save