diff a/src/java.base/linux/classes/jdk/internal/ffi/generated/iouring/in6_addr.java b/src/java.base/linux/classes/jdk/internal/ffi/generated/iouring/in6_addr.java
--- /dev/null
+++ b/src/java.base/linux/classes/jdk/internal/ffi/generated/iouring/in6_addr.java
@@ -0,0 +1,204 @@
+// Generated by jextract
+
+package jdk.internal.ffi.generated.iouring;
+
+import java.lang.invoke.*;
+import java.lang.foreign.*;
+import java.nio.ByteOrder;
+import java.util.*;
+import java.util.function.*;
+import java.util.stream.*;
+
+import static java.lang.foreign.ValueLayout.*;
+import static java.lang.foreign.MemoryLayout.PathElement.*;
+
+/**
+ * {@snippet lang=c :
+ * struct in6_addr {
+ *     union {
+ *         uint8_t __u6_addr8[16];
+ *         uint16_t __u6_addr16[8];
+ *         uint32_t __u6_addr32[4];
+ *     } __in6_u;
+ * }
+ * }
+ */
+@SuppressWarnings("restricted") public class in6_addr {
+
+    in6_addr() {
+        // Suppresses public default constructor, ensuring non-instantiability,
+        // but allows generated subclasses in same package.
+    }
+
+    private static final GroupLayout $LAYOUT = MemoryLayout.structLayout(
+        in6_addr.__in6_u.$LAYOUT().withName("__in6_u")
+    ).withName("in6_addr");
+
+    public static final GroupLayout $LAYOUT() {
+        return $LAYOUT;
+    }
+
+    /**
+     * {@snippet lang=c :
+     * union {
+     *     uint8_t __u6_addr8[16];
+     *     uint16_t __u6_addr16[8];
+     *     uint32_t __u6_addr32[4];
+     * }
+     * }
+     */
+    public static class __in6_u {
+
+        __in6_u() {
+            // Suppresses public default constructor, ensuring non-instantiability,
+            // but allows generated subclasses in same package.
+        }
+
+        private static final GroupLayout $LAYOUT = MemoryLayout.unionLayout(
+            MemoryLayout.sequenceLayout(16, iouring_h.C_CHAR).withName("__u6_addr8"),
+            MemoryLayout.sequenceLayout(8, iouring_h.C_SHORT).withName("__u6_addr16"),
+            MemoryLayout.sequenceLayout(4, iouring_h.C_INT).withName("__u6_addr32")
+        ).withName("$anon$223:5");
+
+        public static final GroupLayout $LAYOUT() {
+            return $LAYOUT;
+        }
+
+        private static final long __u6_addr8$OFFSET = 0;
+        private static final long __u6_addr8$SIZE = 16;
+
+        /**
+         * Getter for field:
+         * {@snippet lang=c :
+         * uint8_t __u6_addr8[16]
+         * }
+         */
+        public static MemorySegment __u6_addr8(MemorySegment union) {
+            return union.asSlice(__u6_addr8$OFFSET, __u6_addr8$SIZE);
+        }
+
+        /**
+         * Setter for field:
+         * {@snippet lang=c :
+         * uint8_t __u6_addr8[16]
+         * }
+         */
+        public static void __u6_addr8(MemorySegment union, MemorySegment fieldValue) {
+            MemorySegment.copy(fieldValue, 0L, union, __u6_addr8$OFFSET, __u6_addr8$SIZE);
+        }
+
+        private static final long __u6_addr16$OFFSET = 0;
+        private static final long __u6_addr16$SIZE = 16;
+
+        /**
+         * Getter for field:
+         * {@snippet lang=c :
+         * uint16_t __u6_addr16[8]
+         * }
+         */
+        public static MemorySegment __u6_addr16(MemorySegment union) {
+            return union.asSlice(__u6_addr16$OFFSET, __u6_addr16$SIZE);
+        }
+
+        /**
+         * Setter for field:
+         * {@snippet lang=c :
+         * uint16_t __u6_addr16[8]
+         * }
+         */
+        public static void __u6_addr16(MemorySegment union, MemorySegment fieldValue) {
+            MemorySegment.copy(fieldValue, 0L, union, __u6_addr16$OFFSET, __u6_addr16$SIZE);
+        }
+
+        private static final long __u6_addr32$OFFSET = 0;
+        private static final long __u6_addr32$SIZE = 16;
+
+        /**
+         * Getter for field:
+         * {@snippet lang=c :
+         * uint32_t __u6_addr32[4]
+         * }
+         */
+        public static MemorySegment __u6_addr32(MemorySegment union) {
+            return union.asSlice(__u6_addr32$OFFSET, __u6_addr32$SIZE);
+        }
+
+        /**
+         * Setter for field:
+         * {@snippet lang=c :
+         * uint32_t __u6_addr32[4]
+         * }
+         */
+        public static void __u6_addr32(MemorySegment union, MemorySegment fieldValue) {
+            MemorySegment.copy(fieldValue, 0L, union, __u6_addr32$OFFSET, __u6_addr32$SIZE);
+        }
+
+        public static MemorySegment asSlice(MemorySegment array, long index) {
+            return array.asSlice($LAYOUT().byteSize() * index);
+        }
+
+        public static long sizeof() { return $LAYOUT().byteSize(); }
+
+        public static MemorySegment allocate(SegmentAllocator allocator) {
+            return allocator.allocate($LAYOUT());
+        }
+
+        public static MemorySegment allocateArray(long elementCount, SegmentAllocator allocator) {
+            return allocator.allocate(MemoryLayout.sequenceLayout(elementCount, $LAYOUT()));
+        }
+
+        public static MemorySegment reinterpret(MemorySegment addr, Arena scope, Consumer<MemorySegment> cleanup) {
+            return reinterpret(addr, 1, scope, cleanup);
+        }
+
+        public static MemorySegment reinterpret(MemorySegment addr, long elementCount, Arena scope, Consumer<MemorySegment> cleanup) {
+            return addr.reinterpret($LAYOUT().byteSize() * elementCount, scope, cleanup);
+        }
+    }
+
+    private static final long __in6_u$OFFSET = 0;
+    private static final long __in6_u$SIZE = 16;
+
+    /**
+     * Getter for field:
+     * {@snippet lang=c :
+     * union (unnamed union at /usr/include/netinet/in.h:223:5) __in6_u
+     * }
+     */
+    public static MemorySegment __in6_u(MemorySegment struct) {
+        return struct.asSlice(__in6_u$OFFSET, __in6_u$SIZE);
+    }
+
+    /**
+     * Setter for field:
+     * {@snippet lang=c :
+     * union (unnamed union at /usr/include/netinet/in.h:223:5) __in6_u
+     * }
+     */
+    public static void __in6_u(MemorySegment struct, MemorySegment fieldValue) {
+        MemorySegment.copy(fieldValue, 0L, struct, __in6_u$OFFSET, __in6_u$SIZE);
+    }
+
+    public static MemorySegment asSlice(MemorySegment array, long index) {
+        return array.asSlice($LAYOUT().byteSize() * index);
+    }
+
+    public static long sizeof() { return $LAYOUT().byteSize(); }
+
+    public static MemorySegment allocate(SegmentAllocator allocator) {
+        return allocator.allocate($LAYOUT());
+    }
+
+    public static MemorySegment allocateArray(long elementCount, SegmentAllocator allocator) {
+        return allocator.allocate(MemoryLayout.sequenceLayout(elementCount, $LAYOUT()));
+    }
+
+    public static MemorySegment reinterpret(MemorySegment addr, Arena scope, Consumer<MemorySegment> cleanup) {
+        return reinterpret(addr, 1, scope, cleanup);
+    }
+
+    public static MemorySegment reinterpret(MemorySegment addr, long elementCount, Arena scope, Consumer<MemorySegment> cleanup) {
+        return addr.reinterpret($LAYOUT().byteSize() * elementCount, scope, cleanup);
+    }
+}
+
