From 52643e2c658e554a9712b1f384bf773f827093b1 Mon Sep 17 00:00:00 2001 From: Aurelien Degremont Date: Mon, 5 May 2025 16:36:16 +0200 Subject: [PATCH] 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 --- lustre/utils/gss/lsupport.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) 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: -- 1.8.3.1