[LTP] [PATCH] bugfix for network/lib6/getaddrinfo_01.c

Alexey Kodanev alexey.kodanev@oracle.com
Tue May 11 14:58:05 CEST 2021


On 11.05.2021 15:21, Petr Vorel wrote:
> Hi,
> 
> [ Cc: Alexey, Martin and Cyril ]
> 
>> For test cases (test2 ,IPV4 canonical name) and (test13 ,IPV6 canonical name)
> 
>> The gethostname() API returns the official name of host, not the canonical name of host.
>> The canonical name of host needs to be obtained through the gethostbyname() API;
> 
> Yes, test 2 and 13 fails systems which don't use FQDN as hostname and have DNS records
> due mismatch short name and FQDN, e.g.:
> getaddrinfo_01    2  TFAIL  :  getaddrinfo_01.c:140: getaddrinfo IPv4 canonical name ("foo.suse.cz") doesn't match hostname ("foo")
> 
> It's a bit strange to use deprecated gethostbyname() in getaddrinfo() tests :).

Yeah, gethostbyname() is obsolete, we shouldn't compare both here,
i.e. getaddrinfo() vs gethostbyname()...

> Yes, it's the easiest way to get FQDN instead of just "short" hostname. But
> Maybe simple check if we have FQDN with strchr for dot and TCONF it's just short
> name would be better.

+1, and instead of TCONF we could check the "shortname" that
we pass to getaddrinfo():

>>  	shortname[MAXHOSTNAMELEN] = '\0';
>>  	p = strchr(shortname, '.');
>>  	if (p)

...
> 
> FYI Workaround on systems which do not have DNS record is to use /etc/fstab.
> We should document in testcases/network/README.md that when using /etc/fstab,

/etc/hosts

> well recommended order FQDN and *then* short name is required, e.g.:
> ::1 foo.suse.cz foo
> 
> Other setup fails, e.g.:
> ::1 foo
> ::1 foo foo.suse.cz
> 
> leads to error:
> getaddrinfo_01   13  TFAIL  :  getaddrinfo_01.c:611: getaddrinfo IPv6 canonical name ("foo") doesn't match hostname ("foo.suse.cz")
> 
> and setup:
> ::1 foo.suse.cz
> 
> leads to
> getaddrinfo_01   12  TFAIL  :  getaddrinfo_01.c:594: getaddrinfo IPv6 basic lookup ("foo") returns -5 ("No address associated with hostname")
> 
> The best would be if the test checked the correct setup itself
> but not sure how do it to not complicate this test too much.
> I guess during rewrite of this test we might decide to split it.
> 
> Other TODO (not related to this patch:
> e.g.: it fails when there no DNS record nor records in /etc/hosts:
> 
> getaddrinfo_01    1  TFAIL  :  getaddrinfo_01.c:117: getaddrinfo IPv4 basic lookup ("myhost") returns -2 ("Name or service not known")
> ...
> getaddrinfo_01   12  TFAIL  :  getaddrinfo_01.c:599: getaddrinfo IPv6 basic lookup ("myhost") returns -2 ("Name or service not known")
> 
> Any distro installer should add them, but I guess we should TCONF in this case.
> 
> or when there is DNS A record, but not AAAA: 
> getaddrinfo_01   12  TFAIL  :  getaddrinfo_01.c:596: getaddrinfo IPv6 basic lookup ("myhost.suse.cz") returns -5 ("No address associated with hostname")
> 
> During rewriting to new API test would deserve cleanup, e.g.
> remove duplicity in gaiv4() and gaiv6() (getaddrinfo() can deal with IPv4
> and IPv6 in a nice way through hints, see safe_getaddrinfo()).
> 
> Kind regards,
> Petr
> 



More information about the ltp mailing list