@@ -124,7 +124,8 @@ zend_function_entry snmp_functions[] = {
124
124
PHP_FE (snmp_set_quick_print , NULL )
125
125
#ifdef HAVE_NET_SNMP
126
126
PHP_FE (snmp_set_enum_print , NULL )
127
- PHP_FE (snmp_set_oid_numeric_print , NULL )
127
+ PHP_FE (snmp_set_oid_output_format , NULL )
128
+ PHP_FALIAS (snmp_set_oid_numeric_print , snmp_set_oid_output_format , NULL )
128
129
#endif
129
130
PHP_FE (snmpset , NULL )
130
131
@@ -198,6 +199,11 @@ PHP_MINIT_FUNCTION(snmp)
198
199
netsnmp_ds_set_boolean (NETSNMP_DS_LIBRARY_ID , NETSNMP_DS_LIB_DONT_PERSIST_STATE , 1 );
199
200
#endif
200
201
202
+ #ifdef HAVE_NET_SNMP
203
+ REGISTER_LONG_CONSTANT ("SNMP_OID_OUTPUT_FULL" , NETSNMP_OID_OUTPUT_FULL , CONST_CS | CONST_PERSISTENT );
204
+ REGISTER_LONG_CONSTANT ("SNMP_OID_OUTPUT_NUMERIC" , NETSNMP_OID_OUTPUT_NUMERIC , CONST_CS | CONST_PERSISTENT );
205
+ #endif
206
+
201
207
REGISTER_LONG_CONSTANT ("SNMP_VALUE_LIBRARY" , SNMP_VALUE_LIBRARY , CONST_CS | CONST_PERSISTENT );
202
208
REGISTER_LONG_CONSTANT ("SNMP_VALUE_PLAIN" , SNMP_VALUE_PLAIN , CONST_CS | CONST_PERSISTENT );
203
209
REGISTER_LONG_CONSTANT ("SNMP_VALUE_OBJECT" , SNMP_VALUE_OBJECT , CONST_CS | CONST_PERSISTENT );
@@ -432,13 +438,13 @@ static void php_snmp_internal(INTERNAL_FUNCTION_PARAMETERS, int st,
432
438
RETURN_FALSE ;
433
439
}
434
440
} else if (st >= SNMP_CMD_WALK ) {
435
- if (session -> version == SNMP_VERSION_1 ) {
441
+ if (session -> version == SNMP_VERSION_1 ) {
436
442
pdu = snmp_pdu_create (SNMP_MSG_GETNEXT );
437
443
} else {
438
444
pdu = snmp_pdu_create (SNMP_MSG_GETBULK );
439
445
pdu -> non_repeaters = 0 ;
440
446
pdu -> max_repetitions = 20 ;
441
- }
447
+ }
442
448
snmp_add_null_var (pdu , name , name_length );
443
449
}
444
450
@@ -522,6 +528,9 @@ static void php_snmp_internal(INTERNAL_FUNCTION_PARAMETERS, int st,
522
528
}
523
529
}
524
530
snmp_close (ss );
531
+ if (st == SNMP_CMD_WALK || st == SNMP_CMD_REALWALK ) {
532
+ zval_dtor (return_value );
533
+ }
525
534
RETURN_FALSE ;
526
535
}
527
536
}
@@ -731,21 +740,30 @@ PHP_FUNCTION(snmp_set_enum_print)
731
740
}
732
741
/* }}} */
733
742
734
- /* {{{ proto void snmp_set_oid_numeric_print (int oid_numeric_print )
735
- Return all objects including their respective object id withing the specified one */
736
- PHP_FUNCTION (snmp_set_oid_numeric_print )
743
+ /* {{{ proto void snmp_set_oid_output_format (int oid_format )
744
+ Set the OID output format. */
745
+ PHP_FUNCTION (snmp_set_oid_output_format )
737
746
{
738
747
int argc = ZEND_NUM_ARGS ();
739
748
long a1 ;
740
749
741
750
if (zend_parse_parameters (argc TSRMLS_CC , "l" , & a1 ) == FAILURE ) {
742
751
return ;
743
752
}
744
- if ((int ) a1 != 0 ) {
745
- netsnmp_ds_set_int (NETSNMP_DS_LIBRARY_ID ,
746
- NETSNMP_DS_LIB_OID_OUTPUT_FORMAT ,
747
- NETSNMP_OID_OUTPUT_NUMERIC );
753
+
754
+ switch ((int ) a1 ) {
755
+ case 0 :
756
+ case NETSNMP_OID_OUTPUT_FULL :
757
+ a1 = NETSNMP_OID_OUTPUT_FULL ;
758
+ break ;
759
+
760
+ default :
761
+ case NETSNMP_OID_OUTPUT_NUMERIC :
762
+ a1 = NETSNMP_OID_OUTPUT_NUMERIC ;
763
+ break ;
748
764
}
765
+
766
+ netsnmp_ds_set_int (NETSNMP_DS_LIBRARY_ID , NETSNMP_DS_LIB_OID_OUTPUT_FORMAT , a1 );
749
767
}
750
768
/* }}} */
751
769
#endif
0 commit comments