[Freeciv-Dev] IPv6 and gethostbyname() -- a look at glibc.
[Top] [All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
Well, I've done what I said I couldn't be bothered to do and had a
look at the glibc sources.
I've only looked at the most recent development version. Looking at
older versions is too much bother, and I think that this case study is
sufficient anyway.
If you want to check my findings, check out the module "glibc/resolv"
from the GNU CVS repository. There are instructions on how to do that
at http://subversions.gnu.org .
In res_init.c:res_setoptions() the flag RES_USE_INET6 is set if the
option "inet6" is set in either /etc/resolv.conf (or whatever
_PATH_RESCONF has been redefined to) or in the environment variable
RES_OPTIONS. When this flag is set, gethostbyname() and friends may
return AF_INET6 entries, viz:
--8<--
struct hostent *
gethostbyname(name)
const char *name;
{
struct hostent *hp;
if ((_res.options & RES_INIT) == 0 && __res_ninit(&_res) ==
-1) {
__set_h_errno (NETDB_INTERNAL);
return (NULL);
}
if (_res.options & RES_USE_INET6) {
hp = gethostbyname2(name, AF_INET6);
if (hp)
return (hp);
}
return (gethostbyname2(name, AF_INET));
}
--8<--
Therefore, it is appropriate to check that we get an AF_INET entry in
return, at least until someone makes the effort to make the rest of
Freeciv work properly with IPv6.
--
Big Gaute (not to be confused with LG)
After THIS, let's go to PHILADELPHIA and have TRIPLETS!!
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Freeciv-Dev] IPv6 and gethostbyname() -- a look at glibc.,
Gaute B Strokkenes <=
|
|