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

next in thread | previous in thread | raw e-mail | index | archive | help
On 2012/09/26 16:44, Matthew Seaman wrote:
> 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.

Err, right. I committed your patch, thanks.
>
> 	Cheers,
>
> 	Matthew
>
>
>

     Kevin




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