From: Aurelien Degremont Date: Mon, 5 May 2025 14:36:16 +0000 (+0200) Subject: LU-18976 gss: detect dns error in lsvcgssd X-Git-Tag: 2.16.56~41 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=refs%2Fchanges%2F95%2F59095%2F2;p=fs%2Flustre-release.git LU-18976 gss: detect dns error in lsvcgssd Use proper NI_NAMEREQD flag with getnameinfo() in lsvcgssd when resolving IP addresses, for it to return an error if DNS resolution fails. That way, the error is propagated and Lustre knows a DNS failure happens and can report it better. If not, it fails latter and reports a very unclear message. Test-Parameters: kerberos=true testlist=sanity-krb5 Change-Id: Iaa9e718c056ea742d8695048e43bdeeb3205f0dd Signed-off-by: Aurelien Degremont Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/59095 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Sebastien Buisson Reviewed-by: Andreas Dilger Reviewed-by: Bruno Faccini Reviewed-by: Oleg Drokin --- diff --git a/lustre/utils/gss/lsupport.c b/lustre/utils/gss/lsupport.c index 4126fee..39a4d89 100644 --- a/lustre/utils/gss/lsupport.c +++ b/lustre/utils/gss/lsupport.c @@ -228,6 +228,7 @@ out: static int getaddrcanonname(const uint32_t addr, char *buf, int buflen) { struct sockaddr_in srcaddr; + char ipstr[INET_ADDRSTRLEN] = "\0"; int err = 0; int rc = -1; @@ -248,13 +249,18 @@ static int getaddrcanonname(const uint32_t addr, char *buf, int buflen) srcaddr.sin_addr.s_addr = (in_addr_t)addr; err = getnameinfo((struct sockaddr *)&srcaddr, sizeof(srcaddr), - buf, buflen, NULL, 0, 0); + buf, buflen, NULL, 0, NI_NAMEREQD); if (err != 0) { - printerr(LL_ERR, - "failed to get nameinfo for 0x%x: %s\n", - addr, gai_strerror(err)); + if (inet_ntop(srcaddr.sin_family, &srcaddr.sin_addr, ipstr, + INET_ADDRSTRLEN)) + printerr(LL_ERR, "failed to get name for %s: %s\n", + ipstr, gai_strerror(err)); + else + printerr(LL_ERR, "failed to get name for 0x%x: %s\n", + addr, gai_strerror(err)); goto out; } + rc = 0; out: