home *** CD-ROM | disk | FTP | other *** search
/ The Pier Shareware 6 / The_Pier_Shareware_Number_6_(The_Pier_Exchange)_(1995).iso / 024 / psi110g.zip / UDPDUMP.C < prev    next >
C/C++ Source or Header  |  1994-04-17  |  2KB  |  75 lines

  1. /* UDP packet tracing
  2.  * Copyright 1991 Phil Karn, KA9Q
  3.  */
  4. /* Mods by PA0GRI */
  5. #include "global.h"
  6. #include "mbuf.h"
  7. #include "netuser.h"
  8. #include "internet.h"
  9. #include "udp.h"
  10. #include "ip.h"
  11. #include "socket.h"
  12. #include "trace.h"
  13.   
  14. void rwho_dump __ARGS((FILE *fp,struct mbuf **bpp));
  15.   
  16. /* Dump a UDP header */
  17. void
  18. udp_dump(fp,bpp,source,dest,check)
  19. FILE *fp;
  20. struct mbuf **bpp;
  21. int32 source,dest;
  22. int check;      /* If 0, bypass checksum verify */
  23. {
  24.     struct udp udp;
  25.     struct pseudo_header ph;
  26.     int16 csum;
  27.   
  28.     if(bpp == NULLBUFP || *bpp == NULLBUF)
  29.         return;
  30.   
  31. #ifdef MONITOR
  32.     if (!Trace_compact_header)
  33. #endif
  34.         fprintf(fp,"UDP:");
  35.   
  36.     /* Compute checksum */
  37.     ph.source = source;
  38.     ph.dest = dest;
  39.     ph.protocol = UDP_PTCL;
  40.     ph.length = len_p(*bpp);
  41.     if((csum = cksum(&ph,*bpp,ph.length)) == 0)
  42.         check = 0;  /* No checksum error */
  43.   
  44.     ntohudp(&udp,bpp);
  45.   
  46. #ifdef MONITOR
  47.     if (!Trace_compact_header)
  48. #endif
  49.         fprintf(fp," len %u %u->%u",udp.length,udp.source,udp.dest);
  50. #ifdef MONITOR
  51.     if (!Trace_compact_header)
  52. #endif
  53.         if(udp.length > UDPHDR)
  54.             fprintf(fp," Data %u",udp.length - UDPHDR);
  55.     if(udp.checksum == 0)
  56.         check = 0;
  57.     if(check)
  58.         fprintf(fp," CHECKSUM ERROR (%u)",csum);
  59.   
  60.     fprintf(fp,"\n");
  61.   
  62.     switch(udp.dest){
  63. #ifdef RIP
  64.         case IPPORT_RIP:
  65.             rip_dump(fp,bpp);
  66. #endif
  67. #ifdef notdef
  68.         case IPPORT_RWHO:
  69.             rwho_dump(fp,bpp);
  70. #endif
  71.     }
  72.   
  73. }
  74.   
  75.