Add -4 and -6 options to set address family when resolving names

This commit is contained in:
Miroslav Lichvar 2009-10-13 13:10:28 +02:00
parent a7892a1a15
commit fbd20c429e
4 changed files with 25 additions and 1 deletions

View file

@ -2619,11 +2619,17 @@ main(int argc, char **argv)
}
} else if (!strcmp(*argv, "-n")) {
no_dns = 1;
} else if (!strcmp(*argv, "-4")) {
DNS_SetAddressFamily(IPADDR_INET4);
hostname = "127.0.0.1";
} else if (!strcmp(*argv, "-6")) {
DNS_SetAddressFamily(IPADDR_INET6);
hostname = "::1";
} else if (!strcmp("-v", *argv) || !strcmp("--version",*argv)) {
printf("chronyc (chrony) version %s\n", PROGRAM_VERSION_STRING);
exit(0);
} else if (!strncmp(*argv, "-", 1)) {
fprintf(stderr, "Usage : %s [-h <hostname>] [-p <port-number>] [-n] [command]\n", progname);
fprintf(stderr, "Usage : %s [-h <hostname>] [-p <port-number>] [-n] [-4|-6] [command]\n", progname);
exit(1);
} else {
break; /* And process remainder of line as a command */

5
main.c
View file

@ -61,6 +61,7 @@
#include "refclock.h"
#include "clientlog.h"
#include "broadcast.h"
#include "nameserv.h"
/* ================================================== */
@ -268,6 +269,10 @@ int main
exit(0);
} else if (!strcmp("-d", *argv)) {
debug = 1;
} else if (!strcmp("-4", *argv)) {
DNS_SetAddressFamily(IPADDR_INET4);
} else if (!strcmp("-6", *argv)) {
DNS_SetAddressFamily(IPADDR_INET6);
} else {
LOG(LOGS_WARN, LOGF_Main, "Unrecognized command line option [%s]", *argv);
}

View file

@ -40,6 +40,14 @@
#define MAXRETRIES 10
static unsigned int retries = 0;
static int address_family = IPADDR_UNSPEC;
void
DNS_SetAddressFamily(int family)
{
address_family = family;
}
int
DNS_Name2IPAddress(const char *name, IPAddr *addr, int retry)
{
@ -80,6 +88,8 @@ try_again:
break;
#endif
}
if (result && address_family != IPADDR_UNSPEC && address_family != addr->family)
result = 0;
}
freeaddrinfo(res);

View file

@ -34,6 +34,9 @@
#include "addressing.h"
/* Resolve names only to selected address family */
extern void DNS_SetAddressFamily(int family);
extern int DNS_Name2IPAddress(const char *name, IPAddr *addr, int retry);
extern void DNS_IPAddress2Name(IPAddr *ip_addr, char *name, int len);