misctest.c
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:5k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. /*
  2.  * misctest.c
  3.  *
  4.  * Expected SUCCESSes for all tests:    0
  5.  *
  6.  * Returns:
  7.  *      Number of FAILUREs.
  8.  *
  9.  * Test of dump_snmpEngineID().                 SUCCESSes:  0
  10.  */
  11. static char    *rcsid = "$Id: misctest.c,v 5.0 2002/04/20 07:30:22 hardaker Exp $";     /* */
  12. #include <net-snmp/net-snmp-config.h>
  13. #include <stdio.h>
  14. #ifdef HAVE_NETINET_IN_H
  15. #include <netinet/in.h>
  16. #endif
  17. #include "asn1.h"
  18. #include "snmp_api.h"
  19. #include "tools.h"
  20. #include "transform_oids.h"
  21. #include "callback.h"
  22. #include <stdlib.h>
  23. extern char    *optarg;
  24. extern int      optind, optopt, opterr;
  25. /*
  26.  * Globals, &c...
  27.  */
  28. char           *local_progname;
  29. #define USAGE "Usage: %s [-h][-1a]"
  30. #define OPTIONLIST "1ah"
  31. int             doalltests = 0, dodumpseid = 0;
  32. #define ALLOPTIONS (doalltests + dodumpseid)
  33. #define LOCAL_MAXBUF (1024 * 8)
  34. #define NL "n"
  35. #define OUTPUT(o) fprintf(stdout, "nn%snn", o);
  36. #define SUCCESS(s)
  37. {
  38. if (!failcount)
  39. fprintf(stdout, "nSUCCESS: %sn", s);
  40. }
  41. #define FAILED(e, f)
  42. {
  43. if (e != SNMPERR_SUCCESS) {
  44. fprintf(stdout, "nFAILED: %sn", f);
  45. failcount += 1;
  46. }
  47. }
  48. #define IDBLAT_4 "00010203"
  49. #define IDVIOLATE1 "8000000300deedcafe"
  50. #define IDIPv4 "80000003010a090807"
  51. #define IDIPv6 "8000000302100f0e0d0c0b0a090807060504030201"
  52. #define IDMAC "8000000303ffeeddccbbaa"
  53. #define IDTEXT "8000000304"
  54. #define PRINTABLE "Let this be printable."
  55. #define IDOCTETS_7 "80000003050001020304050607"
  56. #define IDLOCAL_11 "8000000306000102030405060708090a0b"
  57. #define IDIPv4_EXTRA3 "80000003010a090807010203"
  58. #define ID_NUMSTRINGS 10
  59. /*
  60.  * Prototypes.
  61.  */
  62. void            usage(FILE * ofp);
  63. int             test_dumpseid(void);
  64. int
  65. main(int argc, char **argv)
  66. {
  67.     int             rval = SNMPERR_SUCCESS, failcount = 0;
  68.     char            ch;
  69.     local_progname = argv[0];
  70.     /*
  71.      * Parse.
  72.      */
  73.     while ((ch = getopt(argc, argv, OPTIONLIST)) != EOF) {
  74.         switch (ch) {
  75.         case '1':
  76.             dodumpseid = 1;
  77.             break;
  78.         case 'a':
  79.             doalltests = 1;
  80.             break;
  81.         case 'h':
  82.             rval = 0;
  83.         default:
  84.             usage(stdout);
  85.             exit(rval);
  86.         }
  87.         argc -= 1;
  88.         argv += 1;
  89.         if (optarg) {
  90.             argc -= 1;
  91.             argv += 1;
  92.             optarg = NULL;
  93.         }
  94.         optind = 1;
  95.     }                           /* endwhile getopt */
  96.     if ((argc > 1)) {
  97.         usage(stdout);
  98.         exit(1000);
  99.     } else if (ALLOPTIONS != 1) {
  100.         usage(stdout);
  101.         exit(1000);
  102.     }
  103.     /*
  104.      * Test stuff.
  105.      */
  106.     if (dodumpseid || doalltests) {
  107.         failcount += test_dumpseid();
  108.     }
  109.     /*
  110.      * Cleanup.
  111.      */
  112.     return failcount;
  113. }                               /* end main() */
  114. void
  115. usage(FILE * ofp)
  116. {
  117.     fprintf(ofp,
  118.             USAGE
  119.             "" NL
  120.             " -1 Test dump_snmpEngineID()." NL
  121.             " -a All tests." NL
  122.             " -h Help." NL "" NL, local_progname);
  123. }                               /* end usage() */
  124. #ifdef EXAMPLE
  125. /*******************************************************************-o-******
  126.  * test_dosomething
  127.  *
  128.  * Returns:
  129.  * Number of failures.
  130.  *
  131.  *
  132.  * Test template.
  133.  */
  134. int
  135. test_dosomething(void)
  136. {
  137.     int             rval = SNMPERR_SUCCESS, failcount = 0;
  138.     EM0(1, "UNIMPLEMENTED");    /* EM(1); /* */
  139.   test_dosomething_quit:
  140.     return failcount;
  141. }                               /* end test_dosomething() */
  142. #endif                          /* EXAMPLE */
  143. /*******************************************************************-o-******
  144.  * test_dumpseid
  145.  *
  146.  * Returns:
  147.  * Number of failures.
  148.  *
  149.  * Test dump_snmpEngineID().
  150.  */
  151. int
  152. test_dumpseid(void)
  153. {
  154.     int                         /* rval = SNMPERR_SUCCESS, */
  155.                     failcount = 0, tlen, count = 0;
  156.     char            buf[SNMP_MAXBUF],
  157.         *s, *t, *ris, *rawid_set[ID_NUMSTRINGS + 1] = {
  158.         IDBLAT_4,
  159.         IDVIOLATE1,
  160.         IDIPv4,
  161.         IDIPv6,
  162.         IDMAC,
  163.         IDTEXT,
  164.         IDOCTETS_7,
  165.         IDLOCAL_11,
  166.         IDIPv4_EXTRA3,
  167.         NULL
  168.     };
  169.     OUTPUT("Test of dump_snmpEngineID.  "
  170.            "(Does not report failure or success.)");
  171.     while ((ris = rawid_set[count++])) {
  172.         tlen = hex_to_binary2(ris, strlen(ris), &t);
  173.         if (ris == IDTEXT) {
  174.             memset(buf, 0, SNMP_MAXBUF);
  175.             memcpy(buf, t, tlen);
  176.             tlen += sprintf(buf + tlen, "%s", PRINTABLE);
  177.             SNMP_FREE(t);
  178.             t = buf;
  179.         }
  180. #ifdef SNMP_TESTING_CODE
  181.         s = dump_snmpEngineID(t, &tlen);
  182.         printf("%s    (len=%d)n", s, tlen);
  183. #endif
  184.         SNMP_FREE(s);
  185.         if (t != buf) {
  186.             SNMP_FREE(t);
  187.         }
  188.     }
  189.     return failcount;
  190. }                               /* end test_dumpseid() */