This is a low-level network debugging utility that utilizes raw packet i/o to construct and deconstruct tcp, udp, ipv4, arp, and icmp packets over ethernet.
net/ethernet.h
- Committer:
- etherealflaim
- Date:
- 2010-10-12
- Revision:
- 0:d494b853ce97
- Child:
- 2:e8e09adc41fc
File content as of revision 0:d494b853ce97:
#ifndef ETHERNET_H #define ETHERNET_H #include "net.h" typedef struct { unsigned char octet[6]; } Ethernet_MAC; typedef struct { // In the Ethernet II Framing Standard: // Destination MAC address (6 octets) Ethernet_MAC destination; // Source MAC address (6 octets) Ethernet_MAC source; // (optional) VLAN Tag (unsupported) // Ethernet type or length (only <0x600 or 0x0800 IPv4 supported) u16 ethertype; unsigned char payload[]; } Ethernet_FrameHeader; inline void fix_endian_ethernet(Ethernet_FrameHeader *header) { fix_endian_u16(&header->ethertype); } inline void print_ethernet(Ethernet_FrameHeader *frame) { main_log.printf("Ethernet frame:"); u8 *src = frame->source.octet; u8 *dst = frame->destination.octet; main_log.printf(" Source: MAC - %02X:%02X:%02X:%02X:%02X:%02X", src[6], src[7], src[8], src[9], src[10], src[11]); main_log.printf(" Dest: MAC - %02X:%02X:%02X:%02X:%02X:%02X", dst[0], dst[1], dst[2], dst[3], dst[4], dst[5]); main_log.printf(" Ethertype: 0x%04X", frame->ethertype); } #endif