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

clearing of addresses and checksum was put in wrong place, so it null'd everything before writing to tun interface.
damnit jeff.
pull/21/head
cathugger 6 years ago
parent ed39cb98e1
commit 4f7ae52cad

@ -440,12 +440,6 @@ namespace llarp
// called in the isolated network thread
TunEndpoint *self = static_cast< TunEndpoint * >(tun->user);
self->m_NetworkToUserPktQueue.Process([self, tun](net::IPv4Packet &pkt) {
// prepare packet for insertion into network
pkt.UpdateChecksumsOnSrc();
// clear addresses
pkt.src(0);
pkt.dst(0);
if(!llarp_ev_tun_async_write(tun, pkt.buf, pkt.sz))
llarp::LogWarn("packet dropped");
});
@ -468,8 +462,15 @@ namespace llarp
llarp::LogDebug("got pkt ", sz, " bytes");
if(!self->m_UserToNetworkPktQueue.EmplaceIf(
[self, buf, sz](net::IPv4Packet &pkt) -> bool {
return pkt.Load(llarp::InitBuffer(buf, sz))
&& pkt.Header()->version == 4;
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;
}))
{
llarp::LogInfo("Failed to parse ipv4 packet");

Loading…
Cancel
Save