diff options
author | ume <ume@FreeBSD.org> | 2005-05-23 14:12:32 +0000 |
---|---|---|
committer | ume <ume@FreeBSD.org> | 2005-05-23 14:12:32 +0000 |
commit | 428418e43b9a401c09bb331a3486ff6f755dde73 (patch) | |
tree | 70d2d7884e906bc3e087b4c50911e94075096885 /sbin | |
parent | 54d1472c805931ef6bd7861df22da4b71d77514a (diff) | |
download | FreeBSD-src-428418e43b9a401c09bb331a3486ff6f755dde73.zip FreeBSD-src-428418e43b9a401c09bb331a3486ff6f755dde73.tar.gz |
- 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 <andreas __at__ syndrom23.de>
MFC after: 1 week
Diffstat (limited to 'sbin')
-rw-r--r-- | sbin/route/route.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/sbin/route/route.c b/sbin/route/route.c index 0ae44e6..265a03f 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)); |