Annotation of embedaddon/dhcdrop/src/dhcdrop_types.h, revision 1.1.1.1

1.1       misho       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>