Mercurial > dovecot > core-2.2
diff src/lib/network.c @ 4684:4f1df4b90500 HEAD
Added net_ipv6_mapped_ipv4_convert().
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 15 Oct 2006 19:19:17 +0300 |
parents | 989dd95aa8b9 |
children | 9e4cc68b71b2 |
line wrap: on
line diff
--- a/src/lib/network.c Sun Oct 15 18:55:00 2006 +0300 +++ b/src/lib/network.c Sun Oct 15 19:19:17 2006 +0300 @@ -570,6 +570,25 @@ return 0; } +int net_ipv6_mapped_ipv4_convert(const struct ip_addr *src, + struct ip_addr *dest) +{ +#ifdef HAVE_IPV6 + if (!IPADDR_IS_V6(src)) + return -1; + if (src->ip.in6_u.u6_addr32[0] != 0 || + src->ip.in6_u.u6_addr32[1] != 0 || + src->ip.in6_u.u6_addr32[2] != 0xffff0000) + return -1; + + dest->family = AF_INET; + memcpy(&dest->ip, &src->ip.in6_u.u6_addr32[3], 4); + return 0; +#else + return -1; +#endif +} + /* Get socket error */ int net_geterror(int fd) {