mirror of
https://github.com/lwip-tcpip/lwip.git
synced 2025-04-16 08:43:17 +00:00
Added some lines for SET command.
This commit is contained in:
parent
c5e99ada63
commit
320ea29861
@ -72,6 +72,8 @@
|
|||||||
|
|
||||||
static void system_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od);
|
static void system_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od);
|
||||||
static void system_get_value(struct obj_def *od, u16_t len, void *value);
|
static void system_get_value(struct obj_def *od, u16_t len, void *value);
|
||||||
|
static u8_t system_set_test(struct obj_def *od, u16_t len, void *value);
|
||||||
|
static void system_set_value(struct obj_def *od, u16_t len, void *value);
|
||||||
static void interfaces_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od);
|
static void interfaces_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od);
|
||||||
static void interfaces_get_value(struct obj_def *od, u16_t len, void *value);
|
static void interfaces_get_value(struct obj_def *od, u16_t len, void *value);
|
||||||
static void ifentry_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od);
|
static void ifentry_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od);
|
||||||
@ -80,6 +82,7 @@ static void atentry_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def
|
|||||||
static void atentry_get_value(struct obj_def *od, u16_t len, void *value);
|
static void atentry_get_value(struct obj_def *od, u16_t len, void *value);
|
||||||
static void ip_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od);
|
static void ip_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od);
|
||||||
static void ip_get_value(struct obj_def *od, u16_t len, void *value);
|
static void ip_get_value(struct obj_def *od, u16_t len, void *value);
|
||||||
|
static u8_t ip_set_test(struct obj_def *od, u16_t len, void *value);
|
||||||
static void ip_addrentry_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od);
|
static void ip_addrentry_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od);
|
||||||
static void ip_addrentry_get_value(struct obj_def *od, u16_t len, void *value);
|
static void ip_addrentry_get_value(struct obj_def *od, u16_t len, void *value);
|
||||||
static void ip_rteentry_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od);
|
static void ip_rteentry_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od);
|
||||||
@ -100,12 +103,16 @@ static void udpentry_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def
|
|||||||
static void udpentry_get_value(struct obj_def *od, u16_t len, void *value);
|
static void udpentry_get_value(struct obj_def *od, u16_t len, void *value);
|
||||||
static void snmp_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od);
|
static void snmp_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od);
|
||||||
static void snmp_get_value(struct obj_def *od, u16_t len, void *value);
|
static void snmp_get_value(struct obj_def *od, u16_t len, void *value);
|
||||||
|
static u8_t snmp_set_test(struct obj_def *od, u16_t len, void *value);
|
||||||
|
static void snmp_set_value(struct obj_def *od, u16_t len, void *value);
|
||||||
|
|
||||||
|
|
||||||
/* snmp .1.3.6.1.2.1.11 */
|
/* snmp .1.3.6.1.2.1.11 */
|
||||||
const mib_scalar_node snmp_scalar = {
|
const mib_scalar_node snmp_scalar = {
|
||||||
&snmp_get_object_def,
|
&snmp_get_object_def,
|
||||||
&snmp_get_value,
|
&snmp_get_value,
|
||||||
|
&snmp_set_test,
|
||||||
|
&snmp_set_value,
|
||||||
MIB_NODE_SC,
|
MIB_NODE_SC,
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
@ -132,6 +139,8 @@ struct mib_node* const snmp_nodes[28] = {
|
|||||||
const struct mib_array_node snmp = {
|
const struct mib_array_node snmp = {
|
||||||
&noleafs_get_object_def,
|
&noleafs_get_object_def,
|
||||||
&noleafs_get_value,
|
&noleafs_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_AR,
|
MIB_NODE_AR,
|
||||||
28,
|
28,
|
||||||
snmp_ids,
|
snmp_ids,
|
||||||
@ -147,6 +156,8 @@ const struct mib_array_node snmp = {
|
|||||||
struct mib_list_rootnode udp_root = {
|
struct mib_list_rootnode udp_root = {
|
||||||
&noleafs_get_object_def,
|
&noleafs_get_object_def,
|
||||||
&noleafs_get_value,
|
&noleafs_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_LR,
|
MIB_NODE_LR,
|
||||||
0,
|
0,
|
||||||
NULL,
|
NULL,
|
||||||
@ -160,6 +171,8 @@ struct mib_node* const udpentry_nodes[2] = {
|
|||||||
const struct mib_array_node udpentry = {
|
const struct mib_array_node udpentry = {
|
||||||
&noleafs_get_object_def,
|
&noleafs_get_object_def,
|
||||||
&noleafs_get_value,
|
&noleafs_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_AR,
|
MIB_NODE_AR,
|
||||||
2,
|
2,
|
||||||
udpentry_ids,
|
udpentry_ids,
|
||||||
@ -171,6 +184,8 @@ struct mib_node* udptable_node = (struct mib_node* const)&udpentry;
|
|||||||
struct mib_ram_array_node udptable = {
|
struct mib_ram_array_node udptable = {
|
||||||
&noleafs_get_object_def,
|
&noleafs_get_object_def,
|
||||||
&noleafs_get_value,
|
&noleafs_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_RA,
|
MIB_NODE_RA,
|
||||||
0,
|
0,
|
||||||
&udptable_id,
|
&udptable_id,
|
||||||
@ -180,6 +195,8 @@ struct mib_ram_array_node udptable = {
|
|||||||
const mib_scalar_node udp_scalar = {
|
const mib_scalar_node udp_scalar = {
|
||||||
&udp_get_object_def,
|
&udp_get_object_def,
|
||||||
&udp_get_value,
|
&udp_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_SC,
|
MIB_NODE_SC,
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
@ -192,6 +209,8 @@ struct mib_node* const udp_nodes[5] = {
|
|||||||
const struct mib_array_node udp = {
|
const struct mib_array_node udp = {
|
||||||
&noleafs_get_object_def,
|
&noleafs_get_object_def,
|
||||||
&noleafs_get_value,
|
&noleafs_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_AR,
|
MIB_NODE_AR,
|
||||||
5,
|
5,
|
||||||
udp_ids,
|
udp_ids,
|
||||||
@ -205,6 +224,8 @@ const struct mib_array_node udp = {
|
|||||||
struct mib_list_rootnode tcpconntree_root = {
|
struct mib_list_rootnode tcpconntree_root = {
|
||||||
&noleafs_get_object_def,
|
&noleafs_get_object_def,
|
||||||
&noleafs_get_value,
|
&noleafs_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_LR,
|
MIB_NODE_LR,
|
||||||
0,
|
0,
|
||||||
NULL,
|
NULL,
|
||||||
@ -220,6 +241,8 @@ struct mib_node* const tcpconnentry_nodes[5] = {
|
|||||||
const struct mib_array_node tcpconnentry = {
|
const struct mib_array_node tcpconnentry = {
|
||||||
&noleafs_get_object_def,
|
&noleafs_get_object_def,
|
||||||
&noleafs_get_value,
|
&noleafs_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_AR,
|
MIB_NODE_AR,
|
||||||
5,
|
5,
|
||||||
tcpconnentry_ids,
|
tcpconnentry_ids,
|
||||||
@ -231,6 +254,8 @@ struct mib_node* tcpconntable_node = (struct mib_node* const)&tcpconnentry;
|
|||||||
struct mib_ram_array_node tcpconntable = {
|
struct mib_ram_array_node tcpconntable = {
|
||||||
&noleafs_get_object_def,
|
&noleafs_get_object_def,
|
||||||
&noleafs_get_value,
|
&noleafs_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_RA,
|
MIB_NODE_RA,
|
||||||
/** @todo update maxlength when inserting / deleting from table
|
/** @todo update maxlength when inserting / deleting from table
|
||||||
0 when table is empty, 1 when more than one entry */
|
0 when table is empty, 1 when more than one entry */
|
||||||
@ -259,6 +284,8 @@ struct mib_node* const tcp_nodes[15] = {
|
|||||||
const struct mib_array_node tcp = {
|
const struct mib_array_node tcp = {
|
||||||
&noleafs_get_object_def,
|
&noleafs_get_object_def,
|
||||||
&noleafs_get_value,
|
&noleafs_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_AR,
|
MIB_NODE_AR,
|
||||||
15,
|
15,
|
||||||
tcp_ids,
|
tcp_ids,
|
||||||
@ -270,6 +297,8 @@ const struct mib_array_node tcp = {
|
|||||||
const mib_scalar_node icmp_scalar = {
|
const mib_scalar_node icmp_scalar = {
|
||||||
&icmp_get_object_def,
|
&icmp_get_object_def,
|
||||||
&icmp_get_value,
|
&icmp_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_SC,
|
MIB_NODE_SC,
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
@ -292,6 +321,8 @@ struct mib_node* const icmp_nodes[26] = {
|
|||||||
const struct mib_array_node icmp = {
|
const struct mib_array_node icmp = {
|
||||||
&noleafs_get_object_def,
|
&noleafs_get_object_def,
|
||||||
&noleafs_get_value,
|
&noleafs_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_AR,
|
MIB_NODE_AR,
|
||||||
26,
|
26,
|
||||||
icmp_ids,
|
icmp_ids,
|
||||||
@ -302,6 +333,8 @@ const struct mib_array_node icmp = {
|
|||||||
struct mib_list_rootnode ipntomtree_root = {
|
struct mib_list_rootnode ipntomtree_root = {
|
||||||
&noleafs_get_object_def,
|
&noleafs_get_object_def,
|
||||||
&noleafs_get_value,
|
&noleafs_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_LR,
|
MIB_NODE_LR,
|
||||||
0,
|
0,
|
||||||
NULL,
|
NULL,
|
||||||
@ -316,6 +349,8 @@ struct mib_node* const ipntomentry_nodes[4] = {
|
|||||||
const struct mib_array_node ipntomentry = {
|
const struct mib_array_node ipntomentry = {
|
||||||
&noleafs_get_object_def,
|
&noleafs_get_object_def,
|
||||||
&noleafs_get_value,
|
&noleafs_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_AR,
|
MIB_NODE_AR,
|
||||||
4,
|
4,
|
||||||
ipntomentry_ids,
|
ipntomentry_ids,
|
||||||
@ -327,6 +362,8 @@ struct mib_node* ipntomtable_node = (struct mib_node* const)&ipntomentry;
|
|||||||
struct mib_ram_array_node ipntomtable = {
|
struct mib_ram_array_node ipntomtable = {
|
||||||
&noleafs_get_object_def,
|
&noleafs_get_object_def,
|
||||||
&noleafs_get_value,
|
&noleafs_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_RA,
|
MIB_NODE_RA,
|
||||||
0,
|
0,
|
||||||
&ipntomtable_id,
|
&ipntomtable_id,
|
||||||
@ -337,6 +374,8 @@ struct mib_ram_array_node ipntomtable = {
|
|||||||
struct mib_list_rootnode iprtetree_root = {
|
struct mib_list_rootnode iprtetree_root = {
|
||||||
&noleafs_get_object_def,
|
&noleafs_get_object_def,
|
||||||
&noleafs_get_value,
|
&noleafs_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_LR,
|
MIB_NODE_LR,
|
||||||
0,
|
0,
|
||||||
NULL,
|
NULL,
|
||||||
@ -356,6 +395,8 @@ struct mib_node* const iprteentry_nodes[13] = {
|
|||||||
const struct mib_array_node iprteentry = {
|
const struct mib_array_node iprteentry = {
|
||||||
&noleafs_get_object_def,
|
&noleafs_get_object_def,
|
||||||
&noleafs_get_value,
|
&noleafs_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_AR,
|
MIB_NODE_AR,
|
||||||
13,
|
13,
|
||||||
iprteentry_ids,
|
iprteentry_ids,
|
||||||
@ -367,6 +408,8 @@ struct mib_node* iprtetable_node = (struct mib_node* const)&iprteentry;
|
|||||||
struct mib_ram_array_node iprtetable = {
|
struct mib_ram_array_node iprtetable = {
|
||||||
&noleafs_get_object_def,
|
&noleafs_get_object_def,
|
||||||
&noleafs_get_value,
|
&noleafs_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_RA,
|
MIB_NODE_RA,
|
||||||
0,
|
0,
|
||||||
&iprtetable_id,
|
&iprtetable_id,
|
||||||
@ -377,6 +420,8 @@ struct mib_ram_array_node iprtetable = {
|
|||||||
struct mib_list_rootnode ipaddrtree_root = {
|
struct mib_list_rootnode ipaddrtree_root = {
|
||||||
&noleafs_get_object_def,
|
&noleafs_get_object_def,
|
||||||
&noleafs_get_value,
|
&noleafs_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_LR,
|
MIB_NODE_LR,
|
||||||
0,
|
0,
|
||||||
NULL,
|
NULL,
|
||||||
@ -394,6 +439,8 @@ struct mib_node* const ipaddrentry_nodes[5] = {
|
|||||||
const struct mib_array_node ipaddrentry = {
|
const struct mib_array_node ipaddrentry = {
|
||||||
&noleafs_get_object_def,
|
&noleafs_get_object_def,
|
||||||
&noleafs_get_value,
|
&noleafs_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_AR,
|
MIB_NODE_AR,
|
||||||
5,
|
5,
|
||||||
ipaddrentry_ids,
|
ipaddrentry_ids,
|
||||||
@ -405,6 +452,8 @@ struct mib_node* ipaddrtable_node = (struct mib_node* const)&ipaddrentry;
|
|||||||
struct mib_ram_array_node ipaddrtable = {
|
struct mib_ram_array_node ipaddrtable = {
|
||||||
&noleafs_get_object_def,
|
&noleafs_get_object_def,
|
||||||
&noleafs_get_value,
|
&noleafs_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_RA,
|
MIB_NODE_RA,
|
||||||
0,
|
0,
|
||||||
&ipaddrtable_id,
|
&ipaddrtable_id,
|
||||||
@ -415,6 +464,8 @@ struct mib_ram_array_node ipaddrtable = {
|
|||||||
const mib_scalar_node ip_scalar = {
|
const mib_scalar_node ip_scalar = {
|
||||||
&ip_get_object_def,
|
&ip_get_object_def,
|
||||||
&ip_get_value,
|
&ip_get_value,
|
||||||
|
&ip_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_SC,
|
MIB_NODE_SC,
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
@ -436,6 +487,8 @@ struct mib_node* const ip_nodes[23] = {
|
|||||||
const struct mib_array_node ip = {
|
const struct mib_array_node ip = {
|
||||||
&noleafs_get_object_def,
|
&noleafs_get_object_def,
|
||||||
&noleafs_get_value,
|
&noleafs_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_AR,
|
MIB_NODE_AR,
|
||||||
23,
|
23,
|
||||||
ip_ids,
|
ip_ids,
|
||||||
@ -446,6 +499,8 @@ const struct mib_array_node ip = {
|
|||||||
struct mib_list_rootnode arptree_root = {
|
struct mib_list_rootnode arptree_root = {
|
||||||
&noleafs_get_object_def,
|
&noleafs_get_object_def,
|
||||||
&noleafs_get_value,
|
&noleafs_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_LR,
|
MIB_NODE_LR,
|
||||||
0,
|
0,
|
||||||
NULL,
|
NULL,
|
||||||
@ -461,6 +516,8 @@ struct mib_node* const atentry_nodes[3] = {
|
|||||||
const struct mib_array_node atentry = {
|
const struct mib_array_node atentry = {
|
||||||
&noleafs_get_object_def,
|
&noleafs_get_object_def,
|
||||||
&noleafs_get_value,
|
&noleafs_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_AR,
|
MIB_NODE_AR,
|
||||||
3,
|
3,
|
||||||
atentry_ids,
|
atentry_ids,
|
||||||
@ -472,6 +529,8 @@ struct mib_node* const attable_node = (struct mib_node* const)&atentry;
|
|||||||
const struct mib_array_node attable = {
|
const struct mib_array_node attable = {
|
||||||
&noleafs_get_object_def,
|
&noleafs_get_object_def,
|
||||||
&noleafs_get_value,
|
&noleafs_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_AR,
|
MIB_NODE_AR,
|
||||||
1,
|
1,
|
||||||
&attable_id,
|
&attable_id,
|
||||||
@ -484,6 +543,8 @@ struct mib_node* at_node = (struct mib_node* const)&attable;
|
|||||||
struct mib_ram_array_node at = {
|
struct mib_ram_array_node at = {
|
||||||
&noleafs_get_object_def,
|
&noleafs_get_object_def,
|
||||||
&noleafs_get_value,
|
&noleafs_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_RA,
|
MIB_NODE_RA,
|
||||||
0,
|
0,
|
||||||
&at_id,
|
&at_id,
|
||||||
@ -494,6 +555,8 @@ struct mib_ram_array_node at = {
|
|||||||
struct mib_list_rootnode iflist_root = {
|
struct mib_list_rootnode iflist_root = {
|
||||||
&ifentry_get_object_def,
|
&ifentry_get_object_def,
|
||||||
&ifentry_get_value,
|
&ifentry_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_LR,
|
MIB_NODE_LR,
|
||||||
0,
|
0,
|
||||||
NULL,
|
NULL,
|
||||||
@ -517,6 +580,8 @@ struct mib_node* const ifentry_nodes[22] = {
|
|||||||
const struct mib_array_node ifentry = {
|
const struct mib_array_node ifentry = {
|
||||||
&noleafs_get_object_def,
|
&noleafs_get_object_def,
|
||||||
&noleafs_get_value,
|
&noleafs_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_AR,
|
MIB_NODE_AR,
|
||||||
22,
|
22,
|
||||||
ifentry_ids,
|
ifentry_ids,
|
||||||
@ -528,6 +593,8 @@ struct mib_node* iftable_node = (struct mib_node* const)&ifentry;
|
|||||||
struct mib_ram_array_node iftable = {
|
struct mib_ram_array_node iftable = {
|
||||||
&noleafs_get_object_def,
|
&noleafs_get_object_def,
|
||||||
&noleafs_get_value,
|
&noleafs_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_RA,
|
MIB_NODE_RA,
|
||||||
0,
|
0,
|
||||||
&iftable_id,
|
&iftable_id,
|
||||||
@ -538,6 +605,8 @@ struct mib_ram_array_node iftable = {
|
|||||||
const mib_scalar_node interfaces_scalar = {
|
const mib_scalar_node interfaces_scalar = {
|
||||||
&interfaces_get_object_def,
|
&interfaces_get_object_def,
|
||||||
&interfaces_get_value,
|
&interfaces_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_SC,
|
MIB_NODE_SC,
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
@ -548,6 +617,8 @@ struct mib_node* const interfaces_nodes[2] = {
|
|||||||
const struct mib_array_node interfaces = {
|
const struct mib_array_node interfaces = {
|
||||||
&noleafs_get_object_def,
|
&noleafs_get_object_def,
|
||||||
&noleafs_get_value,
|
&noleafs_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_AR,
|
MIB_NODE_AR,
|
||||||
2,
|
2,
|
||||||
interfaces_ids,
|
interfaces_ids,
|
||||||
@ -560,6 +631,8 @@ const struct mib_array_node interfaces = {
|
|||||||
const mib_scalar_node sys_tem_scalar = {
|
const mib_scalar_node sys_tem_scalar = {
|
||||||
&system_get_object_def,
|
&system_get_object_def,
|
||||||
&system_get_value,
|
&system_get_value,
|
||||||
|
&system_set_test,
|
||||||
|
&system_set_value,
|
||||||
MIB_NODE_SC,
|
MIB_NODE_SC,
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
@ -574,6 +647,8 @@ struct mib_node* const sys_tem_nodes[7] = {
|
|||||||
const struct mib_array_node sys_tem = {
|
const struct mib_array_node sys_tem = {
|
||||||
&noleafs_get_object_def,
|
&noleafs_get_object_def,
|
||||||
&noleafs_get_value,
|
&noleafs_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_AR,
|
MIB_NODE_AR,
|
||||||
7,
|
7,
|
||||||
sys_tem_ids,
|
sys_tem_ids,
|
||||||
@ -615,6 +690,8 @@ struct mib_node* const mib2_nodes[MIB2_GROUPS] = {
|
|||||||
const struct mib_array_node mib2 = {
|
const struct mib_array_node mib2 = {
|
||||||
&noleafs_get_object_def,
|
&noleafs_get_object_def,
|
||||||
&noleafs_get_value,
|
&noleafs_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_AR,
|
MIB_NODE_AR,
|
||||||
MIB2_GROUPS,
|
MIB2_GROUPS,
|
||||||
mib2_ids,
|
mib2_ids,
|
||||||
@ -627,6 +704,8 @@ struct mib_node* const mgmt_nodes[1] = { (struct mib_node* const)&mib2 };
|
|||||||
const struct mib_array_node mgmt = {
|
const struct mib_array_node mgmt = {
|
||||||
&noleafs_get_object_def,
|
&noleafs_get_object_def,
|
||||||
&noleafs_get_value,
|
&noleafs_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_AR,
|
MIB_NODE_AR,
|
||||||
1,
|
1,
|
||||||
mgmt_ids,
|
mgmt_ids,
|
||||||
@ -640,6 +719,8 @@ struct mib_node* const internet_nodes[2] = { (struct mib_node* const)&mgmt, (str
|
|||||||
const struct mib_array_node internet = {
|
const struct mib_array_node internet = {
|
||||||
&noleafs_get_object_def,
|
&noleafs_get_object_def,
|
||||||
&noleafs_get_value,
|
&noleafs_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_AR,
|
MIB_NODE_AR,
|
||||||
2,
|
2,
|
||||||
internet_ids,
|
internet_ids,
|
||||||
@ -651,6 +732,8 @@ struct mib_node* const internet_nodes[1] = { (struct mib_node* const)&mgmt };
|
|||||||
const struct mib_array_node internet = {
|
const struct mib_array_node internet = {
|
||||||
&noleafs_get_object_def,
|
&noleafs_get_object_def,
|
||||||
&noleafs_get_value,
|
&noleafs_get_value,
|
||||||
|
&noleafs_set_test,
|
||||||
|
&noleafs_set_value,
|
||||||
MIB_NODE_AR,
|
MIB_NODE_AR,
|
||||||
1,
|
1,
|
||||||
internet_ids,
|
internet_ids,
|
||||||
@ -1021,6 +1104,8 @@ void snmp_insert_arpidx_tree(struct netif *ni, struct ip_addr *ip)
|
|||||||
at_rn->get_object_def = ip_ntomentry_get_object_def;
|
at_rn->get_object_def = ip_ntomentry_get_object_def;
|
||||||
at_rn->get_value = ip_ntomentry_get_value;
|
at_rn->get_value = ip_ntomentry_get_value;
|
||||||
}
|
}
|
||||||
|
at_rn->set_test = noleafs_set_test;
|
||||||
|
at_rn->set_value = noleafs_set_value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1226,6 +1311,8 @@ void snmp_insert_ipaddridx_tree(struct netif *ni)
|
|||||||
{
|
{
|
||||||
ipa_rn->get_object_def = ip_addrentry_get_object_def;
|
ipa_rn->get_object_def = ip_addrentry_get_object_def;
|
||||||
ipa_rn->get_value = ip_addrentry_get_value;
|
ipa_rn->get_value = ip_addrentry_get_value;
|
||||||
|
ipa_rn->set_test = noleafs_set_test;
|
||||||
|
ipa_rn->set_value = noleafs_set_value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1354,6 +1441,8 @@ void snmp_insert_iprteidx_tree(u8_t dflt, struct netif *ni)
|
|||||||
{
|
{
|
||||||
iprte_rn->get_object_def = ip_rteentry_get_object_def;
|
iprte_rn->get_object_def = ip_rteentry_get_object_def;
|
||||||
iprte_rn->get_value = ip_rteentry_get_value;
|
iprte_rn->get_value = ip_rteentry_get_value;
|
||||||
|
iprte_rn->set_test = noleafs_set_test;
|
||||||
|
iprte_rn->set_value = noleafs_set_value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1678,6 +1767,8 @@ void snmp_insert_udpidx_tree(struct udp_pcb *pcb)
|
|||||||
{
|
{
|
||||||
udp_rn->get_object_def = udpentry_get_object_def;
|
udp_rn->get_object_def = udpentry_get_object_def;
|
||||||
udp_rn->get_value = udpentry_get_value;
|
udp_rn->get_value = udpentry_get_value;
|
||||||
|
udp_rn->set_test = noleafs_set_test;
|
||||||
|
udp_rn->set_value = noleafs_set_value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1940,6 +2031,25 @@ noleafs_get_value(struct obj_def *od, u16_t len, void *value)
|
|||||||
if (value){}
|
if (value){}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u8_t
|
||||||
|
noleafs_set_test(struct obj_def *od, u16_t len, void *value)
|
||||||
|
{
|
||||||
|
if (od){}
|
||||||
|
if (len){}
|
||||||
|
if (value){}
|
||||||
|
/* can't set */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
noleafs_set_value(struct obj_def *od, u16_t len, void *value)
|
||||||
|
{
|
||||||
|
if (od){}
|
||||||
|
if (len){}
|
||||||
|
if (value){}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns systems object definitions.
|
* Returns systems object definitions.
|
||||||
*
|
*
|
||||||
@ -2065,6 +2175,63 @@ system_get_value(struct obj_def *od, u16_t len, void *value)
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static u8_t
|
||||||
|
system_set_test(struct obj_def *od, u16_t len, void *value)
|
||||||
|
{
|
||||||
|
u8_t id, set_ok;
|
||||||
|
|
||||||
|
if (value) {}
|
||||||
|
set_ok = 0;
|
||||||
|
id = od->id_inst_ptr[0];
|
||||||
|
switch (id)
|
||||||
|
{
|
||||||
|
case 4: /* sysContact */
|
||||||
|
if ((syscontact_ptr != syscontact_default) &&
|
||||||
|
(len <= 255))
|
||||||
|
{
|
||||||
|
set_ok = 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 5: /* sysName */
|
||||||
|
if ((sysname_ptr != sysname_default) &&
|
||||||
|
(len <= 255))
|
||||||
|
{
|
||||||
|
set_ok = 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 6: /* sysLocation */
|
||||||
|
if ((syslocation_ptr != syslocation_default) &&
|
||||||
|
(len <= 255))
|
||||||
|
{
|
||||||
|
set_ok = 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
return set_ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
system_set_value(struct obj_def *od, u16_t len, void *value)
|
||||||
|
{
|
||||||
|
u8_t id;
|
||||||
|
|
||||||
|
id = od->id_inst_ptr[0];
|
||||||
|
switch (id)
|
||||||
|
{
|
||||||
|
case 4: /* sysContact */
|
||||||
|
ocstrncpy(syscontact_ptr,value,len);
|
||||||
|
*syscontact_len_ptr = len;
|
||||||
|
break;
|
||||||
|
case 5: /* sysName */
|
||||||
|
ocstrncpy(sysname_ptr,value,len);
|
||||||
|
*sysname_len_ptr = len;
|
||||||
|
break;
|
||||||
|
case 6: /* sysLocation */
|
||||||
|
ocstrncpy(syslocation_ptr,value,len);
|
||||||
|
*syslocation_len_ptr = len;
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns interfaces.ifnumber object definition.
|
* Returns interfaces.ifnumber object definition.
|
||||||
@ -2530,10 +2697,6 @@ ip_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @todo ipForwarding is writeable, but we may return badValue,
|
|
||||||
in lwIP this is a compile-time switch
|
|
||||||
we will also return a badvalue for wring a default TTL
|
|
||||||
which differs from our compile time default */
|
|
||||||
static void
|
static void
|
||||||
ip_get_value(struct obj_def *od, u16_t len, void *value)
|
ip_get_value(struct obj_def *od, u16_t len, void *value)
|
||||||
{
|
{
|
||||||
@ -2677,6 +2840,49 @@ ip_get_value(struct obj_def *od, u16_t len, void *value)
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test ip object value before setting.
|
||||||
|
*
|
||||||
|
* @param od is the object definition
|
||||||
|
* @param len return value space (in bytes)
|
||||||
|
* @param value points to (varbind) space to copy value from.
|
||||||
|
*
|
||||||
|
* @note we allow set if the value matches the hardwired value,
|
||||||
|
* otherwise return badvalue.
|
||||||
|
*/
|
||||||
|
static u8_t
|
||||||
|
ip_set_test(struct obj_def *od, u16_t len, void *value)
|
||||||
|
{
|
||||||
|
u8_t id, set_ok;
|
||||||
|
s32_t *sint_ptr = value;
|
||||||
|
|
||||||
|
if (len) {}
|
||||||
|
set_ok = 0;
|
||||||
|
id = od->id_inst_ptr[0];
|
||||||
|
switch (id)
|
||||||
|
{
|
||||||
|
case 1: /* ipForwarding */
|
||||||
|
#if IP_FORWARD
|
||||||
|
/* forwarding */
|
||||||
|
if (*sint_ptr == 1)
|
||||||
|
#else
|
||||||
|
/* not-forwarding */
|
||||||
|
if (*sint_ptr == 2)
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
set_ok = 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2: /* ipDefaultTTL */
|
||||||
|
if (*sint_ptr == IP_DEFAULT_TTL)
|
||||||
|
{
|
||||||
|
set_ok = 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
return set_ok;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ip_addrentry_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od)
|
ip_addrentry_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od)
|
||||||
{
|
{
|
||||||
@ -3723,4 +3929,59 @@ snmp_get_value(struct obj_def *od, u16_t len, void *value)
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test snmp object value before setting.
|
||||||
|
*
|
||||||
|
* @param od is the object definition
|
||||||
|
* @param len return value space (in bytes)
|
||||||
|
* @param value points to (varbind) space to copy value from.
|
||||||
|
*/
|
||||||
|
static u8_t
|
||||||
|
snmp_set_test(struct obj_def *od, u16_t len, void *value)
|
||||||
|
{
|
||||||
|
u8_t id, set_ok;
|
||||||
|
|
||||||
|
if (len) {}
|
||||||
|
set_ok = 0;
|
||||||
|
id = od->id_inst_ptr[0];
|
||||||
|
if (id == 30)
|
||||||
|
{
|
||||||
|
/* snmpEnableAuthenTraps */
|
||||||
|
s32_t *sint_ptr = value;
|
||||||
|
|
||||||
|
if (snmpenableauthentraps_ptr != &snmpenableauthentraps_default)
|
||||||
|
{
|
||||||
|
/* we should have writable non-volatile mem here */
|
||||||
|
if ((*sint_ptr == 1) || (*sint_ptr == 2))
|
||||||
|
{
|
||||||
|
set_ok = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* const or hardwired value */
|
||||||
|
if (*sint_ptr == snmpenableauthentraps_default)
|
||||||
|
{
|
||||||
|
set_ok = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return set_ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
snmp_set_value(struct obj_def *od, u16_t len, void *value)
|
||||||
|
{
|
||||||
|
u8_t id;
|
||||||
|
|
||||||
|
if (len) {}
|
||||||
|
id = od->id_inst_ptr[0];
|
||||||
|
if (id == 30)
|
||||||
|
{
|
||||||
|
/* snmpEnableAuthenTraps */
|
||||||
|
s32_t *sint_ptr = value;
|
||||||
|
*snmpenableauthentraps_ptr = *sint_ptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* LWIP_SNMP */
|
#endif /* LWIP_SNMP */
|
||||||
|
@ -190,6 +190,8 @@ snmp_mib_lrn_alloc(void)
|
|||||||
{
|
{
|
||||||
lrn->get_object_def = noleafs_get_object_def;
|
lrn->get_object_def = noleafs_get_object_def;
|
||||||
lrn->get_value = noleafs_get_value;
|
lrn->get_value = noleafs_get_value;
|
||||||
|
lrn->set_test = noleafs_set_test;
|
||||||
|
lrn->set_value = noleafs_set_value;
|
||||||
lrn->node_type = MIB_NODE_LR;
|
lrn->node_type = MIB_NODE_LR;
|
||||||
lrn->maxlength = 0;
|
lrn->maxlength = 0;
|
||||||
lrn->head = NULL;
|
lrn->head = NULL;
|
||||||
|
@ -89,7 +89,7 @@ snmp_init(void)
|
|||||||
{
|
{
|
||||||
msg_ps->state = SNMP_MSG_EMPTY;
|
msg_ps->state = SNMP_MSG_EMPTY;
|
||||||
msg_ps->error_index = 0;
|
msg_ps->error_index = 0;
|
||||||
msg_ps->error_status = 0;
|
msg_ps->error_status = SNMP_ES_NOERROR;
|
||||||
msg_ps++;
|
msg_ps++;
|
||||||
}
|
}
|
||||||
trap_msg.pcb = snmp1_pcb;
|
trap_msg.pcb = snmp1_pcb;
|
||||||
@ -164,10 +164,6 @@ snmp_msg_event(struct snmp_msg_pstat *msg_ps)
|
|||||||
else if (msg_ps->rt == SNMP_ASN1_PDU_SET_REQ)
|
else if (msg_ps->rt == SNMP_ASN1_PDU_SET_REQ)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
/** @todo not a request, return generror?? */
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (msg_ps->state == SNMP_MSG_INTERNAL)
|
else if (msg_ps->state == SNMP_MSG_INTERNAL)
|
||||||
{
|
{
|
||||||
@ -213,16 +209,12 @@ snmp_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, struct ip_addr *addr,
|
|||||||
|
|
||||||
/* accepting request */
|
/* accepting request */
|
||||||
snmp_inc_snmpinpkts();
|
snmp_inc_snmpinpkts();
|
||||||
/* register 'protocol control block' used */
|
/* record used 'protocol control block' */
|
||||||
msg_ps->pcb = pcb;
|
msg_ps->pcb = pcb;
|
||||||
/* source address (network order) */
|
/* source address (network order) */
|
||||||
msg_ps->sip = *addr;
|
msg_ps->sip = *addr;
|
||||||
/* source port (host order (lwIP oddity)) */
|
/* source port (host order (lwIP oddity)) */
|
||||||
msg_ps->sp = port;
|
msg_ps->sp = port;
|
||||||
/* demultiplex variable bindings */
|
|
||||||
msg_ps->state = SNMP_MSG_DEMUX;
|
|
||||||
/* first variable binding from list to inspect */
|
|
||||||
msg_ps->vb_idx = 0;
|
|
||||||
/* read UDP payload length from UDP header */
|
/* read UDP payload length from UDP header */
|
||||||
payload_len = ntohs(udphdr->len) - UDP_HLEN;
|
payload_len = ntohs(udphdr->len) - UDP_HLEN;
|
||||||
|
|
||||||
@ -231,12 +223,24 @@ snmp_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, struct ip_addr *addr,
|
|||||||
|
|
||||||
/* check total length, version, community, pdu type */
|
/* check total length, version, community, pdu type */
|
||||||
err_ret = snmp_pdu_header_check(p, payload_ofs, payload_len, &varbind_ofs, msg_ps);
|
err_ret = snmp_pdu_header_check(p, payload_ofs, payload_len, &varbind_ofs, msg_ps);
|
||||||
|
if ((msg_ps->rt == SNMP_ASN1_PDU_GET_REQ) ||
|
||||||
|
(msg_ps->rt == SNMP_ASN1_PDU_GET_NEXT_REQ) ||
|
||||||
|
(msg_ps->rt == SNMP_ASN1_PDU_SET_REQ))
|
||||||
|
{
|
||||||
|
/* Only accept requests. (be robust) */
|
||||||
|
err_ret = err_ret;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Reject response and trap headers as input! */
|
||||||
|
err_ret = ERR_ARG;
|
||||||
|
}
|
||||||
if (err_ret == ERR_OK)
|
if (err_ret == ERR_OK)
|
||||||
{
|
{
|
||||||
LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_recv ok, community %s\n", msg_ps->community));
|
LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_recv ok, community %s\n", msg_ps->community));
|
||||||
|
|
||||||
/* Builds a list of variable bindings. Copy the varbinds from the pbuf
|
/* Builds a list of variable bindings. Copy the varbinds from the pbuf
|
||||||
chain to glue them when these are divided over two or more pbuf's. */
|
chain to glue them when these are divided over two or more pbuf's. */
|
||||||
err_ret = snmp_pdu_dec_varbindlist(p, varbind_ofs, &varbind_ofs, msg_ps);
|
err_ret = snmp_pdu_dec_varbindlist(p, varbind_ofs, &varbind_ofs, msg_ps);
|
||||||
if ((err_ret == ERR_OK) && (msg_ps->invb.count > 0))
|
if ((err_ret == ERR_OK) && (msg_ps->invb.count > 0))
|
||||||
{
|
{
|
||||||
@ -245,6 +249,13 @@ snmp_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, struct ip_addr *addr,
|
|||||||
|
|
||||||
/* we've decoded the incoming message, release input msg now */
|
/* we've decoded the incoming message, release input msg now */
|
||||||
pbuf_free(p);
|
pbuf_free(p);
|
||||||
|
|
||||||
|
msg_ps->error_status = SNMP_ES_NOERROR;
|
||||||
|
msg_ps->error_index = 0;
|
||||||
|
/* demultiplex variable bindings */
|
||||||
|
msg_ps->state = SNMP_MSG_DEMUX;
|
||||||
|
/* first variable binding from list to inspect */
|
||||||
|
msg_ps->vb_idx = 0;
|
||||||
|
|
||||||
LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_recv varbind cnt=%"U16_F"\n",(u16_t)msg_ps->invb.count));
|
LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_recv varbind cnt=%"U16_F"\n",(u16_t)msg_ps->invb.count));
|
||||||
|
|
||||||
@ -361,14 +372,61 @@ snmp_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, struct ip_addr *addr,
|
|||||||
msg_ps->error_index = 1 + msg_ps->vb_idx;
|
msg_ps->error_index = 1 + msg_ps->vb_idx;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else if (msg_ps->rt == SNMP_ASN1_PDU_SET_REQ)
|
||||||
{
|
{
|
||||||
/* request != GET */
|
/** test object identifier for .iso.org.dod.internet prefix */
|
||||||
/** @todo EXPERIMENTAL dumb echo, this is not how the agent should respond.
|
if (snmp_iso_prefix_tst(msg_ps->invb.head->ident_len, msg_ps->invb.head->ident))
|
||||||
This is for test purposes only, do not use this in real world!! */
|
{
|
||||||
msg_ps->outvb = msg_ps->invb;
|
mn = snmp_search_tree((struct mib_node*)&internet, msg_ps->invb.head->ident_len - 4,
|
||||||
msg_ps->error_status = SNMP_ES_NOERROR;
|
msg_ps->invb.head->ident + 4, &object_def);
|
||||||
msg_ps->error_index = 0;
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mn = NULL;
|
||||||
|
}
|
||||||
|
if (mn != NULL)
|
||||||
|
{
|
||||||
|
struct snmp_varbind *vb;
|
||||||
|
|
||||||
|
vb = msg_ps->invb.head;
|
||||||
|
if ((object_def.access == MIB_OBJECT_READ_WRITE) &&
|
||||||
|
(object_def.asn_type == vb->value_type) &&
|
||||||
|
(mn->set_test(&object_def,vb->value_len,vb->value) != 0))
|
||||||
|
{
|
||||||
|
/** @todo change this if we support vb-lists,
|
||||||
|
first test all vbs, then either set all or give badvalue */
|
||||||
|
mn->set_value(&object_def,vb->value_len,vb->value);
|
||||||
|
/** simply echo the input if we can set it */
|
||||||
|
msg_ps->outvb = msg_ps->invb;
|
||||||
|
msg_ps->invb.head = NULL;
|
||||||
|
msg_ps->invb.tail = NULL;
|
||||||
|
msg_ps->invb.count = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* bad value */
|
||||||
|
/* @todo move used names back from outvb to invb */
|
||||||
|
snmp_varbind_list_free(&msg_ps->outvb);
|
||||||
|
msg_ps->outvb = msg_ps->invb;
|
||||||
|
msg_ps->invb.head = NULL;
|
||||||
|
msg_ps->invb.tail = NULL;
|
||||||
|
msg_ps->invb.count = 0;
|
||||||
|
msg_ps->error_status = SNMP_ES_BADVALUE;
|
||||||
|
msg_ps->error_index = 1 + msg_ps->vb_idx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* mn == NULL, noSuchName */
|
||||||
|
/* @todo move used names back from outvb to invb */
|
||||||
|
snmp_varbind_list_free(&msg_ps->outvb);
|
||||||
|
msg_ps->outvb = msg_ps->invb;
|
||||||
|
msg_ps->invb.head = NULL;
|
||||||
|
msg_ps->invb.tail = NULL;
|
||||||
|
msg_ps->invb.count = 0;
|
||||||
|
msg_ps->error_status = SNMP_ES_NOSUCHNAME;
|
||||||
|
msg_ps->error_index = 1 + msg_ps->vb_idx;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* when more variable bindings left msg_ps->state = SNMP_MSG_DEMUX */
|
/* when more variable bindings left msg_ps->state = SNMP_MSG_DEMUX */
|
||||||
|
@ -94,7 +94,10 @@ struct mib_node
|
|||||||
/** returns object value for the given object identifier,
|
/** returns object value for the given object identifier,
|
||||||
@note the caller must allocate at least len bytes for the value */
|
@note the caller must allocate at least len bytes for the value */
|
||||||
void (*get_value)(struct obj_def *od, u16_t len, void *value);
|
void (*get_value)(struct obj_def *od, u16_t len, void *value);
|
||||||
/** @todo set_value() */
|
/** tests length and/or range BEFORE setting */
|
||||||
|
u8_t (*set_test)(struct obj_def *od, u16_t len, void *value);
|
||||||
|
/** sets object value, only to be called when set_test() */
|
||||||
|
void (*set_value)(struct obj_def *od, u16_t len, void *value);
|
||||||
/** One out of MIB_NODE_AR, MIB_NODE_LR or MIB_NODE_EX */
|
/** One out of MIB_NODE_AR, MIB_NODE_LR or MIB_NODE_EX */
|
||||||
const u8_t node_type;
|
const u8_t node_type;
|
||||||
/* array or max list length */
|
/* array or max list length */
|
||||||
@ -111,6 +114,8 @@ struct mib_array_node
|
|||||||
/* inherited "base class" members */
|
/* inherited "base class" members */
|
||||||
void (* const get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od);
|
void (* const get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od);
|
||||||
void (* const get_value)(struct obj_def *od, u16_t len, void *value);
|
void (* const get_value)(struct obj_def *od, u16_t len, void *value);
|
||||||
|
u8_t (*set_test)(struct obj_def *od, u16_t len, void *value);
|
||||||
|
void (*set_value)(struct obj_def *od, u16_t len, void *value);
|
||||||
|
|
||||||
const u8_t node_type;
|
const u8_t node_type;
|
||||||
const u16_t maxlength;
|
const u16_t maxlength;
|
||||||
@ -127,6 +132,8 @@ struct mib_ram_array_node
|
|||||||
/* inherited "base class" members */
|
/* inherited "base class" members */
|
||||||
void (*get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od);
|
void (*get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od);
|
||||||
void (*get_value)(struct obj_def *od, u16_t len, void *value);
|
void (*get_value)(struct obj_def *od, u16_t len, void *value);
|
||||||
|
u8_t (*set_test)(struct obj_def *od, u16_t len, void *value);
|
||||||
|
void (*set_value)(struct obj_def *od, u16_t len, void *value);
|
||||||
|
|
||||||
u8_t node_type;
|
u8_t node_type;
|
||||||
u16_t maxlength;
|
u16_t maxlength;
|
||||||
@ -151,6 +158,8 @@ struct mib_list_rootnode
|
|||||||
/* inherited "base class" members */
|
/* inherited "base class" members */
|
||||||
void (*get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od);
|
void (*get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od);
|
||||||
void (*get_value)(struct obj_def *od, u16_t len, void *value);
|
void (*get_value)(struct obj_def *od, u16_t len, void *value);
|
||||||
|
u8_t (*set_test)(struct obj_def *od, u16_t len, void *value);
|
||||||
|
void (*set_value)(struct obj_def *od, u16_t len, void *value);
|
||||||
|
|
||||||
u8_t node_type;
|
u8_t node_type;
|
||||||
u16_t maxlength;
|
u16_t maxlength;
|
||||||
@ -169,6 +178,8 @@ struct mib_external_node
|
|||||||
/* inherited "base class" members */
|
/* inherited "base class" members */
|
||||||
void (*get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od);
|
void (*get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od);
|
||||||
void (*get_value)(struct obj_def *od, u16_t len, void *value);
|
void (*get_value)(struct obj_def *od, u16_t len, void *value);
|
||||||
|
u8_t (*set_test)(struct obj_def *od, u16_t len, void *value);
|
||||||
|
void (*set_value)(struct obj_def *od, u16_t len, void *value);
|
||||||
|
|
||||||
u8_t node_type;
|
u8_t node_type;
|
||||||
u16_t maxlength;
|
u16_t maxlength;
|
||||||
@ -192,6 +203,8 @@ extern const struct mib_array_node internet;
|
|||||||
/** dummy function pointers for non-leaf MIB nodes from mib2.c */
|
/** dummy function pointers for non-leaf MIB nodes from mib2.c */
|
||||||
void noleafs_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od);
|
void noleafs_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od);
|
||||||
void noleafs_get_value(struct obj_def *od, u16_t len, void *value);
|
void noleafs_get_value(struct obj_def *od, u16_t len, void *value);
|
||||||
|
u8_t noleafs_set_test(struct obj_def *od, u16_t len, void *value);
|
||||||
|
void noleafs_set_value(struct obj_def *od, u16_t len, void *value);
|
||||||
|
|
||||||
void snmp_oidtoip(s32_t *ident, struct ip_addr *ip);
|
void snmp_oidtoip(s32_t *ident, struct ip_addr *ip);
|
||||||
void snmp_iptooid(struct ip_addr *ip, s32_t *ident);
|
void snmp_iptooid(struct ip_addr *ip, s32_t *ident);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user