From c60a8b32a252da17a9111648f20e6275f481b0b3 Mon Sep 17 00:00:00 2001 From: Hajimu UMEMOTO Date: Mon, 23 May 2005 14:12:32 +0000 Subject: [PATCH] - do DNS lookup for symbolic names specified for a destination or gateway. - improves error reporting using gai_strerror(3) instead of printing "bad value". - remove "0" for servname argument for getaddrinfo(3). Submitted by: Andreas Kohn MFC after: 1 week --- sbin/route/route.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/sbin/route/route.c b/sbin/route/route.c index 0ae44e6917cf..265a03f26a4d 100644 --- a/sbin/route/route.c +++ b/sbin/route/route.c @@ -963,18 +963,19 @@ getaddr(which, s, hpp) case AF_INET6: { struct addrinfo hints, *res; + int ecode; q = NULL; if (which == RTA_DST && (q = strchr(s, '/')) != NULL) *q = '\0'; memset(&hints, 0, sizeof(hints)); hints.ai_family = afamily; /*AF_INET6*/ - hints.ai_flags = AI_NUMERICHOST; hints.ai_socktype = SOCK_DGRAM; /*dummy*/ - if (getaddrinfo(s, "0", &hints, &res) != 0 || - res->ai_family != AF_INET6 || + ecode = getaddrinfo(s, NULL, &hints, &res); + if (ecode != 0 || res->ai_family != AF_INET6 || res->ai_addrlen != sizeof(su->sin6)) { - (void) fprintf(stderr, "%s: bad value\n", s); + (void) fprintf(stderr, "%s: %s\n", s, + gai_strerror(ecode)); exit(1); } memcpy(&su->sin6, res->ai_addr, sizeof(su->sin6));