3 @@ -307,19 +307,20 @@ int main(int argc, char *argv[])
6 char ip[INET6_ADDRSTRLEN];
8 + char *ipset, *ipset6;
9 int listen_sock, upstream_sock;
16 - fprintf(stderr, "Usage: %s ipset port upstream\n", argv[0]);
18 + fprintf(stderr, "Usage: %s ipv4-ipset ipv6-ipset port upstream\n", argv[0]);
25 listen_sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
26 if (listen_sock < 0) {
27 @@ -329,7 +330,7 @@ int main(int argc, char *argv[])
29 memset(&listen_addr, 0, sizeof(listen_addr));
30 listen_addr.sin_family = AF_INET;
31 - listen_addr.sin_port = htons(atoi(argv[2]));
32 + listen_addr.sin_port = htons(atoi(argv[3]));
33 listen_addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
35 setsockopt(listen_sock, SOL_SOCKET, SO_REUSEADDR, &i, sizeof(i));
36 @@ -341,7 +342,7 @@ int main(int argc, char *argv[])
37 memset(&upstream_addr, 0, sizeof(upstream_addr));
38 upstream_addr.sin_family = AF_INET;
39 upstream_addr.sin_port = htons(53);
40 - inet_aton(argv[3], &upstream_addr.sin_addr);
41 + inet_aton(argv[4], &upstream_addr.sin_addr);
43 /* TODO: Put all of the below code in several forks all listening on the same sock. */
45 @@ -434,8 +435,11 @@ int main(int argc, char *argv[])
49 + if ((af == AF_INET && !*ipset) || (af == AF_INET6 && !*ipset6))
52 printf("%s: %s\n", answer.dotted, ip);
53 - if (add_to_ipset(ipset, answer.rdata, af) < 0)
54 + if (add_to_ipset((af == AF_INET) ? ipset : ipset6, answer.rdata, af) < 0)
55 perror("add_to_ipset");