Download raw body.
dhcrelay: use getaddrinfo(3)
Not using dhcrelay, but it still starts with a list of hostnames &
ip addresses :)
Tests, OK?
diff --git dhcrelay.c dhcrelay.c
index ff5b355dfc6..6fc20273a28 100644
--- dhcrelay.c
+++ dhcrelay.c
@@ -162,12 +162,15 @@ main(int argc, char *argv[])
}
while (argc > 0) {
- struct hostent *he;
+ struct addrinfo hints, *res;
struct in_addr ia, *iap = NULL;
if ((sp = calloc(1, sizeof(*sp))) == NULL)
fatalx("calloc");
+ memset(&hints, 0, sizeof(hints));
+ hints.ai_family = AF_INET;
+
if ((sp->intf = register_interface(argv[0], got_one,
1)) != NULL) {
if (drm == DRM_LAYER3)
@@ -185,15 +188,14 @@ main(int argc, char *argv[])
continue;
}
- if (inet_aton(argv[0], &ia))
- iap = &ia;
+ if (getaddrinfo(argv[0], NULL, &hints, &res) != 0)
+ log_warnx("%s: host unknown", argv[0]);
else {
- he = gethostbyname(argv[0]);
- if (!he)
- log_warnx("%s: host unknown", argv[0]);
- else
- iap = ((struct in_addr *)he->h_addr_list[0]);
+ ia = ((struct sockaddr_in *)res->ai_addr)->sin_addr;
+ iap = &ia;
+ freeaddrinfo(res);
}
+
if (iap) {
if (drm == DRM_LAYER2)
fatalx("don't mix interfaces with hosts");
--
In my defence, I have been left unsupervised.
dhcrelay: use getaddrinfo(3)