From c449a30213d1252a4dd65e5a7fde9bea9f2ab76f Mon Sep 17 00:00:00 2001 From: Brandon Black Date: Tue, 9 Sep 2025 16:39:13 -0500 Subject: [PATCH] std.c: Add accept_filter_arg for some BSDs This is the struct type used as set/getsockopt() option data with SO.ACCEPTFILTER, which is also only declared on this same limited set of BSD-ish targets. In theory this could be aliased over to std.posix as well, but I think for a corner case like this, it's not unreasonable for a user that is avoiding uneccessary std.c references to access it as "posix.system.accept_filter_arg" (which would still work fine if, in the future, FreeBSD escapes its libc dep and defines it in std.os.freebsd). --- lib/std/c.zig | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lib/std/c.zig b/lib/std/c.zig index 53f11f58b3a2d880f72aa4944749cc2f55d37c43..751091a0a452f0ab0ab3c557c8a78bb6e749cffa 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -3991,6 +3991,17 @@ pub const W = switch (native_os) { }, else => void, }; +pub const accept_filter_arg = switch (native_os) { + // https://github.com/freebsd/freebsd-src/blob/2024887abc7d1b931e00fbb0697658e98adf048d/sys/sys/socket.h#L205 + // https://github.com/DragonFlyBSD/DragonFlyBSD/blob/6098912863ed4c7b3f70d7483910ce2956cf4ed3/sys/sys/socket.h#L164 + // https://github.com/NetBSD/src/blob/cad5c68a8524927f65e22ad651de3905382be6e0/sys/sys/socket.h#L188 + // https://github.com/apple/darwin-xnu/blob/2ff845c2e033bd0ff64b5b6aa6063a1f8f65aa32/bsd/sys/socket.h#L504 + .freebsd, .dragonfly, .netbsd, .macos, .driverkit, .ios, .tvos, .watchos, .visionos => extern struct { + name: [16]u8, + arg: [240]u8, + }, + else => void, +}; pub const clock_t = switch (native_os) { .linux => linux.clock_t, .emscripten => emscripten.clock_t, -- 2.54.0