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