diff --git a/thirdparty/lwip/src/apps/snmp/snmp_mib2_system.c b/thirdparty/lwip/src/apps/snmp/snmp_mib2_system.c index 4aa2926..f725139 100755 --- a/thirdparty/lwip/src/apps/snmp/snmp_mib2_system.c +++ b/thirdparty/lwip/src/apps/snmp/snmp_mib2_system.c @@ -43,6 +43,10 @@ #include +#ifdef SNMP_SYS_PARAM_FILENAME +#include SNMP_SYS_PARAM_FILENAME +#endif + #if LWIP_SNMP && SNMP_LWIP_MIB2 #if SNMP_USE_NETCONN @@ -240,7 +244,11 @@ system_get_value(const struct snmp_scalar_array_node_def *node, void *value) break; case 2: /* sysObjectID */ { +#ifdef SNMP_GET_SYSOBJECTID_MTS + const struct snmp_obj_id* dev_enterprise_oid = SNMP_GET_SYSOBJECTID_MTS(); +#else const struct snmp_obj_id* dev_enterprise_oid = snmp_get_device_enterprise_oid(); +#endif MEMCPY(value, dev_enterprise_oid->id, dev_enterprise_oid->len * sizeof(u32_t)); return dev_enterprise_oid->len * sizeof(u32_t); } @@ -284,6 +292,9 @@ system_set_test(const struct snmp_scalar_array_node_def *node, u16_t len, void * snmp_err_t ret = SNMP_ERR_WRONGVALUE; const u16_t* var_bufsize = NULL; const u16_t* var_wr_len; +#ifdef SNMP_SYS_PARAM_FILENAME + bool check_flag = true; +#endif LWIP_UNUSED_ARG(value); @@ -307,13 +318,24 @@ system_set_test(const struct snmp_scalar_array_node_def *node, u16_t len, void * /* check if value is writable at all */ if (*var_bufsize > 0) { +#ifdef SNMP_SYS_PARAM_CHECK + check_flag = SNMP_SYS_PARAM_CHECK(value, len); +#endif if (var_wr_len == NULL) { /* we have to take the terminating 0 into account */ - if (len < *var_bufsize) { +#ifdef SNMP_SYS_PARAM_CHECK + if (len <= *var_bufsize && check_flag) { +#else + if (len <= *var_bufsize) { +#endif ret = SNMP_ERR_NOERROR; } } else { +#ifdef SNMP_SYS_PARAM_CHECK + if (len <= *var_bufsize && check_flag) { +#else if (len <= *var_bufsize) { +#endif ret = SNMP_ERR_NOERROR; } } @@ -358,6 +380,9 @@ system_set_value(const struct snmp_scalar_array_node_def *node, u16_t len, void } else { *var_wr_len = len; } +#ifdef SNMP_SYS_PARAM_SAVE + SNMP_SYS_PARAM_SAVE(); +#endif return SNMP_ERR_NOERROR; }