X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=networking%2Fnslookup.c;h=8e3c8fed9af02f79755c789001c2d285ef9a0f0f;hb=179e88bec91cfe58096900dc5509a080ff37b083;hp=67fc01547c67d71aeef5c3b01f8b8edc9ca24d2d;hpb=7f4b769c42f3773ff2e2e749547291dcb7e85d01;p=oweals%2Fbusybox.git diff --git a/networking/nslookup.c b/networking/nslookup.c index 67fc01547..8e3c8fed9 100644 --- a/networking/nslookup.c +++ b/networking/nslookup.c @@ -10,6 +10,29 @@ * * Licensed under GPLv2 or later, see file LICENSE in this source tree. */ +//config:config NSLOOKUP +//config: bool "nslookup" +//config: default y +//config: help +//config: nslookup is a tool to query Internet name servers. + +//applet:IF_NSLOOKUP(APPLET(nslookup, BB_DIR_USR_BIN, BB_SUID_DROP)) + +//kbuild:lib-$(CONFIG_NSLOOKUP) += nslookup.o + +//usage:#define nslookup_trivial_usage +//usage: "[HOST] [SERVER]" +//usage:#define nslookup_full_usage "\n\n" +//usage: "Query the nameserver for the IP address of the given HOST\n" +//usage: "optionally using a specified DNS server" +//usage: +//usage:#define nslookup_example_usage +//usage: "$ nslookup localhost\n" +//usage: "Server: default\n" +//usage: "Address: default\n" +//usage: "\n" +//usage: "Name: debian\n" +//usage: "Address: 127.0.0.1\n" #include #include "libbb.h" @@ -124,6 +147,9 @@ static void set_default_dns(const char *server) { len_and_sockaddr *lsa; + if (!server) + return; + /* NB: this works even with, say, "[::1]:5353"! :) */ lsa = xhost2sockaddr(server, 53); @@ -167,9 +193,17 @@ int nslookup_main(int argc, char **argv) /* (but it also says "may be enabled in /etc/resolv.conf") */ /*_res.options |= RES_USE_INET6;*/ - if (argv[2]) - set_default_dns(argv[2]); + set_default_dns(argv[2]); server_print(); + + /* getaddrinfo and friends are free to request a resolver + * reinitialization. Just in case, set_default_dns() again + * after getaddrinfo (in server_print). This reportedly helps + * with bug 675 "nslookup does not properly use second argument" + * at least on Debian Wheezy and Openwrt AA (eglibc based). + */ + set_default_dns(argv[2]); + return print_host(argv[1], "Name:"); }