diff --git a/clatd.c b/clatd.c
index e7f9899..d1bfa5e 100644
--- a/clatd.c
+++ b/clatd.c
@@ -127,13 +127,14 @@
     }
   }
 
-  if (readlen < sizeof(struct virtio_net_hdr) + tp_net) {
-    logmsg(ANDROID_LOG_WARN, "%s: ignoring %zd byte pkt shorter than %zu+%u L2 header",
-           __func__, readlen, sizeof(struct virtio_net_hdr), tp_net);
+  const int payload_offset = offsetof(typeof(buf), payload);
+  if (readlen < payload_offset + tp_net) {
+    logmsg(ANDROID_LOG_WARN, "%s: ignoring %zd byte pkt shorter than %d+%u L2 header",
+           __func__, readlen, payload_offset, tp_net);
     return;
   }
 
-  const int pkt_len = readlen - sizeof(struct virtio_net_hdr);
+  const int pkt_len = readlen - payload_offset;
 
   // This will detect a skb->ip_summed == CHECKSUM_PARTIAL packet with non-final L4 checksum
   if (tp_status & TP_STATUS_CSUMNOTREADY) {
@@ -186,11 +187,15 @@
     return;
   }
 
-  if (readlen < (ssize_t)sizeof(buf.pi)) {
+  const int payload_offset = offsetof(typeof(buf), payload);
+
+  if (readlen < payload_offset) {
     logmsg(ANDROID_LOG_WARN, "%s: short read: got %ld bytes", __func__, readlen);
     return;
   }
 
+  const int pkt_len = readlen - payload_offset;
+
   uint16_t proto = ntohs(buf.pi.proto);
   if (proto != ETH_P_IP) {
     logmsg(ANDROID_LOG_WARN, "%s: unknown packet type = 0x%x", __func__, proto);
@@ -201,8 +206,7 @@
     logmsg(ANDROID_LOG_WARN, "%s: unexpected flags = %d", __func__, buf.pi.flags);
   }
 
-  readlen -= sizeof(buf.pi);
-  translate_packet(tunnel->write_fd6, 1 /* to_ipv6 */, buf.payload, readlen);
+  translate_packet(tunnel->write_fd6, 1 /* to_ipv6 */, buf.payload, pkt_len);
 }
 
 // IPv6 DAD packet format:
