/*! * \file eth.h * \brief Definitinos for Ethernet Frames * \version $Revision: 1.2 $ * \author Michael Norman */ #ifndef _ETH_H #define _ETH_H /*******************************************************************/ /* Ethernet standard lengths in bytes*/ #define ETH_ADDR_LEN (6) #define ETH_TYPE_LEN (2) #define ETH_CRC_LEN (4) #define ETH_MAX_DATA (1500) #define ETH_MIN_DATA (46) #define ETH_HDR_LEN (ETH_ADDR_LEN * 2 + ETH_TYPE_LEN) /* Defined Ethernet Frame Types */ #define ETH_FRM_IP (0x0800) #define ETH_FRM_ARP (0x0806) #define ETH_FRM_RARP (0x8035) #define ETH_FRM_TEST (0xA5A5) /* Maximum and Minimum Ethernet Frame Sizes */ #define ETH_MAX_FRM (ETH_HDR_LEN + ETH_MAX_DATA + ETH_CRC_LEN) #define ETH_MIN_FRM (ETH_HDR_LEN + ETH_MIN_DATA + ETH_CRC_LEN) #define ETH_MTU (ETH_HDR_LEN + ETH_MAX_DATA) /* Ethernet Addresses */ typedef unsigned char ETH_ADDR[ETH_ADDR_LEN]; /* 16-bit Ethernet Frame Type, ie. Protocol */ typedef unsigned short ETH_FRM_TYPE; /* Ethernet Frame Header definition */ typedef struct { ETH_ADDR dest; ETH_ADDR src; ETH_FRM_TYPE type; } ETH_HDR; /* Ethernet Frame definition */ typedef struct { ETH_HDR head; unsigned char* data; } ETH_FRAME; /*******************************************************************/ #endif /* _ETH_H */