int register_mib(const char *moduleName, struct variable *var, size_t varsize, size_t numvars, oid *mibloc, size_t mibloclen) { return register_mib_priority( moduleName, var, varsize, numvars, mibloc, mibloclen, DEFAULT_MIB_PRIORITY ); }
void init_sysORTable(void) { /* register ourselves with the agent to handle our mib tree */ #ifdef USING_AGENTX_SUBAGENT_MODULE if ( ds_get_boolean(DS_APPLICATION_ID, DS_AGENT_ROLE) == MASTER_AGENT ) (void)register_mib_priority("mibII/sysORTable", (struct variable *) sysORTable_variables, sizeof(struct variable2), sizeof(sysORTable_variables)/sizeof(struct variable2), sysORTable_variables_oid, sizeof(sysORTable_variables_oid)/sizeof(oid), 1); else #endif REGISTER_MIB("mibII/sysORTable", sysORTable_variables, variable2, sysORTable_variables_oid); #ifdef USING_MIBII_SYSTEM_MIB_MODULE if ( ++system_module_count == 3 ) REGISTER_SYSOR_TABLE( system_module_oid, system_module_oid_len, "The MIB module for SNMPv2 entities"); #endif gettimeofday(&sysOR_lastchange, NULL); }
void pass_persist_parse_config(const char *token, char *cptr) { struct extensible **ppass = &persistpassthrus, **etmp, *ptmp; char *tcptr, *endopt; int i; long int priority; /* * options */ priority = DEFAULT_MIB_PRIORITY; while (*cptr == '-') { cptr++; switch (*cptr) { case 'p': /* change priority level */ cptr++; cptr = skip_white(cptr); if (! isdigit((unsigned char)(*cptr))) { config_perror("priority must be an integer"); return; } priority = strtol((const char*) cptr, &endopt, 0); if ((priority == LONG_MIN) || (priority == LONG_MAX)) { config_perror("priority under/overflow"); return; } cptr = endopt; cptr = skip_white(cptr); break; default: config_perror("unknown option for pass directive"); return; } } /* * MIB */ if (*cptr == '.') cptr++; if (!isdigit((unsigned char)(*cptr))) { config_perror("second token is not a OID"); return; } numpersistpassthrus++; while (*ppass != NULL) ppass = &((*ppass)->next); (*ppass) = (struct extensible *) malloc(sizeof(struct extensible)); if (*ppass == NULL) return; (*ppass)->type = PASSTHRU_PERSIST; (*ppass)->miblen = parse_miboid(cptr, (*ppass)->miboid); while (isdigit((unsigned char)(*cptr)) || *cptr == '.') cptr++; /* * path */ cptr = skip_white(cptr); if (cptr == NULL) { config_perror("No command specified on pass_persist line"); (*ppass)->command[0] = 0; } else { for (tcptr = cptr; *tcptr != 0 && *tcptr != '#' && *tcptr != ';'; tcptr++); sprintf((*ppass)->command, "%.*s", (int) (tcptr - cptr), cptr); } strlcpy((*ppass)->name, (*ppass)->command, sizeof((*ppass)->name)); (*ppass)->next = NULL; register_mib_priority("pass_persist", (struct variable *) extensible_persist_passthru_variables, sizeof(struct variable2), 1, (*ppass)->miboid, (*ppass)->miblen, priority); /* * argggg -- pasthrus must be sorted */ if (numpersistpassthrus > 1) { etmp = (struct extensible **) malloc(((sizeof(struct extensible *)) * numpersistpassthrus)); if (etmp == NULL) return; for (i = 0, ptmp = (struct extensible *) persistpassthrus; i < numpersistpassthrus && ptmp != NULL; i++, ptmp = ptmp->next) etmp[i] = ptmp; qsort(etmp, numpersistpassthrus, sizeof(struct extensible *), pass_persist_compare); persistpassthrus = (struct extensible *) etmp[0]; ptmp = (struct extensible *) etmp[0]; for (i = 0; i < numpersistpassthrus - 1; i++) { ptmp->next = etmp[i + 1]; ptmp = ptmp->next; } ptmp->next = NULL; free(etmp); } }