📄 icmp.c
字号:
/**************************************************************************** ** File: icmp.c**** Author: Mike Borella**** Comments: Dump ICMP information*******************************************************************************/#include <stdio.h>#include <sys/types.h>#include <netinet/in.h>#include "config.h"#include "icmp.h"extern u_char *packet_end;/*----------------------------------------------------------------------------**** dump_icmp()**** Parse ICMP header and dump fields****----------------------------------------------------------------------------*/void dump_icmp(u_char *bp){ ICMPhdr *icmph; echoext *echo; icmph = (ICMPhdr *) bp; printf("----------------------------------------------------------\n"); printf(" ICMP Header\n"); printf("----------------------------------------------------------\n"); printf("Type: %d ", icmph->type); switch (icmph->type) { case 0: printf("(echo reply)\n"); printf("Code %d\n", icmph->code); echo = (echoext *) (bp + sizeof(ICMPhdr)); printf("Identifier %d\n", echo->id); printf("Sequence number %d\n", echo->seqno); break; case 3: printf("(dest unreachable)\n"); printf("Code: %d ", icmph->code); switch (icmph->code) { case 0: printf("(network)\n"); break; case 1: printf("(host)\n"); break; case 2: printf("(protocol)\n"); break; case 3: printf("(port)\n"); break; case 4: printf("(fragment needed)\n"); break; case 5: printf("(source route failed)\n"); break; case 6: printf("(network unknown)\n"); break; case 7: printf("(host unknown)\n"); break; case 9: printf("(network prohibited)\n"); break; case 10: printf("(host prohibited)\n"); break; case 11: printf("(network unreachable for TOS)\n"); break; case 12: printf("(host unreachable for TOS)\n"); break; case 13: printf("(communication filtered)\n"); break; case 14: printf("(host precedence violation)\n"); break; case 15: printf("(precedence cutoff)\n"); break; default: printf("(unknown code)\n"); break; } /* code */ break; case 4: printf("(source quench)\n"); printf("Code: %d ", icmph->code); break; case 5: printf("(redirect)\n"); printf("Code: %d ", icmph->code); switch(icmph->code) { case 0: printf("(network)\n"); break; case 1: printf("(host)\n"); break; case 2: printf("(TOS and network)\n"); break; case 3: printf("(TOS and host)\n"); break; } break; case 8: printf("(echo request)\n"); printf("Code %d\n", icmph->code); echo = (echoext *) (bp + sizeof(ICMPhdr)); printf("Identifier %d\n", echo->id); printf("Sequence number %d\n", echo->seqno); break; case 9: printf("(router advertisement)\n"); printf("Code: %d ", icmph->code); break; case 10: printf("(router solicitation)\n"); printf("Code: %d ", icmph->code); break; case 11: printf("(time exceeded)\n"); printf("Code: %d ", icmph->code); break; case 12: printf("(parameter error)\n"); printf("Code: %d ", icmph->code); break; case 13: printf("(timestamp request)\n"); printf("Code: %d ", icmph->code); break; case 14: printf("(timestamp reply)\n"); printf("Code: %d ", icmph->code); break; case 17: printf("(address mask request)\n"); printf("Code: %d ", icmph->code); break; case 18: printf("(address mask reply)\n"); printf("Code: %d ", icmph->code); break; default: printf("(unknown type)\n"); printf("Code: %d ", icmph->code); break; } printf("Checksum: %d\n", ntohs(icmph->csum)); return; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -