void snmp_hosttrap(struct table *table, struct host *host) { if (iev_snmp == NULL || env->sc_snmp == -1) return; /* * OPENBSD-RELAYD-MIB host status trap * XXX The trap format needs some tweaks and other OIDs */ imsg_compose_event(iev_snmp, IMSG_SNMP_TRAP, 0, 0, -1, NULL, 0); SNMP_ELEMENT(".1", SNMP_NULL, NULL, 0); SNMP_ELEMENT(".1.1", SNMP_OCTETSTRING, host->conf.name, 0); SNMP_ELEMENT(".1.2", SNMP_INTEGER32, NULL, host->up); SNMP_ELEMENT(".1.3", SNMP_INTEGER32, NULL, host->last_up); SNMP_ELEMENT(".1.4", SNMP_INTEGER32, NULL, host->up_cnt); SNMP_ELEMENT(".1.5", SNMP_INTEGER32, NULL, host->check_cnt); SNMP_ELEMENT(".1.6", SNMP_OCTETSTRING, table->conf.name, 0); SNMP_ELEMENT(".1.7", SNMP_INTEGER32, NULL, table->up); if (!host->conf.retry) goto done; SNMP_ELEMENT(".1.8", SNMP_INTEGER32, NULL, host->conf.retry); SNMP_ELEMENT(".1.9", SNMP_INTEGER32, NULL, host->retry_cnt); done: imsg_compose_event(iev_snmp, IMSG_SNMP_END, 0, 0, -1, NULL, 0); }
void snmp_hosttrap(struct relayd *env, struct table *table, struct host *host) { struct agentx_pdu *pdu; if (snmp_agentx == NULL || env->sc_snmp == -1) return; /* * OPENBSD-RELAYD-MIB host status trap * XXX The trap format needs some tweaks and other OIDs */ if ((pdu = snmp_agentx_notify_pdu(&hosttrapoid)) == NULL) return; SNMP_ELEMENT(".1.0", SNMP_NULL, NULL, 0, pdu); SNMP_ELEMENT(".1.1.0", SNMP_OCTETSTRING, host->conf.name, 0, pdu); SNMP_ELEMENT(".1.2.0", SNMP_INTEGER32, NULL, host->up, pdu); SNMP_ELEMENT(".1.3.0", SNMP_INTEGER32, NULL, host->last_up, pdu); SNMP_ELEMENT(".1.4.0", SNMP_INTEGER32, NULL, host->up_cnt, pdu); SNMP_ELEMENT(".1.5.0", SNMP_INTEGER32, NULL, host->check_cnt, pdu); SNMP_ELEMENT(".1.6.0", SNMP_OCTETSTRING, table->conf.name, 0, pdu); SNMP_ELEMENT(".1.7.0", SNMP_INTEGER32, NULL, table->up, pdu); if (!host->conf.retry) goto done; SNMP_ELEMENT(".1.8.0", SNMP_INTEGER32, NULL, host->conf.retry, pdu); SNMP_ELEMENT(".1.9.0", SNMP_INTEGER32, NULL, host->retry_cnt, pdu); done: snmp_agentx_send(snmp_agentx, pdu); snmp_event_add(env, EV_WRITE); }