|
@@ -18,6 +18,8 @@
|
|
#include "FreeRTOS.h"
|
|
#include "FreeRTOS.h"
|
|
#include "task.h"
|
|
#include "task.h"
|
|
|
|
|
|
|
|
+#include <ctype.h>
|
|
|
|
+
|
|
#ifdef PRINTF_STDLIB
|
|
#ifdef PRINTF_STDLIB
|
|
#include <stdio.h>
|
|
#include <stdio.h>
|
|
#endif
|
|
#endif
|
|
@@ -42,6 +44,21 @@ static snmp_err_t signal_set_value(struct snmp_node_instance* instance, u16_t le
|
|
static snmp_err_t signal_set_test(struct snmp_node_instance* instance, u16_t len, void* value);
|
|
static snmp_err_t signal_set_test(struct snmp_node_instance* instance, u16_t len, void* value);
|
|
|
|
|
|
|
|
|
|
|
|
+/* signal .1.3.6.1.4.1.41752.911.5.1.22 */
|
|
|
|
+static const struct snmp_scalar_node signal22 = SNMP_SCALAR_CREATE_NODE(22, SNMP_NODE_INSTANCE_READ_WRITE, SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
|
|
|
|
+
|
|
|
|
+/* signal .1.3.6.1.4.1.41752.911.5.1.21 */
|
|
|
|
+static const struct snmp_scalar_node signal21 = SNMP_SCALAR_CREATE_NODE(21, SNMP_NODE_INSTANCE_READ_WRITE, SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
|
|
|
|
+
|
|
|
|
+/* signal .1.3.6.1.4.1.41752.911.5.1.20 */
|
|
|
|
+static const struct snmp_scalar_node signal20 = SNMP_SCALAR_CREATE_NODE(20, SNMP_NODE_INSTANCE_READ_WRITE, SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
|
|
|
|
+
|
|
|
|
+/* signal .1.3.6.1.4.1.41752.911.5.1.19 */
|
|
|
|
+static const struct snmp_scalar_node signal19 = SNMP_SCALAR_CREATE_NODE(19, SNMP_NODE_INSTANCE_READ_WRITE, SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
|
|
|
|
+
|
|
|
|
+/* signal .1.3.6.1.4.1.41752.911.5.1.18 */
|
|
|
|
+static const struct snmp_scalar_node signal18 = SNMP_SCALAR_CREATE_NODE(18, SNMP_NODE_INSTANCE_READ_WRITE, SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
|
|
|
|
+
|
|
/* signal .1.3.6.1.4.1.41752.911.5.1.17 */
|
|
/* signal .1.3.6.1.4.1.41752.911.5.1.17 */
|
|
static const struct snmp_scalar_node signal17 = SNMP_SCALAR_CREATE_NODE_READONLY(17, SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value);
|
|
static const struct snmp_scalar_node signal17 = SNMP_SCALAR_CREATE_NODE_READONLY(17, SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value);
|
|
|
|
|
|
@@ -113,6 +130,11 @@ static const struct snmp_node* const signals_nodes[] = {
|
|
&signal15.node.node,
|
|
&signal15.node.node,
|
|
&signal16.node.node,
|
|
&signal16.node.node,
|
|
&signal17.node.node,
|
|
&signal17.node.node,
|
|
|
|
+ &signal18.node.node,
|
|
|
|
+ &signal19.node.node,
|
|
|
|
+ &signal20.node.node,
|
|
|
|
+ &signal21.node.node,
|
|
|
|
+ &signal22.node.node,
|
|
};
|
|
};
|
|
static const struct snmp_tree_node signals_node = SNMP_CREATE_TREE_NODE(1, signals_nodes);
|
|
static const struct snmp_tree_node signals_node = SNMP_CREATE_TREE_NODE(1, signals_nodes);
|
|
|
|
|
|
@@ -161,6 +183,39 @@ void lwip_privmib_init(void)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+uint32_t check_netsettings(char *addr, uint8_t len)
|
|
|
|
+{
|
|
|
|
+ uint32_t val = 0;
|
|
|
|
+ char c;
|
|
|
|
+ uint8_t i, j;
|
|
|
|
+ uint8_t cnt_dot = 0;
|
|
|
|
+ uint8_t digit = 0;
|
|
|
|
+
|
|
|
|
+ c = *addr;
|
|
|
|
+
|
|
|
|
+ for(j = 0; j <= len; j ++){
|
|
|
|
+ if (isdigit(c)) {
|
|
|
|
+ val = (val * 10) + (int)(c - '0');
|
|
|
|
+ }
|
|
|
|
+ else if (c == '.' || c == 0) {
|
|
|
|
+ if(val > 0xff){
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
|
|
+ cnt_dot ++;
|
|
|
|
+ val = 0;
|
|
|
|
+ }
|
|
|
|
+ else{
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
|
|
+ c = *++addr;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if(cnt_dot != 4){
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
|
|
+ return 1;
|
|
|
|
+}
|
|
|
|
+
|
|
static s16_t signal_get_value(struct snmp_node_instance* instance, void* value)
|
|
static s16_t signal_get_value(struct snmp_node_instance* instance, void* value)
|
|
{
|
|
{
|
|
u8_t *paramStr = (u8_t*)value;
|
|
u8_t *paramStr = (u8_t*)value;
|
|
@@ -207,6 +262,21 @@ static s16_t signal_get_value(struct snmp_node_instance* instance, void* value)
|
|
case 17: /* Alarms */
|
|
case 17: /* Alarms */
|
|
GetAlarmStr((char*)paramStr, ¶mLength);
|
|
GetAlarmStr((char*)paramStr, ¶mLength);
|
|
break;
|
|
break;
|
|
|
|
+ case 18: /* IP server1 (traps) */
|
|
|
|
+ GetManagerIp((char*)paramStr, ¶mLength);
|
|
|
|
+ break;
|
|
|
|
+ case 19: /* IP server2 (traps) */
|
|
|
|
+ GetManagerIp2((char*)paramStr, ¶mLength);
|
|
|
|
+ break;
|
|
|
|
+ case 20: /* IP server3 (traps) */
|
|
|
|
+ GetManagerIp3((char*)paramStr, ¶mLength);
|
|
|
|
+ break;
|
|
|
|
+ case 21: /* IP server4 (traps) */
|
|
|
|
+ GetManagerIp4((char*)paramStr, ¶mLength);
|
|
|
|
+ break;
|
|
|
|
+ case 22: /* IP server5 (traps) */
|
|
|
|
+ GetManagerIp5((char*)paramStr, ¶mLength);
|
|
|
|
+ break;
|
|
default:
|
|
default:
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
@@ -295,6 +365,26 @@ static snmp_err_t signal_set_value(struct snmp_node_instance* instance, u16_t le
|
|
log_event_data(LOG_SHUTDOWN_UPS, "Администратор");
|
|
log_event_data(LOG_SHUTDOWN_UPS, "Администратор");
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
|
|
+ case 18:
|
|
|
|
+ val_string = (char*)value;
|
|
|
|
+ SetManagerIp(val_string);
|
|
|
|
+ break;
|
|
|
|
+ case 19:
|
|
|
|
+ val_string = (char*)value;
|
|
|
|
+ SetManagerIp2(val_string);
|
|
|
|
+ break;
|
|
|
|
+ case 20:
|
|
|
|
+ val_string = (char*)value;
|
|
|
|
+ SetManagerIp3(val_string);
|
|
|
|
+ break;
|
|
|
|
+ case 21:
|
|
|
|
+ val_string = (char*)value;
|
|
|
|
+ SetManagerIp4(val_string);
|
|
|
|
+ break;
|
|
|
|
+ case 22:
|
|
|
|
+ val_string = (char*)value;
|
|
|
|
+ SetManagerIp5(val_string);
|
|
|
|
+ break;
|
|
default :
|
|
default :
|
|
return SNMP_ERR_GENERROR;
|
|
return SNMP_ERR_GENERROR;
|
|
break;
|
|
break;
|
|
@@ -341,6 +431,19 @@ static snmp_err_t signal_set_test(struct snmp_node_instance* instance, u16_t len
|
|
}
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
|
|
+ case 18:
|
|
|
|
+ case 19:
|
|
|
|
+ case 20:
|
|
|
|
+ case 21:
|
|
|
|
+ case 22:
|
|
|
|
+ if ( len <= 15 )
|
|
|
|
+ {
|
|
|
|
+ val_string = (char*)value;
|
|
|
|
+ val_string[len] = 0;
|
|
|
|
+ if(check_netsettings(val_string, len))
|
|
|
|
+ ret = SNMP_ERR_NOERROR;
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|