1
4
#include "dnsparser.hh"
4
7
#include "dnswriter.hh"
5
8
#include "dnsrecords.hh"
7
10
#include "statbag.hh"
11
#include <boost/pool/pool.hpp>
12
#include <boost/pool/object_pool.hpp>
14
#include <boost/pool/pool_alloc.hpp>
15
14
using namespace boost;
17
Logger L("dnspbench");
19
#include <bits/atomicity.h>
20
// This code is ugly but does speedup the recursor tremendously on multi-processor systems, and even has a large effect (20, 30%) on uniprocessor
24
__attribute__ ((__unused__))
25
__exchange_and_add(volatile _Atomic_word* __mem, int __val)
27
register _Atomic_word __result=*__mem;
33
__attribute__ ((__unused__))
34
__atomic_add(volatile _Atomic_word* __mem, int __val)
20
42
int main(int argc, char** argv)
23
set<int, std::less<int>, boost::pool_allocator<int> > blah;
25
for(unsigned int n=0;n< 1000000;++n)
26
blah.insert(random());
27
cerr<<"Done inserting"<<endl;
35
dnsheader.qdcount=htons(1);
36
dnsheader.ancount=htons(1);
37
47
Socket s(InterNetwork, Datagram);
39
char* p=(char*)&dnsheader;
40
spacket.assign(p, p+sizeof(dnsheader));
41
IPEndpoint rem("127.0.0.1",5300);
42
s.sendTo(spacket, rem);
49
IPEndpoint rem("10.0.1.6", atoi(argv[1])), loc("213.156.2.1", 53);
52
vector<uint8_t> vpacket;
53
string domain="ds9a.nl";
56
for(unsigned int n=0; n < 65536; ++n) {
57
DNSPacketWriter pw(vpacket, domain, type);
62
// ARecordContent arc("1.2.3.4");
63
// pw.startRecord("ds9a.nl", 1, 9999, 1, DNSPacketWriter::ANSWER);
67
string spacket((char*)(&*vpacket.begin()), vpacket.size());
68
s.sendTo(spacket, rem);
48
74
vector<uint8_t> packet;