try {
const auto* desc = xsk_ring_cons__rx_desc(&rx, idx++);
// NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast,performance-no-int-to-ptr)
- XskPacket packet = XskPacket(reinterpret_cast<uint8_t*>(desc->addr + baseAddr), desc->len, frameSize);
+ auto packet = XskPacket(reinterpret_cast<uint8_t*>(desc->addr + baseAddr), desc->len, frameSize);
#ifdef DEBUG_UMEM
checkUmemIntegrity(__PRETTY_FUNCTION__, __LINE__, sharedEmptyFrameOffset, frameOffset(packet), {UmemEntryStatus::Status::FillQueue}, UmemEntryStatus::Status::Received);
#endif /* DEBUG_UMEM */
catch (const std::exception& exp) {
++failed;
++processed;
- break;
+ continue;
}
catch (...) {
++failed;
++processed;
- break;
+ continue;
}
}
return v6;
}
-XskPacket::XskPacket(uint8_t* frame_, size_t dataSize, size_t frameSize_) :
+XskPacket::XskPacket(uint8_t* frame_, size_t dataSize, size_t frameSize_) noexcept :
frame(frame_), frameLength(dataSize), frameSize(frameSize_ - XDP_PACKET_HEADROOM)
{
}
/* Rewrite the headers, usually called after setAddr() then setPayload() */
void rewrite() noexcept;
void setHeader(PacketBuffer& buf);
- XskPacket(uint8_t* frame, size_t dataSize, size_t frameSize);
+ XskPacket(uint8_t* frame, size_t dataSize, size_t frameSize) noexcept;
void addDelay(int relativeMilliseconds) noexcept;
/* If the payload has been updated, and the headers have not been rewritten via rewrite() yet,
exchange the source and destination addresses (ethernet and IP) and rewrite the headers.