#include "lwip/apps/snmp_opts.h"
#include "lwip/apps/snmp_opts.h"
#include "lwip/err.h"
#include "lwip/err.h"
#include "lwip/apps/snmp_core.h"
#include "lwip/apps/snmp_core.h"
#define LWIP_HDR_APPS_SNMP_H
#define SNMP_GENTRAP_COLDSTART 0
/** Generic trap: cold start */
#define SNMP_GENTRAP_WARMSTART 1
/** Generic trap: warm start */
#define SNMP_GENTRAP_LINKDOWN 2
/** Generic trap: link down */
#define SNMP_GENTRAP_LINKUP 3
/** Generic trap: link up */
#define SNMP_GENTRAP_AUTH_FAILURE 4
/** Generic trap: authentication failure */
#define SNMP_GENTRAP_EGP_NEIGHBOR_LOSS 5
/** Generic trap: EGP neighbor lost */
#define SNMP_GENTRAP_ENTERPRISE_SPECIFIC 6
/** Generic trap: enterprise specific */
#define SNMP_AUTH_TRAPS_DISABLED 0
#define SNMP_AUTH_TRAPS_ENABLED 1
void snmp_init(void);
/** * @ingroup snmp_core * Agent setup, start listening to port 161. */
void snmp_set_mibs(const struct snmp_mib **mibs, u8_t num_mibs);
void snmp_set_device_enterprise_oid(const struct snmp_obj_id* device_enterprise_oid);
void snmp_trap_dst_enable(u8_t dst_idx, u8_t enable);
void snmp_trap_dst_ip_set(u8_t dst_idx, const ip_addr_t *dst);
err_t snmp_send_trap_generic(s32_t generic_trap);
err_t snmp_send_trap_specific(s32_t specific_trap, struct snmp_varbind *varbinds);
err_t snmp_send_trap(const struct snmp_obj_id* oid, s32_t generic_trap, s32_t specific_trap, struct snmp_varbind *varbinds);
void snmp_set_auth_traps_enabled(u8_t enable);
u8_t snmp_get_auth_traps_enabled(void);
u8_t snmp_v1_enabled(void);
u8_t snmp_v2c_enabled(void);
u8_t snmp_v3_enabled(void);
void snmp_v1_enable(u8_t enable);
void snmp_v2c_enable(u8_t enable);
void snmp_v3_enable(u8_t enable);
void snmp_set_community(const char * const community);
void snmp_set_community_write(const char * const community);
void snmp_set_community_trap(const char * const community);
void snmp_coldstart_trap(void);
void snmp_authfail_trap(void);
void snmp_set_write_callback(snmp_write_callback_fct write_callback, void* callback_arg);
const struct snmp_obj_id* snmp_get_device_enterprise_oid(void);
const char * snmp_get_community(void);
const char * snmp_get_community_write(void);
const char * snmp_get_community_trap(void);
typedef void (*snmp_write_callback_fct)(const u32_t* oid, u8_t oid_len, void* callback_arg);