":Resolver: requests %d(%d)", request_count, request_mem);
return request_mem;
}
-
-/** Check whether an address looks valid.
- * This means not all 0s and not all 1s.
- * @param[in] addr Address to check for validity.
- * @return Non-zero if the address looks valid.
- */
-int irc_in_addr_valid(const struct irc_in_addr *addr)
-{
- unsigned int ii;
- unsigned short val;
-
- val = addr->in6_16[0];
- if (val != 0 && val != 0xffff)
- return 1;
- for (ii = 1; ii < 8; ii++)
- if (addr->in6_16[ii] != val)
- return 1;
- return 0;
-}
-
-/** Compare two IP addresses.
- * @param[in] a First address to compare.
- * @param[in] b Second address to compare.
- * @return Non-zero if the two addresses differ, zero if they are identical.
- */
-int irc_in_addr_cmp(const struct irc_in_addr *a, const struct irc_in_addr *b)
-{
- if (irc_in_addr_is_ipv4(a))
- return a->in6_16[6] != b->in6_16[6]
- || a->in6_16[7] != b->in6_16[7]
- || !irc_in_addr_is_ipv4(b);
- else
- return memcmp(a, b, sizeof(*a));
-}
-
-/** Indicate whether an IP address is a loopback address.
- * @param[in] addr Address to check.
- * @return Non-zero if the address is loopback; zero if not.
- */
-int irc_in_addr_is_loopback(const struct irc_in_addr *addr)
-{
- if (addr->in6_16[0] != 0
- || addr->in6_16[1] != 0
- || addr->in6_16[2] != 0
- || addr->in6_16[3] != 0
- || addr->in6_16[4] != 0)
- return 0;
- if ((addr->in6_16[5] == 0xffff) || (addr->in6_16[5] == 0 && addr->in6_16[6] != 0))
- return (ntohs(addr->in6_16[6]) & 0xff00) == 0x7f00;
- else
- return addr->in6_16[5] == 0 && addr->in6_16[6] == 0 && htons(addr->in6_16[7]) == 1;
-}