OneProbeOneReply
 All Classes Files Functions Variables Typedefs Macros
oneprobeonereply.h
Go to the documentation of this file.
1 #ifndef ONEPROBEONEREPLY_H
2 #define ONEPROBEONEREPLY_H
3 
4 #include "probereply.h"
5 #include "generaloption.h"
6 
7 //#include <string>
8 
9 //#include <sys/ioctl.h>
10 //#include <sys/socket.h>
11 //#include <arpa/inet.h>
12 
13 #define NIPS 4
14 
15 typedef u_int8_t uint8;
16 
17 typedef struct pseudoheader /* pseudo header for TCP checksum calculations */
18 {
19  u_int32_t sip, dip; /* IP addr */
20  u_int8_t zero; /* checksum placeholder */
21  u_int8_t protocol; /* protocol number */
22  u_int16_t tcplen; /* tcp packet length */
24 
26 {
27 private:
28 
29  int _retrieve_src_addr(uint32& src_addr_raw, GeneralOption* option);
30 
31  int _udp(GeneralOption* option, ProbeReply* reply, std::string dst_addr);
32  int _udp_ts(GeneralOption* option, ProbeReply* reply, std::string dst_ip_addr, std::string ts_addr_1, std::string ts_addr_2, std::string ts_addr_3, std::string ts_addr_4);
33 
34  int _icmp(GeneralOption* option, ProbeReply* reply, std::string dst_addr);
35  int _icmp_ts(GeneralOption* option, ProbeReply* reply, std::string dst_ip_addr, std::string ts_addr_1, std::string ts_addr_2, std::string ts_addr_3, std::string ts_addr_4);
36 
37  int _tcp(GeneralOption* option, ProbeReply* reply, std::string dst_addr);
38  int _tcp_ts(GeneralOption* option, ProbeReply* reply, std::string dst_ip_addr, std::string ts_addr_1, std::string ts_addr_2, std::string ts_addr_3, std::string ts_addr_4);
39 
40  int _protocol(GeneralOption* option, ProbeReply* reply, std::string dst_addr);
41  int _protocol_ts(GeneralOption* option, ProbeReply* reply, std::string dst_ip_addr, std::string ts_addr_1, std::string ts_addr_2, std::string ts_addr_3, std::string ts_addr_4);
42 
43  public:
46 
47  // UDP
48  int udp(GeneralOption* option, ProbeReply* reply, std::string dst_addr); // send UDP to D
49  // UDP_TS
50  int udp_ts(GeneralOption* option, ProbeReply* reply, std::string dst_addr); // send UDP_TS to D|DDDD
51  int udp_ts(GeneralOption* option, ProbeReply* reply, std::string dst_addr, std::string ts_addr_1); // send UDP_TS to D|XXXX
52  int udp_ts(GeneralOption* option, ProbeReply* reply, std::string dst_addr, std::string ts_addr_1, std::string ts_addr_2); // send UDP_TS to D|XYYY
53  int udp_ts(GeneralOption* option, ProbeReply* reply, std::string dst_addr, std::string ts_addr_1, std::string ts_addr_2, std::string ts_addr_3); // send UDP_TS to D|XYZZ
54  int udp_ts(GeneralOption* option, ProbeReply* reply, std::string dst_addr, std::string ts_addr_1, std::string ts_addr_2, std::string ts_addr_3, std::string ts_addr_4); // send UDP_TS to D|XYZW
55 
56  // ICMP
57  int icmp(GeneralOption* option, ProbeReply* reply, std::string dst_addr); // send ICMP to D
58  // ICMP_TS
59  int icmp_ts(GeneralOption* option, ProbeReply* reply, std::string dst_addr); // send ICMP_TS to D|DDDD
60  int icmp_ts(GeneralOption* option, ProbeReply* reply, std::string dst_addr, std::string ts_addr_1); // send ICMP_TS to D|XXXX
61  int icmp_ts(GeneralOption* option, ProbeReply* reply, std::string dst_addr, std::string ts_addr_1, std::string ts_addr_2); // send ICMP_TS to D|XYYY
62  int icmp_ts(GeneralOption* option, ProbeReply* reply, std::string dst_addr, std::string ts_addr_1, std::string ts_addr_2, std::string ts_addr_3); // send ICMP_TS to D|XYZZ
63  int icmp_ts(GeneralOption* option, ProbeReply* reply, std::string dst_addr, std::string ts_addr_1, std::string ts_addr_2, std::string ts_addr_3, std::string ts_addr_4); // send ICMP_TS to D|XYZW
64 
65  // TCP
66  int tcp(GeneralOption* option, ProbeReply* reply, std::string dst_addr); // send TCP to D
67  // TCP_TS
68  int tcp_ts(GeneralOption* option, ProbeReply* reply, std::string dst_addr); // send TCP_TS to D|DDDD
69  int tcp_ts(GeneralOption* option, ProbeReply* reply, std::string dst_addr, std::string ts_addr_1); // send ICMP_TS to D|XXXX
70  int tcp_ts(GeneralOption* option, ProbeReply* reply, std::string dst_addr, std::string ts_addr_1, std::string ts_addr_2); // send ICMP_TS to D|XYYY
71  int tcp_ts(GeneralOption* option, ProbeReply* reply, std::string dst_addr, std::string ts_addr_1, std::string ts_addr_2, std::string ts_addr_3); // send ICMP_TS to D|XYZZ
72  int tcp_ts(GeneralOption* option, ProbeReply* reply, std::string dst_addr, std::string ts_addr_1, std::string ts_addr_2, std::string ts_addr_3, std::string ts_addr_4); // send ICMP_TS to D|XYZW
73 
74  // PROTOCOL
75  int protocol(GeneralOption* option, ProbeReply* reply, std::string dst_addr);
76  // PROTOCOL_TS
77  int protocol_ts(GeneralOption* option, ProbeReply* reply, std::string dst_addr); // send PROTOCOL_TS to D|DDDD
78  int protocol_ts(GeneralOption* option, ProbeReply* reply, std::string dst_addr, std::string ts_addr_1); // send ICMP_TS to D|XXXX
79  int protocol_ts(GeneralOption* option, ProbeReply* reply, std::string dst_addr, std::string ts_addr_1, std::string ts_addr_2); // send ICMP_TS to D|XYYY
80  int protocol_ts(GeneralOption* option, ProbeReply* reply, std::string dst_addr, std::string ts_addr_1, std::string ts_addr_2, std::string ts_addr_3); // send ICMP_TS to D|XYZZ
81  int protocol_ts(GeneralOption* option, ProbeReply* reply, std::string dst_addr, std::string ts_addr_1, std::string ts_addr_2, std::string ts_addr_3, std::string ts_addr_4); // send ICMP_TS to D|XYZW
82 
83 };
84 
85 #endif // ONEPROBEONEREPLY_H