Annotation of embedaddon/dhcdrop/src/net.h, revision 1.1

1.1     ! misho       1: /*
        !             2:  * net.h
        !             3:  *
        !             4:  *  Created on: 05.08.2009
        !             5:  *      Author: Chebotarev Roman
        !             6:  */
        !             7: 
        !             8: #ifndef NET_H_
        !             9: #define NET_H_
        !            10: 
        !            11: #pragma pack(1)
        !            12: 
        !            13: #define ETH_ALEN       6               /* Octets in one ethernet addr   */
        !            14: 
        !            15: #define        ETHERTYPE_IP            0x0800          /* IP */
        !            16: #define        ETHERTYPE_ARP           0x0806          /* Address resolution */
        !            17: 
        !            18: /* 10Mb/s ethernet header */
        !            19: struct eth_header
        !            20: {
        !            21:   u_int8_t  ether_dhost[ETH_ALEN];     /* destination eth addr */
        !            22:   u_int8_t  ether_shost[ETH_ALEN];     /* source ether addr    */
        !            23:   u_int16_t ether_type;                        /* packet type ID field */
        !            24: } __attribute__ ((__packed__));
        !            25: 
        !            26: /*
        !            27:  * Structure of an internet header, naked of options.
        !            28:  */
        !            29: struct iphdr
        !            30: {
        !            31: #if __BYTE_ORDER == __LITTLE_ENDIAN
        !            32:     unsigned int ihl:4;
        !            33:     unsigned int version:4;
        !            34: #elif __BYTE_ORDER == __BIG_ENDIAN
        !            35:     unsigned int version:4;
        !            36:     unsigned int ihl:4;
        !            37: #else
        !            38: # error "Please fix <bits/endian.h>"
        !            39: #endif
        !            40:     uint8_t tos;
        !            41:     uint16_t tot_len;
        !            42:     uint16_t id;
        !            43:     uint16_t frag_off;
        !            44:     uint8_t ttl;
        !            45:     uint8_t protocol;
        !            46:     uint16_t check;
        !            47:     uint32_t saddr;
        !            48:     uint32_t daddr;
        !            49:     /*The options start here. */
        !            50: };
        !            51: 
        !            52: /* ARP header */
        !            53: struct arp_header
        !            54: {
        !            55:     uint16_t   arp_hwtype;   /* Format of hardware address */
        !            56:     uint16_t   arp_proto;   /* Format of protocol address */
        !            57:     uint8_t            arp_hwlen;     /* Length of hardware address */
        !            58:     uint8_t    arp_palen;     /* Length of protocol address */
        !            59:     uint16_t   arp_oper;      /* ARP opcode (command) */
        !            60: };
        !            61: 
        !            62: /* UDP header as specified by RFC 768, August 1980. */
        !            63: 
        !            64: struct pseudo_header
        !            65: {
        !            66:     unsigned int src_addr;
        !            67:     unsigned int dst_addr;
        !            68:     unsigned char zero ;
        !            69:     unsigned char proto;
        !            70:     unsigned short length;
        !            71: };
        !            72: 
        !            73: struct udphdr
        !            74: {
        !            75:        uint16_t source;
        !            76:        uint16_t dest;
        !            77:        uint16_t len;
        !            78:        uint16_t check;
        !            79: };
        !            80: 
        !            81: struct arp_packet_net_header
        !            82: {
        !            83:        struct eth_header eth_head;
        !            84:        struct arp_header arp_head;
        !            85: };
        !            86: 
        !            87: struct arp_data
        !            88: {
        !            89:        uint8_t         from_ether[ETH_ALEN];
        !            90:        uint32_t        from_ip;
        !            91:        uint8_t         to_ether[ETH_ALEN];
        !            92:        uint32_t        to_ip;
        !            93: };
        !            94: 
        !            95: struct dhcp_packet_net_header
        !            96: {
        !            97:     struct eth_header eth_head;
        !            98:     struct iphdr ip_header;
        !            99:     struct udphdr udp_header;
        !           100: };
        !           101: 
        !           102: #endif /* NET_H_ */

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