Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "main.h"
- #include "private_mib.h"
- #include "lwip/snmp.h"
- #include "lwip/snmp_msg.h"
- #include "lwip/snmp_asn1.h"
- #include "lwip/snmp_structs.h"
- /**
- * Initialises this private MIB before use.
- *
- */
- void lwip_privmib_init(void);
- void ocstrncpy(u8_t *dst, u8_t *src, u8_t n);
- void objectidncpy(s32_t *dst, s32_t *src, u8_t n);
- static void moduleEntry_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od)
- {
- u8_t id;
- /* return to object name, adding index depth (1) */
- ident_len += 1;
- ident -= 1;
- if (ident_len == 2)
- {
- od->id_inst_len = ident_len;
- od->id_inst_ptr = ident;
- id = ident[0];
- LWIP_DEBUGF(SNMP_MIB_DEBUG,("get_object_def private moduleEntry.%"U16_F".0\n",(u16_t)id));
- switch (id)
- {
- case 1: /* moduleIndex */
- od->instance = MIB_OBJECT_TAB;
- od->access = MIB_OBJECT_READ_ONLY;
- od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG);
- od->v_len = sizeof(u32_t);
- break;
- case 2: /* moduleAddr */
- od->instance = MIB_OBJECT_TAB;
- od->access = MIB_OBJECT_READ_ONLY;
- od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG);
- od->v_len = sizeof(u32_t);
- break;
- case 3: /* moduleReset */
- od->instance = MIB_OBJECT_TAB;
- od->access = MIB_OBJECT_READ_WRITE;
- od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG);
- od->v_len = sizeof(u32_t);
- break;
- case 4: /* moduleActive */
- od->instance = MIB_OBJECT_TAB;
- od->access = MIB_OBJECT_READ_WRITE;
- od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG);
- od->v_len = sizeof(u32_t);
- break;
- case 5: /* moduleBusy */
- od->instance = MIB_OBJECT_TAB;
- od->access = MIB_OBJECT_READ_ONLY;
- od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG);
- od->v_len = sizeof(u32_t);
- break;
- case 6: /* moduleType */
- od->instance = MIB_OBJECT_TAB;
- od->access = MIB_OBJECT_READ_WRITE;
- od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG);
- od->v_len = sizeof(u32_t);
- break;
- case 7: /* moduleAsDestination */
- od->instance = MIB_OBJECT_TAB;
- od->access = MIB_OBJECT_READ_WRITE;
- od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG);
- od->v_len = sizeof(u32_t);
- break;
- case 8: /* moduleComment */
- od->instance = MIB_OBJECT_TAB;
- od->access = MIB_OBJECT_READ_WRITE;
- od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR);
- od->v_len = sizeof(u32_t);
- break;
- default:
- LWIP_DEBUGF(SNMP_MIB_DEBUG,("moduleEntry_get_object_def: no such object\n"));
- od->instance = MIB_OBJECT_NONE;
- break;
- };
- }
- else
- {
- LWIP_DEBUGF(SNMP_MIB_DEBUG,("private moduleEntry_get_object_def: no scalar\n"));
- od->instance = MIB_OBJECT_NONE;
- }
- }
- static void moduleEntry_get_value(struct obj_def *od, u16_t len, void *value)
- {
- u8_t id;
- /* the index value can be found in: od->id_inst_ptr[1] */
- id = od->id_inst_ptr[0];
- switch (id)
- {
- case 1: /* moduleIndex */
- {
- s32_t *sint_ptr = value;
- *sint_ptr = 55;
- }
- break;
- case 2: /* moduleAddr */
- {
- s32_t *sint_ptr = value;
- *sint_ptr = 0xA;
- }
- break;
- case 3: /* moduleReset */
- {
- s32_t *sint_ptr = value;
- *sint_ptr = 0;
- }
- break;
- case 4: /* moduleActive */
- {
- s32_t *sint_ptr = value;
- *sint_ptr = 1;
- }
- break;
- case 5: /* moduleBusy */
- {
- s32_t *sint_ptr = value;
- *sint_ptr = 0;
- }
- break;
- case 6: /* moduleType */
- {
- s32_t *sint_ptr = value;
- *sint_ptr = 0;
- }
- break;
- case 7: /* moduleAsDestination */
- {
- s32_t *sint_ptr = value;
- *sint_ptr = 0;
- }
- break;
- case 8: /* moduleComment */
- ocstrncpy(value,(u8_t*)"hehe",len);
- break;
- };
- }
- static u8_t moduleEntry_set_test(struct obj_def *od, u16_t len, void *value)
- {
- u8_t id, set_ok;
- /* the index value can be found in: od->id_inst_ptr[1] */
- set_ok = 0;
- id = od->id_inst_ptr[0];
- switch (id)
- {
- case 3: /* moduleReset */
- /* validate the value argument and set ok */
- break;
- case 4: /* moduleActive */
- /* validate the value argument and set ok */
- break;
- case 6: /* moduleType */
- /* validate the value argument and set ok */
- break;
- case 7: /* moduleAsDestination */
- /* validate the value argument and set ok */
- break;
- case 8: /* moduleComment */
- /* validate the value argument and set ok */
- break;
- };
- return set_ok;
- }
- static void moduleEntry_set_value(struct obj_def *od, u16_t len, void *value)
- {
- u8_t id;
- /* the index value can be found in: od->id_inst_ptr[1] */
- id = od->id_inst_ptr[0];
- switch (id)
- {
- case 3: /* moduleReset */
- {
- s32_t *sint_ptr = value;
- //= *sint_ptr; /* do something with the value */
- }
- break;
- case 4: /* moduleActive */
- {
- s32_t *sint_ptr = value;
- //= *sint_ptr; /* do something with the value */
- }
- break;
- case 6: /* moduleType */
- {
- s32_t *sint_ptr = value;
- //= *sint_ptr; /* do something with the value */
- }
- break;
- case 7: /* moduleAsDestination */
- {
- s32_t *sint_ptr = value;
- //= *sint_ptr; /* do something with the value */
- }
- break;
- case 8: /* moduleComment */
- //ocstrncpy((u8_t*)"hehe",value,len);
- break;
- };
- }
- struct mib_list_rootnode moduleEntry_root = {
- &moduleEntry_get_object_def,
- &moduleEntry_get_value,
- &moduleEntry_set_test,
- &moduleEntry_set_value,
- MIB_NODE_LR,
- 0,
- NULL,
- NULL, 0,
- };
- /* moduleEntry .1.3.6.1.4.1.26381.1.3.1 */
- const s32_t moduleEntry_ids[8] = { 1, 2, 3, 4, 5, 6, 7, 8 };
- struct mib_node* const moduleEntry_nodes[8] = {
- (struct mib_node* const)&moduleEntry_root,
- (struct mib_node* const)&moduleEntry_root,
- (struct mib_node* const)&moduleEntry_root,
- (struct mib_node* const)&moduleEntry_root,
- (struct mib_node* const)&moduleEntry_root,
- (struct mib_node* const)&moduleEntry_root,
- (struct mib_node* const)&moduleEntry_root,
- (struct mib_node* const)&moduleEntry_root
- };
- const struct mib_array_node moduleEntry = {
- &noleafs_get_object_def,
- &noleafs_get_value,
- &noleafs_set_test,
- &noleafs_set_value,
- MIB_NODE_AR,
- 8,
- moduleEntry_ids,
- moduleEntry_nodes
- };
- /* modulesTable .1.3.6.1.4.1.26381.1.3 */
- s32_t modulesTable_ids[1] = { 1 };
- struct mib_node* modulesTable_nodes[1] = {
- (struct mib_node* const)&moduleEntry
- };
- struct mib_ram_array_node modulesTable = {
- &noleafs_get_object_def,
- &noleafs_get_value,
- &noleafs_set_test,
- &noleafs_set_value,
- MIB_NODE_RA,
- 0,
- modulesTable_ids,
- modulesTable_nodes
- };
- static void emmp_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od)
- {
- u8_t id;
- /* return to object name, adding index depth (1) */
- ident_len += 1;
- ident -= 1;
- if (ident_len == 2)
- {
- od->id_inst_len = ident_len;
- od->id_inst_ptr = ident;
- id = ident[0];
- LWIP_DEBUGF(SNMP_MIB_DEBUG,("get_object_def private emmp.%"U16_F".0\n",(u16_t)id));
- switch (id)
- {
- case 1: /* restart */
- od->instance = MIB_OBJECT_SCALAR;
- od->access = MIB_OBJECT_READ_WRITE;
- od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG);
- od->v_len = sizeof(u32_t);
- break;
- case 2: /* reset */
- od->instance = MIB_OBJECT_SCALAR;
- od->access = MIB_OBJECT_READ_WRITE;
- od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG);
- od->v_len = sizeof(u32_t);
- break;
- default:
- LWIP_DEBUGF(SNMP_MIB_DEBUG,("emmp_get_object_def: no such object\n"));
- od->instance = MIB_OBJECT_NONE;
- break;
- };
- }
- else
- {
- LWIP_DEBUGF(SNMP_MIB_DEBUG,("private emmp_get_object_def: no scalar\n"));
- od->instance = MIB_OBJECT_NONE;
- }
- }
- static void emmp_get_value(struct obj_def *od, u16_t len, void *value)
- {
- u8_t id;
- id = od->id_inst_ptr[0];
- switch (id)
- {
- case 1: /* restart */
- {
- s32_t *sint_ptr = value;
- *sint_ptr = 42;
- }
- break;
- case 2: /* reset */
- {
- s32_t *sint_ptr = value;
- *sint_ptr = 43;
- }
- break;
- };
- }
- static u8_t emmp_set_test(struct obj_def *od, u16_t len, void *value)
- {
- u8_t id, set_ok;
- set_ok = 0;
- id = od->id_inst_ptr[0];
- switch (id)
- {
- case 1: /* restart */
- /* validate the value argument and set ok */
- break;
- case 2: /* reset */
- /* validate the value argument and set ok */
- break;
- };
- return set_ok;
- }
- static void emmp_set_value(struct obj_def *od, u16_t len, void *value)
- {
- u8_t id;
- id = od->id_inst_ptr[0];
- switch (id)
- {
- case 1: /* restart */
- {
- s32_t *sint_ptr = value;
- //= *sint_ptr; /* do something with the value */
- }
- break;
- case 2: /* reset */
- {
- s32_t *sint_ptr = value;
- //= *sint_ptr; /* do something with the value */
- }
- break;
- };
- }
- const mib_scalar_node emmp_scalar = {
- &emmp_get_object_def,
- &emmp_get_value,
- &emmp_set_test,
- &emmp_set_value,
- MIB_NODE_SC,
- 0
- };
- /* emmp .1.3.6.1.4.1.26381.1 */
- const s32_t emmp_ids[3] = { 1, 2, 3 };
- struct mib_node* const emmp_nodes[3] = {
- (struct mib_node* const)&emmp_scalar,
- (struct mib_node* const)&emmp_scalar,
- (struct mib_node* const)&modulesTable
- };
- const struct mib_array_node emmp = {
- &noleafs_get_object_def,
- &noleafs_get_value,
- &noleafs_set_test,
- &noleafs_set_value,
- MIB_NODE_AR,
- 3,
- emmp_ids,
- emmp_nodes
- };
- /* lwip .1.3.6.1.4.1.26381 */
- const s32_t lwip_ids[1] = { 1 };
- struct mib_node* const lwip_nodes[1] = {
- (struct mib_node* const)&emmp
- };
- const struct mib_array_node lwip = {
- &noleafs_get_object_def,
- &noleafs_get_value,
- &noleafs_set_test,
- &noleafs_set_value,
- MIB_NODE_AR,
- 1,
- lwip_ids,
- lwip_nodes
- };
- /* enterprises .1.3.6.1.4.1 */
- const s32_t enterprises_ids[1] = { 26381 };
- struct mib_node* const enterprises_nodes[1] = {
- (struct mib_node* const)&lwip
- };
- const struct mib_array_node enterprises = {
- &noleafs_get_object_def,
- &noleafs_get_value,
- &noleafs_set_test,
- &noleafs_set_value,
- MIB_NODE_AR,
- 1,
- enterprises_ids,
- enterprises_nodes
- };
- /* private .1.3.6.1.4 */
- const s32_t private_ids[1] = { 1 };
- struct mib_node* const private_nodes[1] = {
- (struct mib_node* const)&enterprises
- };
- const struct mib_array_node private = {
- &noleafs_get_object_def,
- &noleafs_get_value,
- &noleafs_set_test,
- &noleafs_set_value,
- MIB_NODE_AR,
- 1,
- private_ids,
- private_nodes
- };
- void
- lwip_privmib_init(void)
- {
- struct mib_list_rootnode *module_rn;
- struct mib_list_node *module_node;
- module_node = NULL;
- snmp_mib_node_insert(&moduleEntry_root, moduleEntry_root.count + 1,
- &module_node);
- if(module_node->nptr == NULL) {
- module_rn = snmp_mib_lrn_alloc();
- module_node->nptr = (struct mib_node*)module_rn;
- if (module_rn != NULL) {
- module_rn->get_object_def = moduleEntry_get_object_def;
- module_rn->get_value = moduleEntry_get_value;
- module_rn->set_test = moduleEntry_set_test;
- module_rn->set_value = moduleEntry_set_value;
- } else {
- LED(1); // Error allocation
- }
- } else {
- module_rn = (struct mib_list_rootnode*)module_node->nptr;
- }
- modulesTable.maxlength = 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement