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

TCP/IP协议栈

开发平台:

Visual C++

  1. /* ICMP-related user commands
  2.  * Copyright 1991 Phil Karn, KA9Q
  3.  */
  4. #include <stdio.h>
  5. #include "global.h"
  6. #include "icmp.h"
  7. #include "ip.h"
  8. #include "mbuf.h"
  9. #include "netuser.h"
  10. #include "internet.h"
  11. #include "timer.h"
  12. #include "socket.h"
  13. #include "proc.h"
  14. #include "cmdparse.h"
  15. #include "commands.h"
  16. static int doicmpec(int argc, char *argv[],void *p);
  17. static int doicmpstat(int argc, char *argv[],void *p);
  18. static int doicmptr(int argc, char *argv[],void *p);
  19. static struct cmds Icmpcmds[] = {
  20. "echo", doicmpec, 0, 0, NULL,
  21. "status", doicmpstat, 0, 0, NULL,
  22. "trace", doicmptr, 0, 0, NULL,
  23. NULL
  24. };
  25. int Icmp_trace;
  26. int Icmp_echo = 1;
  27. int
  28. doicmp(argc,argv,p)
  29. int argc;
  30. char *argv[];
  31. void *p;
  32. {
  33. return subcmd(Icmpcmds,argc,argv,p);
  34. }
  35. static int
  36. doicmpstat(argc,argv,p)
  37. int argc;
  38. char *argv[];
  39. void *p;
  40. {
  41. register int i;
  42. int lim;
  43. /* Note that the ICMP variables are shown in column order, because
  44.  * that lines up the In and Out variables on the same line
  45.  */
  46. lim = NUMICMPMIB/2;
  47. for(i=1;i<=lim;i++){
  48. printf("(%2u)%-20s%10lu",i,Icmp_mib[i].name,
  49.  Icmp_mib[i].value.integer);
  50. printf("     (%2u)%-20s%10lun",i+lim,Icmp_mib[i+lim].name,
  51.  Icmp_mib[i+lim].value.integer);
  52. }
  53. return 0;
  54. }
  55. static int
  56. doicmptr(argc,argv,p)
  57. int argc;
  58. char *argv[];
  59. void *p;
  60. {
  61. return setbool(&Icmp_trace,"ICMP tracing",argc,argv);
  62. }
  63. static int
  64. doicmpec(argc,argv,p)
  65. int argc;
  66. char *argv[];
  67. void *p;
  68. {
  69. return setbool(&Icmp_echo,"ICMP echo response accept",argc,argv);
  70. }