Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 26 Sep 2012 09:44:21 +0100
From:      Matthew Seaman <matthew@freebsd.org>
To:        Kevin Lo <kevlo@freebsd.org>
Cc:        Jerry <jerry@seibercom.net>, FreeBSD <freebsd-questions@freebsd.org>
Subject:   Re: PR 161548
Message-ID:  <5062C065.2040603@freebsd.org>
In-Reply-To: <5062A037.7080306@FreeBSD.org>
References:  <20120924172911.0839be5d@scorpio> <5061494D.1000203@FreeBSD.org> <5062A037.7080306@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 26/09/2012 07:27, Kevin Lo wrote:
> On 2012/09/25 14:03, Matthew Seaman wrote:
>> On 24/09/2012 22:29, Jerry wrote:
>>> Is there any specific reason that this PR: 161548 is still marked as
>>> open?
>>>
>>> o 2011/10/13 bin/161548 [patch] getent(1) inconsistent treatment of
>>> IPv6 host data
>> It simply hasn't attracted the attention of anyone with a src commit
>> bit. Yet.
> 
> There's no need to declare he4 and he6 as struct hostent,
> the original declaration of he is fine. So here is patch.
> 
> Index: usr.bin/getent/getent.c
> ===================================================================
> --- usr.bin/getent/getent.c     (revision 240947)
> +++ usr.bin/getent/getent.c     (working copy)
> @@ -285,6 +285,7 @@ hosts(int argc, char *argv[])
>         assert(argv != NULL);
> 
>         sethostent(1);
> +       he = NULL;
>         rv = RV_OK;
>         if (argc == 2) {
>                 while ((he = gethostent()) != NULL)
> @@ -295,8 +296,9 @@ hosts(int argc, char *argv[])
>                                 he = gethostbyaddr(addr, IN6ADDRSZ,
> AF_INET6);
>                         else if (inet_pton(AF_INET, argv[i], (void
> *)addr) > 0)
>                                 he = gethostbyaddr(addr, INADDRSZ,
> AF_INET);
> -                       else
> -                               he = gethostbyname(argv[i]);
> +                       else if ((he = gethostbyname2(argv[i],
> AF_INET6)) ==
> +                           NULL)
> +                               he = gethostbyname2(argv[i], AF_INET);
>                         if (he != NULL)
>                                 hostsprint(he);
>                         else {


Not so.  Hosts frequently have both IPv6 and IPv4 addresses: your patch
would print only the IPv6 address in that case.

	Cheers,

	Matthew





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5062C065.2040603>