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: