Browse Source

Add beginning of
rewrite host(1) in C++ from scratch using BIND 10's libdns.

(This doesn't compile yet.)


git-svn-id: svn://bind10.isc.org/svn/bind10/branches/f2f200910@148 e5f2f494-b856-4b98-b285-d166d9295462

Jeremy C. Reed 15 years ago
parent
commit
66ff25c0ab
2 changed files with 63 additions and 0 deletions
  1. 8 0
      src/bin/host/README
  2. 55 0
      src/bin/host/host.cc

+ 8 - 0
src/bin/host/README

@@ -0,0 +1,8 @@
+Rewriting host(1) in C++ from scratch using BIND 10's libdns.
+
+Initial functionality:
+
+  host _hostname_ [server]
+
+  -r	 	disable recursive processing
+  -t _type_	specific query type 

+ 55 - 0
src/bin/host/host.cc

@@ -0,0 +1,55 @@
+/*
+   host rewritten in C++ using BIND 10 DNS library
+
+ */
+
+#include <arpa/inet.h>
+
+#include <iostream>
+using namespace std;    // I don't understand why this is needed for cout
+
+/*     #include "name.h" */
+#include "rrset.h"
+#include "message.h"
+
+using namespace isc::dns;
+
+char* dns_type = "A";    // A is the default lookup type
+
+int
+main(int argc, char* argv[])
+{
+    Message msg;
+
+    if (argc) {
+
+        cout << argv[0]; 
+
+        msg.setQid(0); // does this matter?
+
+// TODO: add switch for this
+          msg.setRD(true);    // set recursive bit
+
+        msg.addQuestion(Name(argv[0]),
+            RRClass::IN,    // IN class only for now
+            RRType(dns_type));
+
+        msg.toWire();
+
+        int s = socket(PF_INET,        // IPv4 for now
+            SOCK_DGRAM, IPPROTO_UDP);    // UDP for now
+        if (s < 0) {
+            cerr << "failed to open socket" << endl;
+            return (1);
+        }
+        
+        char* sin_addr;
+        inet_pton(AF_INET, "127.0.0.1", sin_addr);
+        int size = sizeof(sin_addr);
+        
+        msg.SingleBuffer().sendTo(s, sin_addr, size);
+
+    }
+}
+
+