Better bounds checking on DNS
[network-sink.git] / include / sinkhole.hpp
blob7d25cc0c9362307762eba35edb11ed3d45620980
1 #ifndef SINKHOLE_H
2 #define SINKHOLE_H
4 #include <cstdio>
5 #include <cstdlib>
6 #include <iostream>
7 #include <sstream>
8 #include <fstream>
9 #include <map>
10 #include <vector>
11 #include <deque>
12 #include <list>
13 #include <set>
14 #include <stack>
15 #include <algorithm>
17 #include <signal.h>
19 namespace Sinkhole
21 extern bool shutting_down;
22 extern bool nofork, debug;
23 extern std::string LastError();
24 extern time_t curtime;
26 class Exception
28 std::string reason;
29 public:
30 Exception(const std::string &r);
31 virtual ~Exception() throw();
33 const std::string &GetReason() const;
36 class Signal
38 static std::vector<Signal *> SignalHandlers;
39 static void SignalHandler(int);
41 struct sigaction action;
42 sig_atomic_t called;
43 public:
44 static void Process();
46 int signal;
48 Signal(int s);
49 ~Signal();
50 virtual void OnSignal() = 0;
54 #endif // SINKHOLE_H