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, 4 months ago) by misho
Branches: dhcdrop, MAIN
CVS tags: v0_5, HEAD
dhcdrop

/*
 * dhcdrop_types.h
 *
 *  Created on: 30.07.2009
 *      Author: Chebotarev Roman
 */

#ifndef DHCDROP_TYPES_H_
#define DHCDROP_TYPES_H_

#include "common_includes.h"

#pragma pack(1)

#define DEF_TTL             64
#define IP_HDR_LEN          5       /* IP header len in 32-bit words */
#define B_IP_HDR_LEN        5 * 4   /* IP header len in bytes */
#define DEF_SERVER_PORT     67
#define DEF_CLIENT_PORT     68
#define MAX_PORT_VALUE      65535

#define DHCP_UDP_OVERHEAD   (20 +   /* IP header */           \
                 8)                 /* UDP header */
#define DHCP_SNAME_LEN      64
#define DHCP_FILE_LEN       128
#define DHCP_FIXED_NON_UDP  236
#define DHCP_FIXED_LEN      (DHCP_FIXED_NON_UDP + DHCP_UDP_OVERHEAD)
                        /* Everything but options. */
#define DHCP_MTU_MAX        1500
#define DHCP_OPTION_LEN     (DHCP_MTU_MAX - DHCP_FIXED_LEN)
#define DHCP_MAX_LEN		1472

#define BOOTP_MIN_LEN       300
#define DHCP_MIN_LEN        548
#define IPV4_ALEN			4	/* 4 bytes */

#define ARP_OP_REQ			htons(1)
#define	ARP_OP_RESP			htons(2)

#define MAX_HOSTS_SCAN		512
#define DEF_TIMEOUT			3
#define MAX_CHILDREN		32
#define	CAP_TIMEOUT			100		/* Waiting 100 microseconds for avoid CPU overload (microsecs) */
#define IPTOSBUFFERS		12
#define MAX_IP4_ALEN		15		/* 12 digits + 3 delimiters */
#define MIN_IP4_ALEN		7		/* 4 digit + 3 delimiters */
#define MAX_STR_MAC_LEN		17		/* 12 hex digits + 5 delimiters */
#define MIN_STR_MAC_LEN		11
#define PCAP_FILTER_LEN		1024

#define MAX_ADDR_COUNT      512
#define MAX_ATTEMPTS        5
#define	WAIT_BEFORE_RERUN	60
#define DEF_HOSTNAME        "DHCP-dropper"
#define DEF_DHCPCLIENT      DEF_HOSTNAME
#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"
#define	STR_DROP_FILTER				" and ether src host %s"
#define STR_SERVERDROP_FILTER		STR_SERVERDISCOVER_FILTER STR_DROP_FILTER


/*Defined errors codes*/
#define ERR_EUID                10
#define ERR_SIGNAL              20
#define ERR_CONFIG              30
#define ERR_MEMORY              40
#define ERR_OPENDEV             50
#define	ERR_LISTING_DEV			51
#define ERR_FILTER_OWERFLOW     60
#define ERR_PCAP_COMPILE        70
#define ERR_PCAP_SETFILTER      80
#define ERR_SENDPACKET          90
#define ERR_GETPACKET           100
#define ERR_SETNOBLOCK          110
#define ERR_INVALID_DEV			120
#define ILLEGAL_SERV_FOUND      200
#define	ERR_ABNORMAL			255

#ifdef  __FreeBSD__
#define PCAP_OPEN_LIVE_TIMEOUT	1
#elif	__DragonFly__
#define PCAP_OPEN_LIVE_TIMEOUT	1
#elif	__NetBSD__
#define PCAP_OPEN_LIVE_TIMEOUT	1
#elif	__OpenBSD__
#define PCAP_OPEN_LIVE_TIMEOUT	1
#elif	__APPLE__
#define PCAP_OPEN_LIVE_TIMEOUT	1
#elif	__linux__
#define	PCAP_OPEN_LIVE_TIMEOUT	-1
#elif	__WIN32
#define	PCAP_OPEN_LIVE_TIMEOUT	1
#define MAX_THREADS_COUNT	MAXIMUM_WAIT_OBJECTS /* MAXIMUM_WAIT_OBJECTS == 64 (winbase.h) */
#else

#error "Unsupported system! Supported is: Linux, FreeBSD, OpenBSD, NetBSD & Windows (MinGW)."
#endif


enum list_operations
{
	get_count,
	add,
	rem,
	get_top,
	search,
	by_index,
	flush
};

struct ignored_mac_node
{
    char mac_addr[MAX_STR_MAC_LEN + 1];
    struct ignored_mac_node * next;
};

struct config_params
{
    char    	test_mode;
    char    	yes;
    char    	rand_mac_always;
    int     	max_attempts;
    char    	* if_name;
    int     	max_address_count;
    char    	client_hostname[64];
    char    	dhcp_client[16];
    uint8_t		source_mac[6];
    char    	str_source_mac[MAX_STR_MAC_LEN + 1];		/* Hex-string MAC address */
    char    	flood;
    int     	children_count;
    char    	broadcast;
    int     	client_port;
    int     	server_port;
    char    	always_wait_from_67;
    char    	always_wait_to_68;
	int			timeout;
	int			discover;
	int			max_hosts_scan;
	int			wait_before_restart;
	uint32_t	scanned_network;
	uint32_t	scan_netmask;
	uint32_t	from_ip;
	uint32_t	send_dhcprelease;
	uint32_t	server_ip;
	int			quiet_mode;
};

typedef struct flood_params
{
	const struct config_params * config;
#ifdef _WIN32
	HANDLE * flood_threads;
	DWORD  * threads_ids;
#endif

} *flood_params_ptr;

#endif /* DHCDROP_TYPES_H_ */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>