Skip to content

Commit 697835e

Browse files
committed
Add the missing SNMP object options
1 parent 177fd23 commit 697835e

1 file changed

Lines changed: 33 additions & 13 deletions

File tree

ext/snmp/snmp.c

Lines changed: 33 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1229,7 +1229,7 @@ static ZEND_ATTRIBUTE_NONNULL_ARGS(2) bool snmp_session_set_security(struct snmp
12291229
*/
12301230
static void save_snmplib_output_options(php_snmp_object *snmp_object)
12311231
{
1232-
// Booleans
1232+
// Booleans
12331233
snmp_object->quick_print = netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICK_PRINT);
12341234
snmp_object->enum_print = netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_PRINT_NUMERIC_ENUM);
12351235
snmp_object->numeric_index = netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_DONT_BREAKDOWN_OIDS);
@@ -1248,7 +1248,7 @@ static void save_snmplib_output_options(php_snmp_object *snmp_object)
12481248
*/
12491249
static void set_snmplib_output_options(php_snmp_object *snmp_object)
12501250
{
1251-
// Booleans
1251+
// Booleans
12521252
netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICK_PRINT, snmp_object->quick_print);
12531253
netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_PRINT_NUMERIC_ENUM, snmp_object->enum_print);
12541254
netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_DONT_BREAKDOWN_OIDS, snmp_object->numeric_index);
@@ -1449,7 +1449,7 @@ static void php_snmp(INTERNAL_FUNCTION_PARAMETERS, int st, int version)
14491449
snmp_session_free(&session);
14501450
} else {
14511451
// Restore the snmplib output options back to the global state
1452-
set_snmplib_output_options(&glob_snmp_object);
1452+
set_snmplib_output_options(&glob_snmp_object);
14531453
}
14541454
}
14551455
/* }}} */
@@ -1780,13 +1780,7 @@ PHP_METHOD(SNMP, __construct)
17801780
}
17811781
snmp_object->max_oids = 0;
17821782
snmp_object->valueretrieval = SNMP_G(valueretrieval);
1783-
snmp_object->enum_print = netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_PRINT_NUMERIC_ENUM);
1784-
snmp_object->numeric_index = netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_DONT_BREAKDOWN_OIDS);
1785-
snmp_object->numeric_timeticks = netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_NUMERIC_TIMETICKS);
1786-
snmp_object->extended_index = netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_EXTENDED_INDEX);
1787-
snmp_object->dontprint_units = netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_DONT_PRINT_UNITS);
1788-
snmp_object->oid_output_format = netsnmp_ds_get_int(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_OID_OUTPUT_FORMAT);
1789-
snmp_object->quick_print = netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICK_PRINT);
1783+
save_snmplib_output_options(snmp_object);
17901784
snmp_object->oid_increasing_check = true;
17911785
snmp_object->exceptions_enabled = 0;
17921786
}
@@ -2103,6 +2097,8 @@ PHP_SNMP_BOOL_PROPERTY_READER_FUNCTION(numeric_index)
21032097
PHP_SNMP_BOOL_PROPERTY_READER_FUNCTION(numeric_timeticks)
21042098
PHP_SNMP_BOOL_PROPERTY_READER_FUNCTION(extended_index)
21052099
PHP_SNMP_BOOL_PROPERTY_READER_FUNCTION(dontprint_units)
2100+
PHP_SNMP_BOOL_PROPERTY_READER_FUNCTION(escape_quotes)
2101+
PHP_SNMP_BOOL_PROPERTY_READER_FUNCTION(print_hex_text)
21062102

21072103
#define PHP_SNMP_LONG_PROPERTY_READER_FUNCTION(name) \
21082104
static int php_snmp_read_##name(php_snmp_object *snmp_object, zval *retval) \
@@ -2112,6 +2108,7 @@ PHP_SNMP_BOOL_PROPERTY_READER_FUNCTION(dontprint_units)
21122108
}
21132109

21142110
PHP_SNMP_LONG_PROPERTY_READER_FUNCTION(valueretrieval)
2111+
PHP_SNMP_LONG_PROPERTY_READER_FUNCTION(string_output_format)
21152112
PHP_SNMP_LONG_PROPERTY_READER_FUNCTION(oid_output_format)
21162113
PHP_SNMP_LONG_PROPERTY_READER_FUNCTION(exceptions_enabled)
21172114

