IPv6 Phase 1: Replace struct in_addr with dual-stack irc_addr abstraction
authorRemco Rijnders <remmy@serenity-irc.net>
Sat, 7 Mar 2026 17:17:36 +0000 (12:17 -0500)
committerRemco Rijnders <remmy@serenity-irc.net>
Sat, 7 Mar 2026 17:17:36 +0000 (12:17 -0500)
commitf488f6e5426dcdd8769468df8ef00909acfce852
tree33e06a9a0698d80ed4c6fde2d9806920d33d6485
parent4aefc7e2b8b8b341adf3f8d0122f9c59d369497f
IPv6 Phase 1: Replace struct in_addr with dual-stack irc_addr abstraction

Introduce struct irc_addr (include/irc_addr.h) that holds either an IPv4
or IPv6 address. Convert Client.ip, ConfItem.ipnum, and aThrottle.ip from
struct in_addr to struct irc_addr throughout the codebase.

Rewrite inetntoa() to use inet_ntop() via irc_addr. Update all call sites
in s_bsd.c, s_conf.c, s_ping.c, s_user.c, s_misc.c, whowas.c, and list.c.
The DNS resolver (res.c) stays IPv4-only internally with an inetntoa_v4()
bridge function for the transition.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
12 files changed:
include/h.h
include/irc_addr.h [new file with mode: 0644]
include/struct.h
src/list.c
src/res.c
src/s_bsd.c
src/s_conf.c
src/s_misc.c
src/s_ping.c
src/s_user.c
src/support.c
src/whowas.c