Browse Source

[bt6708]add new oids in mib (server IPs)

balbekova 6 years ago
parent
commit
edae76b4c3
2 changed files with 143 additions and 0 deletions
  1. 40 0
      docs/BT6708.MIB
  2. 103 0
      modules/Ethernet/private_mib_bt6708.c

+ 40 - 0
docs/BT6708.MIB

@@ -163,6 +163,46 @@ IMPORTS
 	bit 1 - Shutdown Active
 	bit 1 - Shutdown Active
 	bit 0 - Beeper On" 
 	bit 0 - Beeper On" 
     ::= { signals 17 }
     ::= { signals 17 }
+    
+    server1 OBJECT-TYPE
+    SYNTAX  OCTET STRING
+    MAX-ACCESS  read-write
+    STATUS  current
+    DESCRIPTION
+    "Get/set server1 for traps" 
+    ::= { signals 18 }
+    
+    server2 OBJECT-TYPE
+    SYNTAX  OCTET STRING
+    MAX-ACCESS  read-write
+    STATUS  current
+    DESCRIPTION
+    "Get/set server2 for traps" 
+    ::= { signals 19 }
+    
+    server3 OBJECT-TYPE
+    SYNTAX  OCTET STRING
+    MAX-ACCESS  read-write
+    STATUS  current
+    DESCRIPTION
+    "Get/set server3 for traps" 
+    ::= { signals 20 }
+    
+    server4 OBJECT-TYPE
+    SYNTAX  OCTET STRING
+    MAX-ACCESS  read-write
+    STATUS  current
+    DESCRIPTION
+    "Get/set server4 for traps" 
+    ::= { signals 21 }
+    
+    server5 OBJECT-TYPE
+    SYNTAX  OCTET STRING
+    MAX-ACCESS  read-write
+    STATUS  current
+    DESCRIPTION
+    "Get/set server5 for traps" 
+    ::= { signals 22 }
 
 
 -- DEVICE TRAPS
 -- DEVICE TRAPS
 
 

+ 103 - 0
modules/Ethernet/private_mib_bt6708.c

@@ -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, &paramLength);
 		GetAlarmStr((char*)paramStr, &paramLength);
 		break;
 		break;
+	case 18: /* IP server1 (traps) */
+		GetManagerIp((char*)paramStr, &paramLength);
+		break;
+	case 19: /* IP server2 (traps) */
+		GetManagerIp2((char*)paramStr, &paramLength);
+		break;
+	case 20: /* IP server3 (traps) */
+		GetManagerIp3((char*)paramStr, &paramLength);
+		break;
+	case 21: /* IP server4 (traps) */
+		GetManagerIp4((char*)paramStr, &paramLength);
+		break;
+	case 22: /* IP server5 (traps) */
+		GetManagerIp5((char*)paramStr, &paramLength);
+		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;
     };
     };