| /* HEADER Testing SNMP handler registration */ |
| |
| static oid Oid[] = { 1, 3, 6, 1, 3, 327 }; /* experimental.327 */ |
| netsnmp_handler_registration *handler, *handler2; |
| netsnmp_mib_handler *dh; |
| netsnmp_cache *nc, *nc2; |
| |
| init_snmp("snmp"); |
| |
| handler = netsnmp_create_handler_registration("experimental.327", NULL, |
| Oid, OID_LENGTH(Oid), HANDLER_CAN_RWRITE); |
| OK(handler != NULL, "Handler creation."); |
| |
| nc = netsnmp_cache_create(10, NULL, NULL, Oid, OID_LENGTH(Oid)); |
| OK(nc, "netsnmp_cache allocation"); |
| OK(snmp_oid_compare(nc->rootoid, nc->rootoid_len, Oid, OID_LENGTH(Oid)) == 0, |
| "Handler private OID."); |
| |
| handler->handler->myvoid = nc; |
| netsnmp_cache_handler_owns_cache(handler->handler); |
| |
| nc2 = handler->handler->myvoid; |
| OK(nc2, "Handler private data"); |
| OK(snmp_oid_compare(nc2->rootoid, nc2->rootoid_len, Oid, OID_LENGTH(Oid)) == 0, |
| "Handler private OID."); |
| |
| OK(netsnmp_register_instance(handler) == MIB_REGISTERED_OK, |
| "MIB registration."); |
| |
| handler2 = netsnmp_create_handler_registration("experimental.327", NULL, |
| Oid, OID_LENGTH(Oid), HANDLER_CAN_RWRITE); |
| OK(handler2 != NULL, "Second registration"); |
| |
| OK(netsnmp_register_instance(handler2) == MIB_DUPLICATE_REGISTRATION, |
| "Duplicate MIB registration."); |
| |
| dh = netsnmp_handler_dup(handler->handler); |
| OK(dh, "Handler duplication."); |
| |
| OK(netsnmp_unregister_handler(handler) == SNMPERR_SUCCESS, |
| "Handler unregistration."); |
| |
| netsnmp_handler_free(dh); |
| OK(TRUE, "Freeing duplicate handler"); |
| |
| snmp_shutdown("snmp"); |