root/trunk/pdns/pdns/dnsscan.cc @ 761

Revision 761, 1.6 KB (checked in by ahu, 7 years ago)

fix david g's bug one level up as well - we used to do the wrong thing with truncated packets, leaving untrue an, ns and arcounts around
change version to 3.0.1-snapshot

Line 
1#include <bitset>
2#include "statbag.hh"
3#include "dnspcap.hh"
4#include "sstuff.hh"
5#include "anadns.hh"
6
7// this is needed because boost multi_index also uses 'L', as do we (which is sad enough)
8#undef L
9
10#include <arpa/nameser.h>
11#include <set>
12#include <deque>
13
14#include <boost/format.hpp>
15#include <boost/utility.hpp>
16#include <boost/multi_index_container.hpp>
17#include <boost/multi_index/ordered_index.hpp>
18#include <boost/multi_index/key_extractors.hpp>
19#include <cctype>
20
21using namespace boost;
22using namespace ::boost::multi_index;
23using namespace std;
24StatBag S;
25
26int main(int argc, char** argv)
27try
28{
29  PcapPacketReader pr(argv[1]);
30  Socket sock(InterNetwork, Datagram);
31
32  IPEndpoint remote(argc > 2 ? argv[2] : "127.0.0.1", 
33                    argc > 3 ? atoi(argv[3]) : 5300);
34
35
36  while(pr.getUDPPacket()) {
37    try {
38      MOADNSParser mdp((const char*)pr.d_payload, pr.d_len);
39      for(int i=0; i < mdp.d_qname.length(); ++i)
40        if(!isalnum(mdp.d_qname[i]) && mdp.d_qname[i]!='.' && mdp.d_qname[i]!='-' && mdp.d_qname[i]!='_') {
41          //      cout<<mdp.d_qname<<"|"<<mdp.d_qtype<<"|"<<mdp.d_qclass<<"\n";
42          // sock.sendTo(string(pr.d_payload, pr.d_payload + pr.d_len), remote);
43          break;
44        }
45      if(mdp.d_qtype > 256 || mdp.d_qclass!=1 ) {
46        //      sock.sendTo(string(pr.d_payload, pr.d_payload + pr.d_len), remote);
47
48      }
49      for(MOADNSParser::answers_t::const_iterator i=mdp.d_answers.begin(); i!=mdp.d_answers.end(); ++i) {         
50
51      }
52
53    }
54    catch(MOADNSException &e) {
55      cout<<"Error: "<<e.what()<<"\n";
56      sock.sendTo(string(pr.d_payload, pr.d_payload + pr.d_len), remote);
57    }
58  }
59}
60catch(exception& e)
61{
62  cout<<"Fatal: "<<e.what()<<endl;
63}
64
Note: See TracBrowser for help on using the browser.