udpShow.c
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:3k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* udpShow.c - UDP information display routines */
  2. /* Copyright 1984 - 2001 Wind River Systems, Inc. */
  3. #include "copyright_wrs.h"
  4. /*
  5. modification history
  6. --------------------
  7. 01f,10may02,kbw  making man page edits
  8. 01e,15oct01,rae  merge from truestack ver 01f, base 01d (VIRTUAL_STACK)
  9. 01d,14dec97,jdi  doc: cleanup
  10. 01c,04aug97,kbw  fixed man page problems found in beta review
  11. 01b,20apr97,kbw  fixed man page format, spell check.
  12. 01a,08mar97,vin  written.
  13. */
  14. /*
  15. DESCRIPTION
  16. This library provides routines to show UDP related statistics.
  17. Interpreting these statistics requires detailed knowledge of Internet
  18. network protocols.  Information on these protocols can be found in
  19. the following books:
  20. .iP
  21. .I "TCP/IP Illustrated Volume II, The Implementation,"
  22. by Richard Stevens
  23. .iP
  24. .I "The Design and Implementation of the 4.4 BSD UNIX Operating System,"
  25. by Leffler, McKusick, Karels and Quarterman
  26. .LP
  27. The udpShowInit() routine links the UDP show facility into the VxWorks
  28. system.  This is performed automatically if INCLUDE_NET_SHOW and INCLUDE_UDP
  29. are defined.
  30. SEE ALSO: netLib, netShow
  31. */
  32. #include "vxWorks.h"
  33. #include "sys/types.h"
  34. #include "netinet/in.h"
  35. #include "netinet/in_systm.h"
  36. #include "netinet/ip.h"
  37. #include "netinet/ip_var.h"
  38. #include "netinet/udp.h"
  39. #include "netinet/udp_var.h"
  40. #include "errno.h"
  41. #include "string.h"
  42. #include "stdio.h"
  43. #ifdef VIRTUAL_STACK
  44. #include "netinet/vsLib.h"
  45. #endif    /* VIRTUAL_STACK */
  46. #define plural(num) ((num) > 1 ? "s": "")
  47. /* externs */
  48. #ifndef VIRTUAL_STACK 
  49. IMPORT struct inpcbhead udb; /* defined in udp_usrreq.c */
  50. IMPORT struct inpcbhead *  _pUdpPcbHead; /* defined in netShow.c */
  51. IMPORT struct udpstat  udpstat; /* defined in udp_usrreq.c */
  52. #endif    /* VIRTUAL_STACK */
  53. /******************************************************************************
  54. *
  55. * udpShowInit - initialize UDP show routines
  56. *
  57. * This routine links the UDP show facility into the VxWorks system.
  58. * These routines are included automatically if INCLUDE_NET_SHOW
  59. * and INCLUDE_UDP are defined.
  60. *
  61. * RETURNS: N/A
  62. */
  63. void udpShowInit (void)
  64.     {
  65.     _pUdpPcbHead = &udb;  /* initialize the pcb for generic show rtns */
  66.     }
  67. /*****************************************************************************
  68. *
  69. * udpstatShow - display statistics for the UDP protocol
  70. *
  71. * This routine displays statistics for the UDP protocol.
  72. *
  73. * RETURNS: N/A
  74. */
  75. void udpstatShow (void)
  76.     {
  77.     unsigned int udptotal = udpstat.udps_ipackets + udpstat.udps_opackets;
  78. #ifdef VIRTUAL_STACK
  79.     printf("UDP: (stack number %d)nt%u total packetsn", myStackNum,
  80.            udptotal);
  81. #else
  82.     printf("UDP:nt%u total packetsn", udptotal);
  83. #endif /* VIRTUAL_STACK */
  84.     printf("t%u input packetsn", (int)udpstat.udps_ipackets);
  85.     printf("t%u output packetsn", (int)udpstat.udps_opackets);
  86.     printf("t%u incomplete header%sn",
  87.    (int)udpstat.udps_hdrops, plural(udpstat.udps_hdrops));
  88.     printf("t%u bad data length field%sn",
  89.    (int)udpstat.udps_badlen, plural(udpstat.udps_badlen));
  90.     printf("t%u bad checksum%sn",
  91.    (int)udpstat.udps_badsum, plural(udpstat.udps_badsum));
  92.     printf("t%u broadcasts received with no portsn",
  93.    (int)udpstat.udps_noportbcast);
  94.     printf("t%u full socket%sn",
  95.    (int)udpstat.udps_fullsock, plural(udpstat.udps_fullsock));
  96.     printf("t%u pcb cache lookup%s failedn",
  97.    (int)udpstat.udpps_pcbcachemiss,
  98.            plural(udpstat.udpps_pcbcachemiss));
  99.     printf("t%u pcb hash lookup%s failedn",
  100.    (int)udpstat.udpps_pcbhashmiss, plural(udpstat.udpps_pcbhashmiss));
  101.     }