#include #include #include "arp.h" #include "ether.h" #include "ip.h" #include "util.h" #include "vars.h" void dump_ether(void) { unsigned short int ethertype; need(14,"Ethernet header"); printx(pkt,6); printf("Ethernet destination %x:%x:%x:%x:%x:%x\n",get8(0),get8(1),get8(2),get8(3),get8(4),get8(5)); consume(6); printx(pkt,6); printf("Ethernet source %x:%x:%x:%x:%x:%x\n",get8(0),get8(1),get8(2),get8(3),get8(4),get8(5)); consume(6); printx(pkt,2); ethertype = get16(0); printf("Ethernet type %04x",ethertype); switch (ethertype) { case ETHERTYPE_PUP: printf(" [PUP]"); break; case ETHERTYPE_IP: printf(" [IP]"); break; case ETHERTYPE_ARP: printf(" [ARP]"); break; case ETHERTYPE_REVARP: printf(" [RARP]"); break; } printf("\n"); consume(2); switch (ethertype) { case ETHERTYPE_ARP: dump_arp(); break; case ETHERTYPE_REVARP: dump_rarp(); break; case ETHERTYPE_IP: dump_ip(); break; } }