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

SNMP编程

开发平台:

Unix_Linux

  1. #include "EXTERN.h"
  2. #include "perl.h"
  3. #include "XSUB.h"
  4. #include <net-snmp/library/default_store.h>
  5. static int
  6. not_here(char *s)
  7. {
  8.     croak("%s not implemented on this architecture", s);
  9.     return -1;
  10. }
  11. static double
  12. constant_NETSNMP_DS_S(char *name, int len, int arg)
  13. {
  14.     if (12 + 12 >= len ) {
  15. errno = EINVAL;
  16. return 0;
  17.     }
  18.     switch (name[12 + 12]) {
  19.     case '1':
  20. if (strEQ(name + 12, "NMP_VERSION_1")) { /* NETSNMP_DS_S removed */
  21. #ifdef NETSNMP_DS_SNMP_VERSION_1
  22.     return NETSNMP_DS_SNMP_VERSION_1;
  23. #else
  24.     goto not_there;
  25. #endif
  26. }
  27.     case '2':
  28. if (strEQ(name + 12, "NMP_VERSION_2c")) { /* NETSNMP_DS_S removed */
  29. #ifdef NETSNMP_DS_SNMP_VERSION_2c
  30.     return NETSNMP_DS_SNMP_VERSION_2c;
  31. #else
  32.     goto not_there;
  33. #endif
  34. }
  35.     case '3':
  36. if (strEQ(name + 12, "NMP_VERSION_3")) { /* NETSNMP_DS_S removed */
  37. #ifdef NETSNMP_DS_SNMP_VERSION_3
  38.     return NETSNMP_DS_SNMP_VERSION_3;
  39. #else
  40.     goto not_there;
  41. #endif
  42. }
  43.     }
  44.     errno = EINVAL;
  45.     return 0;
  46. not_there:
  47.     errno = ENOENT;
  48.     return 0;
  49. }
  50. static double
  51. constant_NETSNMP_DS_LIB_N(char *name, int len, int arg)
  52. {
  53.     switch (name[16 + 0]) {
  54.     case 'O':
  55. if (strEQ(name + 16, "O_TOKEN_WARNINGS")) { /* NETSNMP_DS_LIB_N removed */
  56. #ifdef NETSNMP_DS_LIB_NO_TOKEN_WARNINGS
  57.     return NETSNMP_DS_LIB_NO_TOKEN_WARNINGS;
  58. #else
  59.     goto not_there;
  60. #endif
  61. }
  62.     case 'U':
  63. if (strEQ(name + 16, "UMERIC_TIMETICKS")) { /* NETSNMP_DS_LIB_N removed */
  64. #ifdef NETSNMP_DS_LIB_NUMERIC_TIMETICKS
  65.     return NETSNMP_DS_LIB_NUMERIC_TIMETICKS;
  66. #else
  67.     goto not_there;
  68. #endif
  69. }
  70.     }
  71.     errno = EINVAL;
  72.     return 0;
  73. not_there:
  74.     errno = ENOENT;
  75.     return 0;
  76. }
  77. static double
  78. constant_NETSNMP_DS_LIB_O(char *name, int len, int arg)
  79. {
  80.     switch (name[16 + 0]) {
  81.     case 'I':
  82. if (strEQ(name + 16, "ID_OUTPUT_FORMAT")) { /* NETSNMP_DS_LIB_O removed */
  83. #ifdef NETSNMP_DS_LIB_OID_OUTPUT_FORMAT
  84.     return NETSNMP_DS_LIB_OID_OUTPUT_FORMAT;
  85. #else
  86.     goto not_there;
  87. #endif
  88. }
  89.     case 'P':
  90. if (strEQ(name + 16, "PTIONALCONFIG")) { /* NETSNMP_DS_LIB_O removed */
  91. #ifdef NETSNMP_DS_LIB_OPTIONALCONFIG
  92.     return NETSNMP_DS_LIB_OPTIONALCONFIG;
  93. #else
  94.     goto not_there;
  95. #endif
  96. }
  97.     }
  98.     errno = EINVAL;
  99.     return 0;
  100. not_there:
  101.     errno = ENOENT;
  102.     return 0;
  103. }
  104. static double
  105. constant_NETSNMP_DS_LIB_PRINT_N(char *name, int len, int arg)
  106. {
  107.     if (22 + 7 >= len ) {
  108. errno = EINVAL;
  109. return 0;
  110.     }
  111.     switch (name[22 + 7]) {
  112.     case 'E':
  113. if (strEQ(name + 22, "UMERIC_ENUM")) { /* NETSNMP_DS_LIB_PRINT_N removed */
  114. #ifdef NETSNMP_DS_LIB_PRINT_NUMERIC_ENUM
  115.     return NETSNMP_DS_LIB_PRINT_NUMERIC_ENUM;
  116. #else
  117.     goto not_there;
  118. #endif
  119. }
  120.     case 'O':
  121. if (strEQ(name + 22, "UMERIC_OIDS")) { /* NETSNMP_DS_LIB_PRINT_N removed */
  122. #ifdef NETSNMP_DS_LIB_PRINT_NUMERIC_OIDS
  123.     return NETSNMP_DS_LIB_PRINT_NUMERIC_OIDS;
  124. #else
  125.     goto not_there;
  126. #endif
  127. }
  128.     }
  129.     errno = EINVAL;
  130.     return 0;
  131. not_there:
  132.     errno = ENOENT;
  133.     return 0;
  134. }
  135. static double
  136. constant_NETSNMP_DS_LIB_PRIN(char *name, int len, int arg)
  137. {
  138.     if (19 + 2 >= len ) {
  139. errno = EINVAL;
  140. return 0;
  141.     }
  142.     switch (name[19 + 2]) {
  143.     case 'B':
  144. if (strEQ(name + 19, "T_BARE_VALUE")) { /* NETSNMP_DS_LIB_PRIN removed */
  145. #ifdef NETSNMP_DS_LIB_PRINT_BARE_VALUE
  146.     return NETSNMP_DS_LIB_PRINT_BARE_VALUE;
  147. #else
  148.     goto not_there;
  149. #endif
  150. }
  151.     case 'F':
  152. if (strEQ(name + 19, "T_FULL_OID")) { /* NETSNMP_DS_LIB_PRIN removed */
  153. #ifdef NETSNMP_DS_LIB_PRINT_FULL_OID
  154.     return NETSNMP_DS_LIB_PRINT_FULL_OID;
  155. #else
  156.     goto not_there;
  157. #endif
  158. }
  159.     case 'H':
  160. if (strEQ(name + 19, "T_HEX_TEXT")) { /* NETSNMP_DS_LIB_PRIN removed */
  161. #ifdef NETSNMP_DS_LIB_PRINT_HEX_TEXT
  162.     return NETSNMP_DS_LIB_PRINT_HEX_TEXT;
  163. #else
  164.     goto not_there;
  165. #endif
  166. }
  167.     case 'N':
  168. if (!strnEQ(name + 19,"T_", 2))
  169.     break;
  170. return constant_NETSNMP_DS_LIB_PRINT_N(name, len, arg);
  171.     case 'S':
  172. if (strEQ(name + 19, "T_SUFFIX_ONLY")) { /* NETSNMP_DS_LIB_PRIN removed */
  173. #ifdef NETSNMP_DS_LIB_PRINT_SUFFIX_ONLY
  174.     return NETSNMP_DS_LIB_PRINT_SUFFIX_ONLY;
  175. #else
  176.     goto not_there;
  177. #endif
  178. }
  179.     case 'U':
  180. if (strEQ(name + 19, "T_UCD_STYLE_OID")) { /* NETSNMP_DS_LIB_PRIN removed */
  181. #ifdef NETSNMP_DS_LIB_PRINT_UCD_STYLE_OID
  182.     return NETSNMP_DS_LIB_PRINT_UCD_STYLE_OID;
  183. #else
  184.     goto not_there;
  185. #endif
  186. }
  187.     }
  188.     errno = EINVAL;
  189.     return 0;
  190. not_there:
  191.     errno = ENOENT;
  192.     return 0;
  193. }
  194. static double
  195. constant_NETSNMP_DS_LIB_PR(char *name, int len, int arg)
  196. {
  197.     if (17 + 1 >= len ) {
  198. errno = EINVAL;
  199. return 0;
  200.     }
  201.     switch (name[17 + 1]) {
  202.     case 'N':
  203. if (!strnEQ(name + 17,"I", 1))
  204.     break;
  205. return constant_NETSNMP_DS_LIB_PRIN(name, len, arg);
  206.     case 'V':
  207. if (strEQ(name + 17, "IVPASSPHRASE")) { /* NETSNMP_DS_LIB_PR removed */
  208. #ifdef NETSNMP_DS_LIB_PRIVPASSPHRASE
  209.     return NETSNMP_DS_LIB_PRIVPASSPHRASE;
  210. #else
  211.     goto not_there;
  212. #endif
  213. }
  214.     }
  215.     errno = EINVAL;
  216.     return 0;
  217. not_there:
  218.     errno = ENOENT;
  219.     return 0;
  220. }
  221. static double
  222. constant_NETSNMP_DS_LIB_P(char *name, int len, int arg)
  223. {
  224.     switch (name[16 + 0]) {
  225.     case 'A':
  226. if (strEQ(name + 16, "ASSPHRASE")) { /* NETSNMP_DS_LIB_P removed */
  227. #ifdef NETSNMP_DS_LIB_PASSPHRASE
  228.     return NETSNMP_DS_LIB_PASSPHRASE;
  229. #else
  230.     goto not_there;
  231. #endif
  232. }
  233.     case 'E':
  234. if (strEQ(name + 16, "ERSISTENT_DIR")) { /* NETSNMP_DS_LIB_P removed */
  235. #ifdef NETSNMP_DS_LIB_PERSISTENT_DIR
  236.     return NETSNMP_DS_LIB_PERSISTENT_DIR;
  237. #else
  238.     goto not_there;
  239. #endif
  240. }
  241.     case 'R':
  242. return constant_NETSNMP_DS_LIB_PR(name, len, arg);
  243.     }
  244.     errno = EINVAL;
  245.     return 0;
  246. not_there:
  247.     errno = ENOENT;
  248.     return 0;
  249. }
  250. static double
  251. constant_NETSNMP_DS_LIB_Q(char *name, int len, int arg)
  252. {
  253.     if (16 + 4 >= len ) {
  254. errno = EINVAL;
  255. return 0;
  256.     }
  257.     switch (name[16 + 4]) {
  258.     case 'E':
  259. if (strEQ(name + 16, "UICKE_PRINT")) { /* NETSNMP_DS_LIB_Q removed */
  260. #ifdef NETSNMP_DS_LIB_QUICKE_PRINT
  261.     return NETSNMP_DS_LIB_QUICKE_PRINT;
  262. #else
  263.     goto not_there;
  264. #endif
  265. }
  266.     case '_':
  267. if (strEQ(name + 16, "UICK_PRINT")) { /* NETSNMP_DS_LIB_Q removed */
  268. #ifdef NETSNMP_DS_LIB_QUICK_PRINT
  269.     return NETSNMP_DS_LIB_QUICK_PRINT;
  270. #else
  271.     goto not_there;
  272. #endif
  273. }
  274.     }
  275.     errno = EINVAL;
  276.     return 0;
  277. not_there:
  278.     errno = ENOENT;
  279.     return 0;
  280. }
  281. static double
  282. constant_NETSNMP_DS_LIB_A(char *name, int len, int arg)
  283. {
  284.     switch (name[16 + 0]) {
  285.     case 'L':
  286. if (strEQ(name + 16, "LARM_DONT_USE_SIG")) { /* NETSNMP_DS_LIB_A removed */
  287. #ifdef NETSNMP_DS_LIB_ALARM_DONT_USE_SIG
  288.     return NETSNMP_DS_LIB_ALARM_DONT_USE_SIG;
  289. #else
  290.     goto not_there;
  291. #endif
  292. }
  293.     case 'P':
  294. if (strEQ(name + 16, "PPTYPE")) { /* NETSNMP_DS_LIB_A removed */
  295. #ifdef NETSNMP_DS_LIB_APPTYPE
  296.     return NETSNMP_DS_LIB_APPTYPE;
  297. #else
  298.     goto not_there;
  299. #endif
  300. }
  301.     case 'U':
  302. if (strEQ(name + 16, "UTHPASSPHRASE")) { /* NETSNMP_DS_LIB_A removed */
  303. #ifdef NETSNMP_DS_LIB_AUTHPASSPHRASE
  304.     return NETSNMP_DS_LIB_AUTHPASSPHRASE;
  305. #else
  306.     goto not_there;
  307. #endif
  308. }
  309.     }
  310.     errno = EINVAL;
  311.     return 0;
  312. not_there:
  313.     errno = ENOENT;
  314.     return 0;
  315. }
  316. static double
  317. constant_NETSNMP_DS_LIB_RE(char *name, int len, int arg)
  318. {
  319.     switch (name[17 + 0]) {
  320.     case 'A':
  321. if (strEQ(name + 17, "AD_UCD_STYLE_OID")) { /* NETSNMP_DS_LIB_RE removed */
  322. #ifdef NETSNMP_DS_LIB_READ_UCD_STYLE_OID
  323.     return NETSNMP_DS_LIB_READ_UCD_STYLE_OID;
  324. #else
  325.     goto not_there;
  326. #endif
  327. }
  328.     case 'G':
  329. if (strEQ(name + 17, "GEX_ACCESS")) { /* NETSNMP_DS_LIB_RE removed */
  330. #ifdef NETSNMP_DS_LIB_REGEX_ACCESS
  331.     return NETSNMP_DS_LIB_REGEX_ACCESS;
  332. #else
  333.     goto not_there;
  334. #endif
  335. }
  336.     case 'V':
  337. if (strEQ(name + 17, "VERSE_ENCODE")) { /* NETSNMP_DS_LIB_RE removed */
  338. #ifdef NETSNMP_DS_LIB_REVERSE_ENCODE
  339.     return NETSNMP_DS_LIB_REVERSE_ENCODE;
  340. #else
  341.     goto not_there;
  342. #endif
  343. }
  344.     }
  345.     errno = EINVAL;
  346.     return 0;
  347. not_there:
  348.     errno = ENOENT;
  349.     return 0;
  350. }
  351. static double
  352. constant_NETSNMP_DS_LIB_R(char *name, int len, int arg)
  353. {
  354.     switch (name[16 + 0]) {
  355.     case 'A':
  356. if (strEQ(name + 16, "ANDOM_ACCESS")) { /* NETSNMP_DS_LIB_R removed */
  357. #ifdef NETSNMP_DS_LIB_RANDOM_ACCESS
  358.     return NETSNMP_DS_LIB_RANDOM_ACCESS;
  359. #else
  360.     goto not_there;
  361. #endif
  362. }
  363.     case 'E':
  364. return constant_NETSNMP_DS_LIB_RE(name, len, arg);
  365.     }
  366.     errno = EINVAL;
  367.     return 0;
  368. not_there:
  369.     errno = ENOENT;
  370.     return 0;
  371. }
  372. static double
  373. constant_NETSNMP_DS_LIB_SE(char *name, int len, int arg)
  374. {
  375.     if (17 + 1 >= len ) {
  376. errno = EINVAL;
  377. return 0;
  378.     }
  379.     switch (name[17 + 1]) {
  380.     case 'L':
  381. if (strEQ(name + 17, "CLEVEL")) { /* NETSNMP_DS_LIB_SE removed */
  382. #ifdef NETSNMP_DS_LIB_SECLEVEL
  383.     return NETSNMP_DS_LIB_SECLEVEL;
  384. #else
  385.     goto not_there;
  386. #endif
  387. }
  388.     case 'M':
  389. if (strEQ(name + 17, "CMODEL")) { /* NETSNMP_DS_LIB_SE removed */
  390. #ifdef NETSNMP_DS_LIB_SECMODEL
  391.     return NETSNMP_DS_LIB_SECMODEL;
  392. #else
  393.     goto not_there;
  394. #endif
  395. }
  396.     case 'N':
  397. if (strEQ(name + 17, "CNAME")) { /* NETSNMP_DS_LIB_SE removed */
  398. #ifdef NETSNMP_DS_LIB_SECNAME
  399.     return NETSNMP_DS_LIB_SECNAME;
  400. #else
  401.     goto not_there;
  402. #endif
  403. }
  404.     }
  405.     errno = EINVAL;
  406.     return 0;
  407. not_there:
  408.     errno = ENOENT;
  409.     return 0;
  410. }
  411. static double
  412. constant_NETSNMP_DS_LIB_S(char *name, int len, int arg)
  413. {
  414.     switch (name[16 + 0]) {
  415.     case 'A':
  416. if (strEQ(name + 16, "AVE_MIB_DESCRS")) { /* NETSNMP_DS_LIB_S removed */
  417. #ifdef NETSNMP_DS_LIB_SAVE_MIB_DESCRS
  418.     return NETSNMP_DS_LIB_SAVE_MIB_DESCRS;
  419. #else
  420.     goto not_there;
  421. #endif
  422. }
  423.     case 'E':
  424. return constant_NETSNMP_DS_LIB_SE(name, len, arg);
  425.     case 'N':
  426. if (strEQ(name + 16, "NMPVERSION")) { /* NETSNMP_DS_LIB_S removed */
  427. #ifdef NETSNMP_DS_LIB_SNMPVERSION
  428.     return NETSNMP_DS_LIB_SNMPVERSION;
  429. #else
  430.     goto not_there;
  431. #endif
  432. }
  433.     }
  434.     errno = EINVAL;
  435.     return 0;
  436. not_there:
  437.     errno = ENOENT;
  438.     return 0;
  439. }
  440. static double
  441. constant_NETSNMP_DS_LIB_CON(char *name, int len, int arg)
  442. {
  443.     switch (name[18 + 0]) {
  444.     case 'F':
  445. if (strEQ(name + 18, "FIGURATION_DIR")) { /* NETSNMP_DS_LIB_CON removed */
  446. #ifdef NETSNMP_DS_LIB_CONFIGURATION_DIR
  447.     return NETSNMP_DS_LIB_CONFIGURATION_DIR;
  448. #else
  449.     goto not_there;
  450. #endif
  451. }
  452.     case 'T':
  453. if (strEQ(name + 18, "TEXT")) { /* NETSNMP_DS_LIB_CON removed */
  454. #ifdef NETSNMP_DS_LIB_CONTEXT
  455.     return NETSNMP_DS_LIB_CONTEXT;
  456. #else
  457.     goto not_there;
  458. #endif
  459. }
  460.     }
  461.     errno = EINVAL;
  462.     return 0;
  463. not_there:
  464.     errno = ENOENT;
  465.     return 0;
  466. }
  467. static double
  468. constant_NETSNMP_DS_LIB_C(char *name, int len, int arg)
  469. {
  470.     if (16 + 1 >= len ) {
  471. errno = EINVAL;
  472. return 0;
  473.     }
  474.     switch (name[16 + 1]) {
  475.     case 'M':
  476. if (strEQ(name + 16, "OMMUNITY")) { /* NETSNMP_DS_LIB_C removed */
  477. #ifdef NETSNMP_DS_LIB_COMMUNITY
  478.     return NETSNMP_DS_LIB_COMMUNITY;
  479. #else
  480.     goto not_there;
  481. #endif
  482. }
  483.     case 'N':
  484. if (!strnEQ(name + 16,"O", 1))
  485.     break;
  486. return constant_NETSNMP_DS_LIB_CON(name, len, arg);
  487.     }
  488.     errno = EINVAL;
  489.     return 0;
  490. not_there:
  491.     errno = ENOENT;
  492.     return 0;
  493. }
  494. static double
  495. constant_NETSNMP_DS_LIB_DO(char *name, int len, int arg)
  496. {
  497.     if (17 + 3 >= len ) {
  498. errno = EINVAL;
  499. return 0;
  500.     }
  501.     switch (name[17 + 3]) {
  502.     case 'B':
  503. if (strEQ(name + 17, "NT_BREAKDOWN_OIDS")) { /* NETSNMP_DS_LIB_DO removed */
  504. #ifdef NETSNMP_DS_LIB_DONT_BREAKDOWN_OIDS
  505.     return NETSNMP_DS_LIB_DONT_BREAKDOWN_OIDS;
  506. #else
  507.     goto not_there;
  508. #endif
  509. }
  510.     case 'C':
  511. if (strEQ(name + 17, "NT_CHECK_RANGE")) { /* NETSNMP_DS_LIB_DO removed */
  512. #ifdef NETSNMP_DS_LIB_DONT_CHECK_RANGE
  513.     return NETSNMP_DS_LIB_DONT_CHECK_RANGE;
  514. #else
  515.     goto not_there;
  516. #endif
  517. }
  518.     case 'R':
  519. if (strEQ(name + 17, "NT_READ_CONFIGS")) { /* NETSNMP_DS_LIB_DO removed */
  520. #ifdef NETSNMP_DS_LIB_DONT_READ_CONFIGS
  521.     return NETSNMP_DS_LIB_DONT_READ_CONFIGS;
  522. #else
  523.     goto not_there;
  524. #endif
  525. }
  526.     }
  527.     errno = EINVAL;
  528.     return 0;
  529. not_there:
  530.     errno = ENOENT;
  531.     return 0;
  532. }
  533. static double
  534. constant_NETSNMP_DS_LIB_D(char *name, int len, int arg)
  535. {
  536.     switch (name[16 + 0]) {
  537.     case 'E':
  538. if (strEQ(name + 16, "EFAULT_PORT")) { /* NETSNMP_DS_LIB_D removed */
  539. #ifdef NETSNMP_DS_LIB_DEFAULT_PORT
  540.     return NETSNMP_DS_LIB_DEFAULT_PORT;
  541. #else
  542.     goto not_there;
  543. #endif
  544. }
  545.     case 'O':
  546. return constant_NETSNMP_DS_LIB_DO(name, len, arg);
  547.     case 'U':
  548. if (strEQ(name + 16, "UMP_PACKET")) { /* NETSNMP_DS_LIB_D removed */
  549. #ifdef NETSNMP_DS_LIB_DUMP_PACKET
  550.     return NETSNMP_DS_LIB_DUMP_PACKET;
  551. #else
  552.     goto not_there;
  553. #endif
  554. }
  555.     }
  556.     errno = EINVAL;
  557.     return 0;
  558. not_there:
  559.     errno = ENOENT;
  560.     return 0;
  561. }
  562. static double
  563. constant_NETSNMP_DS_LIB_E(char *name, int len, int arg)
  564. {
  565.     switch (name[16 + 0]) {
  566.     case 'S':
  567. if (strEQ(name + 16, "SCAPE_QUOTES")) { /* NETSNMP_DS_LIB_E removed */
  568. #ifdef NETSNMP_DS_LIB_ESCAPE_QUOTES
  569.     return NETSNMP_DS_LIB_ESCAPE_QUOTES;
  570. #else
  571.     goto not_there;
  572. #endif
  573. }
  574.     case 'X':
  575. if (strEQ(name + 16, "XTENDED_INDEX")) { /* NETSNMP_DS_LIB_E removed */
  576. #ifdef NETSNMP_DS_LIB_EXTENDED_INDEX
  577.     return NETSNMP_DS_LIB_EXTENDED_INDEX;
  578. #else
  579.     goto not_there;
  580. #endif
  581. }
  582.     }
  583.     errno = EINVAL;
  584.     return 0;
  585. not_there:
  586.     errno = ENOENT;
  587.     return 0;
  588. }
  589. static double
  590. constant_NETSNMP_DS_LIB_H(char *name, int len, int arg)
  591. {
  592.     if (16 + 9 >= len ) {
  593. errno = EINVAL;
  594. return 0;
  595.     }
  596.     switch (name[16 + 9]) {
  597.     case 'C':
  598. if (strEQ(name + 16, "AVE_READ_CONFIG")) { /* NETSNMP_DS_LIB_H removed */
  599. #ifdef NETSNMP_DS_LIB_HAVE_READ_CONFIG
  600.     return NETSNMP_DS_LIB_HAVE_READ_CONFIG;
  601. #else
  602.     goto not_there;
  603. #endif
  604. }
  605.     case 'P':
  606. if (strEQ(name + 16, "AVE_READ_PREMIB_CONFIG")) { /* NETSNMP_DS_LIB_H removed */
  607. #ifdef NETSNMP_DS_LIB_HAVE_READ_PREMIB_CONFIG
  608.     return NETSNMP_DS_LIB_HAVE_READ_PREMIB_CONFIG;
  609. #else
  610.     goto not_there;
  611. #endif
  612. }
  613.     }
  614.     errno = EINVAL;
  615.     return 0;
  616. not_there:
  617.     errno = ENOENT;
  618.     return 0;
  619. }
  620. static double
  621. constant_NETSNMP_DS_LIB_MIB_(char *name, int len, int arg)
  622. {
  623.     switch (name[19 + 0]) {
  624.     case 'C':
  625. if (strEQ(name + 19, "COMMENT_TERM")) { /* NETSNMP_DS_LIB_MIB_ removed */
  626. #ifdef NETSNMP_DS_LIB_MIB_COMMENT_TERM
  627.     return NETSNMP_DS_LIB_MIB_COMMENT_TERM;
  628. #else
  629.     goto not_there;
  630. #endif
  631. }
  632.     case 'E':
  633. if (strEQ(name + 19, "ERRORS")) { /* NETSNMP_DS_LIB_MIB_ removed */
  634. #ifdef NETSNMP_DS_LIB_MIB_ERRORS
  635.     return NETSNMP_DS_LIB_MIB_ERRORS;
  636. #else
  637.     goto not_there;
  638. #endif
  639. }
  640.     case 'P':
  641. if (strEQ(name + 19, "PARSE_LABEL")) { /* NETSNMP_DS_LIB_MIB_ removed */
  642. #ifdef NETSNMP_DS_LIB_MIB_PARSE_LABEL
  643.     return NETSNMP_DS_LIB_MIB_PARSE_LABEL;
  644. #else
  645.     goto not_there;
  646. #endif
  647. }
  648.     case 'R':
  649. if (strEQ(name + 19, "REPLACE")) { /* NETSNMP_DS_LIB_MIB_ removed */
  650. #ifdef NETSNMP_DS_LIB_MIB_REPLACE
  651.     return NETSNMP_DS_LIB_MIB_REPLACE;
  652. #else
  653.     goto not_there;
  654. #endif
  655. }
  656.     case 'W':
  657. if (strEQ(name + 19, "WARNINGS")) { /* NETSNMP_DS_LIB_MIB_ removed */
  658. #ifdef NETSNMP_DS_LIB_MIB_WARNINGS
  659.     return NETSNMP_DS_LIB_MIB_WARNINGS;
  660. #else
  661.     goto not_there;
  662. #endif
  663. }
  664.     }
  665.     errno = EINVAL;
  666.     return 0;
  667. not_there:
  668.     errno = ENOENT;
  669.     return 0;
  670. }
  671. static double
  672. constant_NETSNMP_DS_LIB_M(char *name, int len, int arg)
  673. {
  674.     if (16 + 2 >= len ) {
  675. errno = EINVAL;
  676. return 0;
  677.     }
  678.     switch (name[16 + 2]) {
  679.     case 'D':
  680. if (strEQ(name + 16, "IBDIRS")) { /* NETSNMP_DS_LIB_M removed */
  681. #ifdef NETSNMP_DS_LIB_MIBDIRS
  682.     return NETSNMP_DS_LIB_MIBDIRS;
  683. #else
  684.     goto not_there;
  685. #endif
  686. }
  687.     case '_':
  688. if (!strnEQ(name + 16,"IB", 2))
  689.     break;
  690. return constant_NETSNMP_DS_LIB_MIB_(name, len, arg);
  691.     }
  692.     errno = EINVAL;
  693.     return 0;
  694. not_there:
  695.     errno = ENOENT;
  696.     return 0;
  697. }
  698. static double
  699. constant_NETSNMP_DS_LIB_(char *name, int len, int arg)
  700. {
  701.     switch (name[15 + 0]) {
  702.     case 'A':
  703. return constant_NETSNMP_DS_LIB_A(name, len, arg);
  704.     case 'C':
  705. return constant_NETSNMP_DS_LIB_C(name, len, arg);
  706.     case 'D':
  707. return constant_NETSNMP_DS_LIB_D(name, len, arg);
  708.     case 'E':
  709. return constant_NETSNMP_DS_LIB_E(name, len, arg);
  710.     case 'H':
  711. return constant_NETSNMP_DS_LIB_H(name, len, arg);
  712.     case 'L':
  713. if (strEQ(name + 15, "LOG_TIMESTAMP")) { /* NETSNMP_DS_LIB_ removed */
  714. #ifdef NETSNMP_DS_LIB_LOG_TIMESTAMP
  715.     return NETSNMP_DS_LIB_LOG_TIMESTAMP;
  716. #else
  717.     goto not_there;
  718. #endif
  719. }
  720.     case 'M':
  721. return constant_NETSNMP_DS_LIB_M(name, len, arg);
  722.     case 'N':
  723. return constant_NETSNMP_DS_LIB_N(name, len, arg);
  724.     case 'O':
  725. return constant_NETSNMP_DS_LIB_O(name, len, arg);
  726.     case 'P':
  727. return constant_NETSNMP_DS_LIB_P(name, len, arg);
  728.     case 'Q':
  729. return constant_NETSNMP_DS_LIB_Q(name, len, arg);
  730.     case 'R':
  731. return constant_NETSNMP_DS_LIB_R(name, len, arg);
  732.     case 'S':
  733. return constant_NETSNMP_DS_LIB_S(name, len, arg);
  734.     }
  735.     errno = EINVAL;
  736.     return 0;
  737. not_there:
  738.     errno = ENOENT;
  739.     return 0;
  740. }
  741. static double
  742. constant_NETSNMP_DS_L(char *name, int len, int arg)
  743. {
  744.     if (12 + 2 >= len ) {
  745. errno = EINVAL;
  746. return 0;
  747.     }
  748.     switch (name[12 + 2]) {
  749.     case 'R':
  750. if (strEQ(name + 12, "IBRARY_ID")) { /* NETSNMP_DS_L removed */
  751. #ifdef NETSNMP_DS_LIBRARY_ID
  752.     return NETSNMP_DS_LIBRARY_ID;
  753. #else
  754.     goto not_there;
  755. #endif
  756. }
  757.     case '_':
  758. if (!strnEQ(name + 12,"IB", 2))
  759.     break;
  760. return constant_NETSNMP_DS_LIB_(name, len, arg);
  761.     }
  762.     errno = EINVAL;
  763.     return 0;
  764. not_there:
  765.     errno = ENOENT;
  766.     return 0;
  767. }
  768. static double
  769. constant_NETSNMP_DS_M(char *name, int len, int arg)
  770. {
  771.     if (12 + 3 >= len ) {
  772. errno = EINVAL;
  773. return 0;
  774.     }
  775.     switch (name[12 + 3]) {
  776.     case 'I':
  777. if (strEQ(name + 12, "AX_IDS")) { /* NETSNMP_DS_M removed */
  778. #ifdef NETSNMP_DS_MAX_IDS
  779.     return NETSNMP_DS_MAX_IDS;
  780. #else
  781.     goto not_there;
  782. #endif
  783. }
  784.     case 'S':
  785. if (strEQ(name + 12, "AX_SUBIDS")) { /* NETSNMP_DS_M removed */
  786. #ifdef NETSNMP_DS_MAX_SUBIDS
  787.     return NETSNMP_DS_MAX_SUBIDS;
  788. #else
  789.     goto not_there;
  790. #endif
  791. }
  792.     }
  793.     errno = EINVAL;
  794.     return 0;
  795. not_there:
  796.     errno = ENOENT;
  797.     return 0;
  798. }
  799. static double
  800. constant(char *name, int len, int arg)
  801. {
  802.     errno = 0;
  803.     if (0 + 11 >= len ) {
  804. errno = EINVAL;
  805. return 0;
  806.     }
  807.     switch (name[0 + 11]) {
  808.     case 'A':
  809. if (strEQ(name + 0, "NETSNMP_DS_APPLICATION_ID")) { /*  removed */
  810. #ifdef NETSNMP_DS_APPLICATION_ID
  811.     return NETSNMP_DS_APPLICATION_ID;
  812. #else
  813.     goto not_there;
  814. #endif
  815. }
  816.     case 'L':
  817. if (!strnEQ(name + 0,"NETSNMP_DS_", 11))
  818.     break;
  819. return constant_NETSNMP_DS_L(name, len, arg);
  820.     case 'M':
  821. if (!strnEQ(name + 0,"NETSNMP_DS_", 11))
  822.     break;
  823. return constant_NETSNMP_DS_M(name, len, arg);
  824.     case 'S':
  825. if (!strnEQ(name + 0,"NETSNMP_DS_", 11))
  826.     break;
  827. return constant_NETSNMP_DS_S(name, len, arg);
  828.     case 'T':
  829. if (strEQ(name + 0, "NETSNMP_DS_TOKEN_ID")) { /*  removed */
  830. #ifdef NETSNMP_DS_TOKEN_ID
  831.     return NETSNMP_DS_TOKEN_ID;
  832. #else
  833.     goto not_there;
  834. #endif
  835. }
  836.     }
  837.     errno = EINVAL;
  838.     return 0;
  839. not_there:
  840.     errno = ENOENT;
  841.     return 0;
  842. }
  843. MODULE = NetSNMP::default_store PACKAGE = NetSNMP::default_store
  844. double
  845. constant(sv,arg)
  846.     PREINIT:
  847. STRLEN len;
  848.     INPUT:
  849. SV * sv
  850. char * s = SvPV(sv, len);
  851. int arg
  852.     CODE:
  853. RETVAL = constant(s,len,arg);
  854.     OUTPUT:
  855. RETVAL
  856. int
  857. netsnmp_ds_get_boolean(storeid, which)
  858. int storeid
  859. int which
  860. int
  861. netsnmp_ds_get_int(storeid, which)
  862. int storeid
  863. int which
  864. char *
  865. netsnmp_ds_get_string(storeid, which)
  866. int storeid
  867. int which
  868. void *
  869. netsnmp_ds_get_void(storeid, which)
  870. int storeid
  871. int which
  872. int
  873. netsnmp_ds_register_config(type, ftype, token, storeid, which)
  874. unsigned char type
  875. const char * ftype
  876. const char * token
  877. int storeid
  878. int which
  879. int
  880. netsnmp_ds_register_premib(type, ftype, token, storeid, which)
  881. unsigned char type
  882. const char * ftype
  883. const char * token
  884. int storeid
  885. int which
  886. int
  887. netsnmp_ds_set_boolean(storeid, which, value)
  888. int storeid
  889. int which
  890. int value
  891. int
  892. netsnmp_ds_set_int(storeid, which, value)
  893. int storeid
  894. int which
  895. int value
  896. int
  897. netsnmp_ds_set_string(storeid, which, value)
  898. int storeid
  899. int which
  900. const char * value
  901. int
  902. netsnmp_ds_set_void(storeid, which, value)
  903. int storeid
  904. int which
  905. void * value
  906. void
  907. netsnmp_ds_shutdown()
  908. int
  909. netsnmp_ds_toggle_boolean(storeid, which)
  910. int storeid
  911. int which