setSerialNo.c
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:2k
- /**
- * This file implements the snmpSetSerialNo TestAndIncr counter
- */
- #include <net-snmp/net-snmp-config.h>
- #include <net-snmp/net-snmp-includes.h>
- #include <net-snmp/agent/net-snmp-agent-includes.h>
- #include "setSerialNo.h"
- /*
- * A watched spinlock can be fully implemented by the spinlock helper,
- * but we still need a suitable variable to hold the value.
- */
- static int setserialno;
- /*
- * TestAndIncr values should persist across agent restarts,
- * so we need config handling routines to load and save the
- * current value (incrementing this whenever it's loaded).
- */
- void
- setserial_parse_config( const char *token, char *cptr )
- {
- setserialno = atoi(cptr);
- setserialno++;
- DEBUGMSGTL(("snmpSetSerialNo",
- "Re-setting SnmpSetSerialNo to %dn", setserialno));
- }
- int
- setserial_store_config( int a, int b, void *c, void *d )
- {
- char line[SNMP_MAXBUF_SMALL];
- snprintf(line, SNMP_MAXBUF_SMALL, "setserialno %d", setserialno);
- snmpd_store_config( line );
- return 0;
- }
- void
- init_setSerialNo(void)
- {
- oid set_serial_oid[] = { 1, 3, 6, 1, 6, 3, 1, 1, 6, 1 };
- /*
- * If we can't retain the TestAndIncr value across an agent restart,
- * then it should be initialised to a pseudo-random value. So set it
- * as such, before registering the config handlers to override this.
- */
- #ifdef SVR4
- setserialno = lrand48();
- #else
- setserialno = random();
- #endif
- DEBUGMSGTL(("snmpSetSerialNo",
- "Initalizing SnmpSetSerialNo to %dn", setserialno));
- snmpd_register_config_handler("setserialno", setserial_parse_config,
- NULL, "integer");
- snmp_register_callback(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_STORE_DATA,
- setserial_store_config, NULL);
- /*
- * Register 'setserialno' as a watched spinlock object
- */
- netsnmp_register_watched_spinlock(
- netsnmp_create_handler_registration("snmpSetSerialNo", NULL,
- set_serial_oid,
- OID_LENGTH(set_serial_oid),
- HANDLER_CAN_RWRITE),
- &setserialno );
- DEBUGMSGTL(("scalar_int", "Done initalizing example scalar intn"));
- }