FreeIPA's Python and C code used different approaches to get the FQDN of the host. Some places assumed that gethostname() returns a FQDN. Other code paths used glibc's resolver to resolve the current node name to a FQDN. Python code now uses the ipalib.constants.FQDN where a fully qualified domain name is expected. The variable is initialized only once and avoids potential DNS lookups. C code uses a new helper function ipa_gethostfqdn() in util package. The function implements similar logic as gethostfqdn() except it uses more modern getaddrinfo(). The result is cached as well. Fixes: https://pagure.io/freeipa/issue/8501 Signed-off-by: Christian Heimes <cheimes@redhat.com> Reviewed-By: Fraser Tweedale <ftweedal@redhat.com>
20 lines
317 B
C
20 lines
317 B
C
/*
|
|
* Copyright (C) 2020 FreeIPA Contributors see COPYING for license
|
|
*/
|
|
|
|
#include <limits.h>
|
|
#include <unistd.h>
|
|
|
|
/*
|
|
* host name length including NULL byte
|
|
*
|
|
* NOTE: length hardcoded in kernel
|
|
*/
|
|
#define IPA_HOST_NAME_LEN (HOST_NAME_MAX + 1)
|
|
|
|
int
|
|
ipa_gethostname(char *name);
|
|
|
|
int
|
|
ipa_gethostfqdn(char *name);
|