]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
dnsdist: Consistenly use `getL4HeaderOffset()` in our XSK code 16521/head
authorRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 5 Dec 2025 09:22:12 +0000 (10:22 +0100)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 5 Dec 2025 09:23:42 +0000 (10:23 +0100)
Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
pdns/dnsdistdist/xsk.cc

index 8aeb7913f591689ebbd06b61690ec92e7801d299..c45fafd5ed86e22a91e1a44148cfc5fcdce355c0 100644 (file)
@@ -626,7 +626,7 @@ void XskPacket::setIPv6Header(const ipv6hdr& ipv6Header) noexcept
 [[nodiscard]] udphdr XskPacket::getUDPHeader() const noexcept
 {
   udphdr udpHeader{};
-  const size_t neededRoom = sizeof(ethhdr) + (v6 ? sizeof(ipv6hdr) : sizeof(iphdr)) + sizeof(udpHeader);
+  const size_t neededRoom = getL4HeaderOffset() + sizeof(udpHeader);
   assert(frameSize >= neededRoom);
   if (frameLength >= neededRoom) {
     // NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-pointer-arithmetic)
@@ -637,10 +637,10 @@ void XskPacket::setIPv6Header(const ipv6hdr& ipv6Header) noexcept
 
 void XskPacket::setUDPHeader(const udphdr& udpHeader) noexcept
 {
-  const size_t neededRoom = sizeof(ethhdr) + (v6 ? sizeof(ipv6hdr) : sizeof(iphdr)) + sizeof(udpHeader);
+  const size_t neededRoom = getL4HeaderOffset() + sizeof(udpHeader);
   assert(frameSize >= neededRoom);
   if (frameLength < neededRoom) {
-    frameLength = sizeof(ethhdr) + (v6 ? sizeof(ipv6hdr) : sizeof(iphdr)) + sizeof(udpHeader);
+    frameLength = getL4HeaderOffset() + sizeof(udpHeader);
   }
   // NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-pointer-arithmetic)
   memcpy(frame + getL4HeaderOffset(), &udpHeader, sizeof(udpHeader));