#ifndef SNMP_ALARM_H
#define SNMP_ALARM_H

#ifdef __cplusplus
extern "C" {
#endif

typedef void (SNMPAlarmCallback)(unsigned int clientreg, void *clientarg);

/* alarm flags */
#define SA_REPEAT 0x01  /* keep repeating every X seconds */

struct snmp_alarm {
   unsigned int seconds;
   unsigned int flags;
   unsigned int clientreg;
   time_t lastcall;
   time_t nextcall;
   void *clientarg;
   SNMPAlarmCallback *thecallback;
   struct snmp_alarm *next;
};

/* the ones you should need */
void snmp_alarm_unregister(unsigned int clientreg);
void snmp_alarm_unregister_all(void);
unsigned int snmp_alarm_register(unsigned int when, unsigned int flags,
                                 SNMPAlarmCallback *thecallback,
                                 void *clientarg);

/* the ones you shouldn't */
void init_snmp_alarm(void);
int init_alarm_post_config(int majorid, int minorid, void *serverarg,
                           void *clientarg);
void sa_update_entry(struct snmp_alarm *alrm);
struct snmp_alarm *sa_find_next(void);
void run_alarms(void);
RETSIGTYPE alarm_handler(int a);
void set_an_alarm(void);
int get_next_alarm_delay_time(void);

#ifdef __cplusplus
}
#endif

#endif /* SNMP_ALARM_H */
