diff a/src/java.base/linux/classes/jdk/internal/ffi/generated/iouring/sockaddr_in6.java b/src/java.base/linux/classes/jdk/internal/ffi/generated/iouring/sockaddr_in6.java
--- /dev/null
+++ b/src/java.base/linux/classes/jdk/internal/ffi/generated/iouring/sockaddr_in6.java
@@ -0,0 +1,182 @@
+// 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 sockaddr_in6 {
+ *     sa_family_t sin6_family;
+ *     in_port_t sin6_port;
+ *     uint32_t sin6_flowinfo;
+ *     struct in6_addr sin6_addr;
+ *     uint32_t sin6_scope_id;
+ * }
+ * }
+ */
+@SuppressWarnings("restricted") public class sockaddr_in6 {
+
+    sockaddr_in6() {
+        // Suppresses public default constructor, ensuring non-instantiability,
+        // but allows generated subclasses in same package.
+    }
+
+    private static final GroupLayout $LAYOUT = MemoryLayout.structLayout(
+        iouring_h.C_SHORT.withName("sin6_family"),
+        iouring_h.C_SHORT.withName("sin6_port"),
+        iouring_h.C_INT.withName("sin6_flowinfo"),
+        in6_addr.$LAYOUT().withName("sin6_addr"),
+        iouring_h.C_INT.withName("sin6_scope_id")
+    ).withName("sockaddr_in6");
+
+    public static final GroupLayout $LAYOUT() {
+        return $LAYOUT;
+    }
+
+    private static final long sin6_family$OFFSET = 0;
+    private static final OfShort sin6_family$LAYOUT = (OfShort)$LAYOUT.select(groupElement("sin6_family"));
+
+    /**
+     * Getter for field:
+     * {@snippet lang=c :
+     * sa_family_t sin6_family
+     * }
+     */
+    public static short sin6_family(MemorySegment struct) {
+        return struct.get(sin6_family$LAYOUT, sin6_family$OFFSET);
+    }
+
+    /**
+     * Setter for field:
+     * {@snippet lang=c :
+     * sa_family_t sin6_family
+     * }
+     */
+    public static void sin6_family(MemorySegment struct, short fieldValue) {
+        struct.set(sin6_family$LAYOUT, sin6_family$OFFSET, fieldValue);
+    }
+
+    private static final long sin6_port$OFFSET = 2;
+    private static final OfShort sin6_port$LAYOUT = ((OfShort)$LAYOUT.select(groupElement("sin6_port"))).withOrder(ByteOrder.BIG_ENDIAN);
+
+    /**
+     * Getter for field:
+     * {@snippet lang=c :
+     * in_port_t sin6_port
+     * }
+     */
+    public static short sin6_port(MemorySegment struct) {
+        return struct.get(sin6_port$LAYOUT, sin6_port$OFFSET);
+    }
+
+    /**
+     * Setter for field:
+     * {@snippet lang=c :
+     * in_port_t sin6_port
+     * }
+     */
+    public static void sin6_port(MemorySegment struct, short fieldValue) {
+        struct.set(sin6_port$LAYOUT, sin6_port$OFFSET, fieldValue);
+    }
+
+    private static final long sin6_flowinfo$OFFSET = 4;
+    private static final OfInt sin6_flowinfo$LAYOUT = (OfInt)$LAYOUT.select(groupElement("sin6_flowinfo"));
+
+    /**
+     * Getter for field:
+     * {@snippet lang=c :
+     * uint32_t sin6_flowinfo
+     * }
+     */
+    public static int sin6_flowinfo(MemorySegment struct) {
+        return struct.get(sin6_flowinfo$LAYOUT, sin6_flowinfo$OFFSET);
+    }
+
+    /**
+     * Setter for field:
+     * {@snippet lang=c :
+     * uint32_t sin6_flowinfo
+     * }
+     */
+    public static void sin6_flowinfo(MemorySegment struct, int fieldValue) {
+        struct.set(sin6_flowinfo$LAYOUT, sin6_flowinfo$OFFSET, fieldValue);
+    }
+
+    private static final long sin6_addr$OFFSET = 8;
+    private static final long sin6_addr$SIZE = 16;
+
+    /**
+     * Getter for field:
+     * {@snippet lang=c :
+     * struct in6_addr sin6_addr
+     * }
+     */
+    public static MemorySegment sin6_addr(MemorySegment struct) {
+        return struct.asSlice(sin6_addr$OFFSET, sin6_addr$SIZE);
+    }
+
+    /**
+     * Setter for field:
+     * {@snippet lang=c :
+     * struct in6_addr sin6_addr
+     * }
+     */
+    public static void sin6_addr(MemorySegment struct, MemorySegment fieldValue) {
+        MemorySegment.copy(fieldValue, 0L, struct, sin6_addr$OFFSET, sin6_addr$SIZE);
+    }
+
+    private static final long sin6_scope_id$OFFSET = 24;
+    private static final OfInt sin6_scope_id$LAYOUT = (OfInt)$LAYOUT.select(groupElement("sin6_scope_id"));
+
+    /**
+     * Getter for field:
+     * {@snippet lang=c :
+     * uint32_t sin6_scope_id
+     * }
+     */
+    public static int sin6_scope_id(MemorySegment struct) {
+        return struct.get(sin6_scope_id$LAYOUT, sin6_scope_id$OFFSET);
+    }
+
+    /**
+     * Setter for field:
+     * {@snippet lang=c :
+     * uint32_t sin6_scope_id
+     * }
+     */
+    public static void sin6_scope_id(MemorySegment struct, int fieldValue) {
+        struct.set(sin6_scope_id$LAYOUT, sin6_scope_id$OFFSET, fieldValue);
+    }
+
+    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);
+    }
+}
+