@@ -2166,13 +2163,33 @@ static int php_snmp_write_##name(php_snmp_object *snmp_object, zval *newval) \
21662163
return SUCCESS; \
21672164
}
21682165

2166+
PHP_SNMP_BOOL_PROPERTY_WRITER_FUNCTION(oid_increasing_check)
21692167
PHP_SNMP_BOOL_PROPERTY_WRITER_FUNCTION(quick_print)
21702168
PHP_SNMP_BOOL_PROPERTY_WRITER_FUNCTION(enum_print)
21712169
PHP_SNMP_BOOL_PROPERTY_WRITER_FUNCTION(numeric_index)
21722170
PHP_SNMP_BOOL_PROPERTY_WRITER_FUNCTION(numeric_timeticks)
21732171
PHP_SNMP_BOOL_PROPERTY_WRITER_FUNCTION(extended_index)
21742172
PHP_SNMP_BOOL_PROPERTY_WRITER_FUNCTION(dontprint_units)
2175-
PHP_SNMP_BOOL_PROPERTY_WRITER_FUNCTION(oid_increasing_check)
2173+
PHP_SNMP_BOOL_PROPERTY_WRITER_FUNCTION(escape_quotes)
2174+
PHP_SNMP_BOOL_PROPERTY_WRITER_FUNCTION(print_hex_text)
2175+
2176+
/* {{{ */
2177+
static int php_snmp_write_string_output_format(php_snmp_object *snmp_object, zval *newval)
2178+
{
2179+
zend_long lval = zval_get_long(newval);
2180+
2181+
switch(lval) {
2182+
case NETSNMP_STRING_OUTPUT_GUESS:
2183+
case NETSNMP_STRING_OUTPUT_ASCII:
2184+
case NETSNMP_STRING_OUTPUT_HEX:
2185+
snmp_object->oid_output_format = lval;
2186+
return SUCCESS;
2187+
default:
2188+
zend_value_error("SNMP string output print format must be an SNMP_STRING_OUTPUT_* constant");
2189+
return FAILURE;
2190+
}
2191+
}
2192+
/* }}} */
21762193

21772194
/* {{{ */
21782195
static int php_snmp_write_oid_output_format(php_snmp_object *snmp_object, zval *newval)
@@ -2221,15 +2238,18 @@ static void free_php_snmp_properties(zval *el) /* {{{ */
22212238
const php_snmp_prop_handler php_snmp_property_entries[] = {
22222239
PHP_SNMP_READONLY_PROPERTY_ENTRY_RECORD(info),
22232240
PHP_SNMP_PROPERTY_ENTRY_RECORD(max_oids),
2224-
PHP_SNMP_PROPERTY_ENTRY_RECORD(valueretrieval),
2241+
PHP_SNMP_PROPERTY_ENTRY_RECORD(oid_increasing_check),
22252242
PHP_SNMP_PROPERTY_ENTRY_RECORD(quick_print),
22262243
PHP_SNMP_PROPERTY_ENTRY_RECORD(enum_print),
22272244
PHP_SNMP_PROPERTY_ENTRY_RECORD(numeric_index),
22282245
PHP_SNMP_PROPERTY_ENTRY_RECORD(numeric_timeticks),
22292246
PHP_SNMP_PROPERTY_ENTRY_RECORD(extended_index),
22302247
PHP_SNMP_PROPERTY_ENTRY_RECORD(dontprint_units),
2248+
PHP_SNMP_PROPERTY_ENTRY_RECORD(escape_quotes),
2249+
PHP_SNMP_PROPERTY_ENTRY_RECORD(print_hex_text),
2250+
PHP_SNMP_PROPERTY_ENTRY_RECORD(valueretrieval),
2251+
PHP_SNMP_PROPERTY_ENTRY_RECORD(string_output_format),
22312252
PHP_SNMP_PROPERTY_ENTRY_RECORD(oid_output_format),
2232-
PHP_SNMP_PROPERTY_ENTRY_RECORD(oid_increasing_check),
22332253
PHP_SNMP_PROPERTY_ENTRY_RECORD(exceptions_enabled),
22342254
{ NULL, 0, NULL, NULL}
22352255
};

0 commit comments

Comments
 (0)