Sophie

Sophie

distrib > Mandriva > 2007.0 > x86_64 > media > main-release-src > by-pkgid > 1dd367060ea0c1b1c482e63d2895e2cf > files > 6

net-snmp-5.3.1-2mdv2007.0.src.rpm

--- net-snmp-5.1/perl/SNMP/SNMP.xs.old	2003-12-04 12:25:07.000000000 +0200
+++ net-snmp-5.1/perl/SNMP/SNMP.xs	2003-12-04 12:25:14.000000000 +0200
@@ -1242,7 +1242,7 @@
   int getlabel_flag = NO_FLAGS;
   int sprintval_flag = USE_BASIC;
   netsnmp_pdu *reply_pdu;
-  int old_numeric, old_printfull;
+  int old_format;
   netsnmp_transport *transport = NULL;
 
   SV* cb = ((struct snmp_xs_cb_data*)cb_data)->perl_cb;
@@ -1308,23 +1308,33 @@
       varlist_ref = newRV_noinc((SV*)varlist);
 
       /*
-      ** Set up for numeric OID's, if necessary.  Save the old values
-      ** so that they can be restored when we finish -- these are
-      ** library-wide globals, and have to be set/restored for each
+      ** Set up for numeric or full OID's, if necessary.  Save the old
+      ** output format so that it can be restored when we finish -- this
+      ** is a library-wide global, and has to be set/restored for each
       ** session.
       */
-      old_numeric = netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_PRINT_NUMERIC_OIDS);
-      old_printfull = netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_PRINT_FULL_OID);
+      old_format = netsnmp_ds_get_int(NETSNMP_DS_LIBRARY_ID,
+                                      NETSNMP_DS_LIB_OID_OUTPUT_FORMAT);
+      
       if (SvIV(*hv_fetch((HV*)SvRV(sess_ref),"UseLongNames", 12, 1))) {
-         getlabel_flag |= USE_LONG_NAMES;
-         netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_PRINT_FULL_OID, 1);
+          getlabel_flag |= USE_LONG_NAMES;
+          
+          netsnmp_ds_set_int(NETSNMP_DS_LIBRARY_ID,
+                             NETSNMP_DS_LIB_OID_OUTPUT_FORMAT,
+                             NETSNMP_OID_OUTPUT_FULL);
       }
-      /* Setting UseNumeric forces UseLongNames on so check for UseNumeric
-         after UseLongNames (above) to make sure the final outcome of 
-         NETSNMP_DS_LIB_OID_OUTPUT_FORMAT is NETSNMP_OID_OUTPUT_NUMERIC */
+      /* Setting UseNumeric forces UseLongNames on so check
+         for UseNumeric after UseLongNames (above) to make
+         sure the final outcome of
+         NETSNMP_DS_LIB_OID_OUTPUT_FORMAT is
+         NETSNMP_OID_OUTPUT_NUMERIC */
       if (SvIV(*hv_fetch((HV*)SvRV(sess_ref),"UseNumeric", 10, 1))) {
-         getlabel_flag |= USE_NUMERIC_OIDS;
-         netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_PRINT_NUMERIC_OIDS, 1);
+          getlabel_flag |= USE_LONG_NAMES;
+          getlabel_flag |= USE_NUMERIC_OIDS;
+          
+          netsnmp_ds_set_int(NETSNMP_DS_LIBRARY_ID,
+                             NETSNMP_DS_LIB_OID_OUTPUT_FORMAT,
+                             NETSNMP_OID_OUTPUT_NUMERIC);
       }
 
       sv_bless(varlist_ref, gv_stashpv("SNMP::VarList",0));
@@ -1374,9 +1384,9 @@
       } /* for */
 
       /* Reset the library's behavior for numeric/symbolic OID's. */
-      netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_PRINT_NUMERIC_OIDS, old_numeric );
-      netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_PRINT_FULL_OID, old_printfull);
-
+      netsnmp_ds_set_int(NETSNMP_DS_LIBRARY_ID,
+                         NETSNMP_DS_LIB_OID_OUTPUT_FORMAT,
+                         old_format);
       } /* case SNMP_MSG_RESPONSE */
       break;
     default:;