Browse Source

[lwip] add patch for snmp_mib2_system

balbekova 5 years ago
parent
commit
2f398309d8
2 changed files with 54 additions and 0 deletions
  1. 2 0
      modules/Ethernet/lwipopts.h
  2. 52 0
      patches/snmp_mib2_system_patch.diff

+ 2 - 0
modules/Ethernet/lwipopts.h

@@ -289,6 +289,8 @@ The STM32F4x7 allows computing and verifying the IP, UDP, TCP and ICMP checksums
 #define LWIP_HOOK_FILENAME "lwip_hook_ip4_input.h"
 #endif
 
+#define SNMP_SYS_PARAM_FILENAME "snmp_api.h"
+
 #endif /* __LWIPOPTS_H__ */
 
 /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/

+ 52 - 0
patches/snmp_mib2_system_patch.diff

@@ -0,0 +1,52 @@
+diff --git a/thirdparty/lwip/src/apps/snmp/snmp_mib2_system.c b/thirdparty/lwip/src/apps/snmp/snmp_mib2_system.c
+index 4aa2926..0ff8c76 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 <string.h>
+ 
++#ifdef SNMP_SYS_PARAM_FILENAME
++#include SNMP_SYS_PARAM_FILENAME
++#endif
++
+ #if LWIP_SNMP && SNMP_LWIP_MIB2
+ 
+ #if SNMP_USE_NETCONN
+@@ -284,6 +288,7 @@ 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;
++  bool check_flag = true;
+ 
+   LWIP_UNUSED_ARG(value);
+ 
+@@ -307,13 +312,16 @@ 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) {
++      if (len < *var_bufsize && check_flag) {
+         ret = SNMP_ERR_NOERROR;
+       }
+     } else {
+-      if (len <= *var_bufsize) {
++      if (len <= *var_bufsize && check_flag) {
+         ret = SNMP_ERR_NOERROR;
+       }
+     }
+@@ -358,6 +366,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;
+ }