blob: ed7ae683bc983f134eef973c1d15b4fd7855506a [file] [log] [blame]
/* 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");