1: /*
2: * dhcdrop_types.h
3: *
4: * Created on: 30.07.2009
5: * Author: Chebotarev Roman
6: */
7:
8: #ifndef DHCDROP_TYPES_H_
9: #define DHCDROP_TYPES_H_
10:
11: #include "common_includes.h"
12:
13: #pragma pack(1)
14:
15: #define DEF_TTL 64
16: #define IP_HDR_LEN 5 /* IP header len in 32-bit words */
17: #define B_IP_HDR_LEN 5 * 4 /* IP header len in bytes */
18: #define DEF_SERVER_PORT 67
19: #define DEF_CLIENT_PORT 68
20: #define MAX_PORT_VALUE 65535
21:
22: #define DHCP_UDP_OVERHEAD (20 + /* IP header */ \
23: 8) /* UDP header */
24: #define DHCP_SNAME_LEN 64
25: #define DHCP_FILE_LEN 128
26: #define DHCP_FIXED_NON_UDP 236
27: #define DHCP_FIXED_LEN (DHCP_FIXED_NON_UDP + DHCP_UDP_OVERHEAD)
28: /* Everything but options. */
29: #define DHCP_MTU_MAX 1500
30: #define DHCP_OPTION_LEN (DHCP_MTU_MAX - DHCP_FIXED_LEN)
31: #define DHCP_MAX_LEN 1472
32:
33: #define BOOTP_MIN_LEN 300
34: #define DHCP_MIN_LEN 548
35: #define IPV4_ALEN 4 /* 4 bytes */
36:
37: #define ARP_OP_REQ htons(1)
38: #define ARP_OP_RESP htons(2)
39:
40: #define MAX_HOSTS_SCAN 512
41: #define DEF_TIMEOUT 3
42: #define MAX_CHILDREN 32
43: #define CAP_TIMEOUT 100 /* Waiting 100 microseconds for avoid CPU overload (microsecs) */
44: #define IPTOSBUFFERS 12
45: #define MAX_IP4_ALEN 15 /* 12 digits + 3 delimiters */
46: #define MIN_IP4_ALEN 7 /* 4 digit + 3 delimiters */
47: #define MAX_STR_MAC_LEN 17 /* 12 hex digits + 5 delimiters */
48: #define MIN_STR_MAC_LEN 11
49: #define PCAP_FILTER_LEN 1024
50:
51: #define MAX_ADDR_COUNT 512
52: #define MAX_ATTEMPTS 5
53: #define WAIT_BEFORE_RERUN 60
54: #define DEF_HOSTNAME "DHCP-dropper"
55: #define DEF_DHCPCLIENT DEF_HOSTNAME
56: #define STR_SERVERDISCOVER_FILTER "(ether dst host %s or ether dst host FF:FF:FF:FF:FF:FF) and udp and src port %d and dst port %d"
57: #define STR_DROP_FILTER " and ether src host %s"
58: #define STR_SERVERDROP_FILTER STR_SERVERDISCOVER_FILTER STR_DROP_FILTER
59:
60:
61: /*Defined errors codes*/
62: #define ERR_EUID 10
63: #define ERR_SIGNAL 20
64: #define ERR_CONFIG 30
65: #define ERR_MEMORY 40
66: #define ERR_OPENDEV 50
67: #define ERR_LISTING_DEV 51
68: #define ERR_FILTER_OWERFLOW 60
69: #define ERR_PCAP_COMPILE 70
70: #define ERR_PCAP_SETFILTER 80
71: #define ERR_SENDPACKET 90
72: #define ERR_GETPACKET 100
73: #define ERR_SETNOBLOCK 110
74: #define ERR_INVALID_DEV 120
75: #define ILLEGAL_SERV_FOUND 200
76: #define ERR_ABNORMAL 255
77:
78: #ifdef __FreeBSD__
79: #define PCAP_OPEN_LIVE_TIMEOUT 1
80: #elif __DragonFly__
81: #define PCAP_OPEN_LIVE_TIMEOUT 1
82: #elif __NetBSD__
83: #define PCAP_OPEN_LIVE_TIMEOUT 1
84: #elif __OpenBSD__
85: #define PCAP_OPEN_LIVE_TIMEOUT 1
86: #elif __APPLE__
87: #define PCAP_OPEN_LIVE_TIMEOUT 1
88: #elif __linux__
89: #define PCAP_OPEN_LIVE_TIMEOUT -1
90: #elif __WIN32
91: #define PCAP_OPEN_LIVE_TIMEOUT 1
92: #define MAX_THREADS_COUNT MAXIMUM_WAIT_OBJECTS /* MAXIMUM_WAIT_OBJECTS == 64 (winbase.h) */
93: #else
94: #error "Unsupported system! Supported is: Linux, FreeBSD, OpenBSD, NetBSD & Windows (MinGW)."
95: #endif
96:
97: enum list_operations
98: {
99: get_count,
100: add,
101: rem,
102: get_top,
103: search,
104: by_index,
105: flush
106: };
107:
108: struct ignored_mac_node
109: {
110: char mac_addr[MAX_STR_MAC_LEN + 1];
111: struct ignored_mac_node * next;
112: };
113:
114: struct config_params
115: {
116: char test_mode;
117: char yes;
118: char rand_mac_always;
119: int max_attempts;
120: char * if_name;
121: int max_address_count;
122: char client_hostname[64];
123: char dhcp_client[16];
124: uint8_t source_mac[6];
125: char str_source_mac[MAX_STR_MAC_LEN + 1]; /* Hex-string MAC address */
126: char flood;
127: int children_count;
128: char broadcast;
129: int client_port;
130: int server_port;
131: char always_wait_from_67;
132: char always_wait_to_68;
133: int timeout;
134: int discover;
135: int max_hosts_scan;
136: int wait_before_restart;
137: uint32_t scanned_network;
138: uint32_t scan_netmask;
139: uint32_t from_ip;
140: uint32_t send_dhcprelease;
141: uint32_t server_ip;
142: int quiet_mode;
143: };
144:
145: typedef struct flood_params
146: {
147: const struct config_params * config;
148: #ifdef _WIN32
149: HANDLE * flood_threads;
150: DWORD * threads_ids;
151: #endif
152: } *flood_params_ptr;
153:
154: #endif /* DHCDROP_TYPES_H_ */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>