aboutsummaryrefslogtreecommitdiffstats
path: root/usr/nslookup.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/nslookup.c')
-rw-r--r--usr/nslookup.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/usr/nslookup.c b/usr/nslookup.c
new file mode 100644
index 0000000..6a531b8
--- /dev/null
+++ b/usr/nslookup.c
@@ -0,0 +1,23 @@
+#include "resolve.h"
+/* nslookup HOST - resolve a hostname to an IPv4 address via DNS over UDP.
+ All the DNS logic lives in resolve.h (shared with wget). */
+
+static unsigned char namebuf[64]; /* first so it lands past the arg at 0xA000 */
+static unsigned char ip[4];
+
+void main(void) {
+ char *host;
+ unsigned char i;
+ host = getargs();
+ if (!host || !*host) { puts("usage: nslookup HOST"); nl(); sexit(1); }
+ for (i = 0; host[i] && i < 63; i++) namebuf[i] = (unsigned char)host[i];
+ namebuf[i] = 0;
+
+ if (resolve((char *)namebuf, ip)) {
+ puts((char *)namebuf); puts(" -> ");
+ for (i = 0; i < 4; i++) { putu(ip[i]); if (i < 3) putc('.'); }
+ nl();
+ } else {
+ puts("nslookup: cannot resolve "); puts((char *)namebuf); nl();
+ }
+}