enetdump.c
上传用户:hepax88
上传日期:2007-01-03
资源大小:1101k
文件大小:1k
源码类别:

TCP/IP协议栈

开发平台:

Visual C++

  1. /* Ethernet header tracing routines
  2.  * Copyright 1991 Phil Karn, KA9Q
  3.  */
  4. #include <stdio.h>
  5. #include "global.h"
  6. #include "mbuf.h"
  7. #include "enet.h"
  8. #include "trace.h"
  9. void
  10. ether_dump(
  11. FILE *fp,
  12. struct mbuf **bpp,
  13. int check /* Not used */
  14. ){
  15. struct ether ehdr;
  16. char s[20],d[20];
  17. ntohether(&ehdr,bpp);
  18. pether(s,ehdr.source);
  19. pether(d,ehdr.dest);
  20. fprintf(fp,"Ether: len %u %s->%s",ETHERLEN + len_p(*bpp),s,d);
  21. switch(ehdr.type){
  22. case IP_TYPE:
  23. fprintf(fp," type IPn");
  24. ip_dump(fp,bpp,1);
  25. break;
  26. case REVARP_TYPE:
  27. fprintf(fp," type REVARPn");
  28. arp_dump(fp,bpp);
  29. break;
  30. case ARP_TYPE:
  31. fprintf(fp," type ARPn");
  32. arp_dump(fp,bpp);
  33. break;
  34. default:
  35. fprintf(fp," type 0x%xn",ehdr.type);
  36. break;
  37. }
  38. }
  39. int
  40. ether_forus(struct iface *iface,struct mbuf *bp)
  41. {
  42. /* Just look at the multicast bit */
  43. if(bp->data[0] & 1)
  44. return 0;
  45. else
  46. return 1;
  47. }