From 73f863a6fb1e844ec312345b3160e3987fe6586d Mon Sep 17 00:00:00 2001 From: Lukas Lalinsky Date: Sun, 16 Nov 2025 21:06:47 +0100 Subject: [PATCH] Fix AI/NI flag definitions for BSD systems Add missing AI flags for NetBSD and OpenBSD: - NetBSD: Add AI.SRV flag at bit 11 (0x00000800) - OpenBSD: Add AI.EXT flag at bit 3 and AI.FQDN flag at bit 5 Add missing NI (getnameinfo) flag definitions for all BSDs and Darwin: - FreeBSD/Haiku: NOFQDN, NUMERICHOST, NAMEREQD, NUMERICSERV, DGRAM, NUMERICSCOPE - DragonFly/NetBSD: Same flags with NUMERICSCOPE at bit 6 (deprecated WITHSCOPEID at bit 5 is skipped) - OpenBSD: NUMERICHOST, NUMERICSERV, NOFQDN, NAMEREQD, DGRAM (no NUMERICSCOPE) - macOS/Darwin: NOFQDN, NUMERICHOST, NAMEREQD, NUMERICSERV, DGRAM, NUMERICSCOPE at bit 8 (deprecated WITHSCOPEID at bit 5 is skipped) References: - NetBSD: https://github.com/NetBSD/src/blob/trunk/include/netdb.h - OpenBSD: https://github.com/openbsd/src/blob/master/include/netdb.h - FreeBSD: https://github.com/freebsd/freebsd-src/blob/master/include/netdb.h - DragonFly BSD: https://github.com/DragonFlyBSD/DragonFlyBSD/blob/master/include/netdb.h - Haiku: https://github.com/haiku/haiku/blob/master/headers/posix/netdb.h - macOS/Darwin: https://github.com/apple-oss-distributions/Libinfo/blob/main/lookup.subproj/netdb.h --- lib/std/c.zig | 44 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 3 deletions(-) diff --git a/lib/std/c.zig b/lib/std/c.zig index 326b587b51..2d95c77414 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -7269,7 +7269,8 @@ pub const AI = if (builtin.abi.isAndroid()) packed struct(u32) { NUMERICSERV: bool = false, _4: u6 = 0, ADDRCONFIG: bool = false, - _: u21 = 0, + SRV: bool = false, + _: u20 = 0, }, .illumos => packed struct(u32) { V4MAPPED: bool = false, @@ -7285,9 +7286,9 @@ pub const AI = if (builtin.abi.isAndroid()) packed struct(u32) { PASSIVE: bool = false, CANONNAME: bool = false, NUMERICHOST: bool = false, - _3: u1 = 0, + EXT: bool = false, NUMERICSERV: bool = false, - _5: u1 = 0, + FQDN: bool = false, ADDRCONFIG: bool = false, _: u25 = 0, }, @@ -7348,6 +7349,43 @@ pub const NI = switch (native_os) { DGRAM: bool = false, _: std.meta.Int(.unsigned, @bitSizeOf(c_int) - 5) = 0, }, + .freebsd, .haiku => packed struct(u32) { + NOFQDN: bool = false, + NUMERICHOST: bool = false, + NAMEREQD: bool = false, + NUMERICSERV: bool = false, + DGRAM: bool = false, + NUMERICSCOPE: bool = false, + _: u26 = 0, + }, + .dragonfly, .netbsd => packed struct(u32) { + NOFQDN: bool = false, + NUMERICHOST: bool = false, + NAMEREQD: bool = false, + NUMERICSERV: bool = false, + DGRAM: bool = false, + _5: u1 = 0, + NUMERICSCOPE: bool = false, + _: u25 = 0, + }, + .openbsd => packed struct(u32) { + NUMERICHOST: bool = false, + NUMERICSERV: bool = false, + NOFQDN: bool = false, + NAMEREQD: bool = false, + DGRAM: bool = false, + _: u27 = 0, + }, + .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => packed struct(u32) { + NOFQDN: bool = false, + NUMERICHOST: bool = false, + NAMEREQD: bool = false, + NUMERICSERV: bool = false, + DGRAM: bool = false, + _5: u3 = 0, + NUMERICSCOPE: bool = false, + _: u23 = 0, + }, else => void, };