+/** Convert IP addresses to canonical form for comparison. IPv4
+ * addresses are translated into 6to4 form; IPv6 addresses are left
+ * alone.
+ * @param[out] out Receives canonical format for address.
+ * @param[in] in IP address to canonicalize.
+ */
+static void ip_registry_canonicalize(struct irc_in_addr *out, const struct irc_in_addr *in)
+{
+ if (irc_in_addr_is_ipv4(in)) {
+ out->in6_16[0] = htons(0x2002);
+ out->in6_16[1] = in->in6_16[6];
+ out->in6_16[2] = in->in6_16[7];
+ out->in6_16[3] = out->in6_16[4] = out->in6_16[5] = 0;
+ out->in6_16[6] = out->in6_16[7] = 0;
+ } else
+ memcpy(out, in, sizeof(*out));
+}
+