/*! | |
* \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 */ |