File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / dhcdrop / src / dhcdrop_types.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 22:25:35 2012 UTC (12 years, 7 months ago) by misho
Branches: dhcdrop, MAIN
CVS tags: v0_5, HEAD
dhcdrop

    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>