void HPreARP(PACKET *stpPkt) {
struct ether_arp *stpARP;
if(0 == stpPkt) { return; } else if(0 == stpPkt->stpARP) { return; } else { stpARP = stpPkt->stpARP; //ARP 헤더의 시작 주소를 넘겨줌 }
printf("HARDWARE IDentifier : [");
switch(ntohs(stpARP->ea_hdr.ar_hrd)) {
case ARPHRD_NETROM: printf("NET/ROM pseud]\n"); break; case ARPHRD_ETHER : printf("Ethernet 10/100Mbps]\n"); break; case ARPHRD_EETHER: printf("Experimental Ethernet]\n"); break; case ARPHRD_AX25: printf("AX.25 Level 2]\n"); break; case ARPHRD_PRONET: printf("PROnet token ring]\n"); break; case ARPHRD_CHAOS: printf("Chaosnet]\n"); break; case ARPHRD_IEEE802: printf("IEEE 802.2 Ethernet/TR/TB]\n"); break; case ARPHRD_ARCNET: printf("ARCnet]\n"); break; case ARPHRD_APPLETLK: printf("APPLEtalk]\n"); break; case ARPHRD_DLCI: printf("Frame Relay DLCI]\n"); break; case ARPHRD_ATM: printf("ATM]\n"); break; case ARPHRD_METRICOM: printf("Metricom STRIP]\n"); break; default: printf("Not Support Type...]\n"); break;
} printf("Format of protocol address : %d\n", ntohs(stpARP->ea_hdr.ar_pro)); printf("Length of hardware address : %d\n", stpARP->ea_hdr.ar_hln); printf("Length of protocol address : %d\n", stpARP->ea_hdr.ar_pln); printf("ARP Comand :["); /* ARP protocol opcodes. */ switch(ntohs(stpARP->ea_hdr.ar_op)) {
case ARPOP_REQUEST: printf("ARP Request]\n"); break; case ARPOP_REPLY: printf("ARP reply]\n"); break; case ARPOP_RREQUEST: printf("RARP request]\n"); break; case ARPOP_RREPLY: printf("RARP reply]\n"); break; case ARPOP_InREQUEST: printf("InARP request]\n"); break; case ARPOP_InREPLY: printf("InARP reply]\n"); break; case ARPOP_NAK : printf("(ATM)ARP NAK]\n"); break; default:
printf("Unknown Type...]\n"); break;
} printf(" MAC [%02X:%02X:%02X:%02X:%02X:%02X] -> " , stpARP->arp_sha[0] , stpARP->arp_sha[1] , stpARP->arp_sha[2] , stpARP->arp_sha[3] , stpARP->arp_sha[4] , stpARP->arp_sha[5] ); printf("[%02X:%02X:%02X:%02X:%02X:%02X]\n" , stpARP->arp_tha[0] , stpARP->arp_tha[1] , stpARP->arp_tha[2] , stpARP->arp_tha[3] , stpARP->arp_tha[4] , stpARP->arp_tha[5]);
printf("IP : [%s] -> ", inet_ntoa(*(struct in_addr *)&stpARP->arp_spa)); printf("[%s]\n", inet_ntoa(*(struct in_addr *)&stpARP->arp_tpa));
}
|