#ifndef _CUPS_SNMP_H_
# define _CUPS_SNMP_H_
#include "http.h"
#define CUPS_SNMP_PORT 161
#define CUPS_SNMP_MAX_OID 128
#define CUPS_SNMP_MAX_PACKET 1472
#define CUPS_SNMP_MAX_STRING 512
#define CUPS_SNMP_VERSION_1 0
enum cups_asn1_e
{
CUPS_ASN1_END_OF_CONTENTS = 0x00,
CUPS_ASN1_BOOLEAN = 0x01,
CUPS_ASN1_INTEGER = 0x02,
CUPS_ASN1_BIT_STRING = 0x03,
CUPS_ASN1_OCTET_STRING = 0x04,
CUPS_ASN1_NULL_VALUE = 0x05,
CUPS_ASN1_OID = 0x06,
CUPS_ASN1_SEQUENCE = 0x30,
CUPS_ASN1_HEX_STRING = 0x40,
CUPS_ASN1_COUNTER = 0x41,
CUPS_ASN1_GAUGE = 0x42,
CUPS_ASN1_TIMETICKS = 0x43,
CUPS_ASN1_GET_REQUEST = 0xa0,
CUPS_ASN1_GET_NEXT_REQUEST = 0xa1,
CUPS_ASN1_GET_RESPONSE = 0xa2
};
typedef enum cups_asn1_e cups_asn1_t;
typedef struct cups_snmp_string_s
{
unsigned char bytes[CUPS_SNMP_MAX_STRING];
int num_bytes;
} cups_snmp_string_t;
union cups_snmp_value_u
{
int boolean;
int integer;
unsigned counter;
unsigned gauge;
unsigned timeticks;
int oid[CUPS_SNMP_MAX_OID];
cups_snmp_string_t string;
};
typedef struct cups_snmp_s
{
const char *error;
http_addr_t address;
int version;
char community[CUPS_SNMP_MAX_STRING];
cups_asn1_t request_type;
int request_id;
int error_status;
int error_index;
int object_name[CUPS_SNMP_MAX_OID];
cups_asn1_t object_type;
union cups_snmp_value_u
object_value;
} cups_snmp_t;
typedef void (*cups_snmp_cb_t)(cups_snmp_t *packet, void *data);
# ifdef __cplusplus
extern "C" {
# endif
extern void _cupsSNMPClose(int fd) _CUPS_API_1_4;
extern int *_cupsSNMPCopyOID(int *dst, const int *src, int dstsize)
_CUPS_API_1_4;
extern const char *_cupsSNMPDefaultCommunity(void) _CUPS_API_1_4;
extern int _cupsSNMPIsOID(cups_snmp_t *packet, const int *oid)
_CUPS_API_1_4;
extern int _cupsSNMPIsOIDPrefixed(cups_snmp_t *packet,
const int *prefix) _CUPS_API_1_4;
extern char *_cupsSNMPOIDToString(const int *src, char *dst,
size_t dstsize) _CUPS_API_1_4;
extern int _cupsSNMPOpen(int family) _CUPS_API_1_4;
extern cups_snmp_t *_cupsSNMPRead(int fd, cups_snmp_t *packet,
double timeout) _CUPS_API_1_4;
extern void _cupsSNMPSetDebug(int level) _CUPS_API_1_4;
extern int *_cupsSNMPStringToOID(const char *src,
int *dst, int dstsize)
_CUPS_API_1_4;
extern int _cupsSNMPWalk(int fd, http_addr_t *address, int version,
const char *community, const int *prefix,
double timeout, cups_snmp_cb_t cb,
void *data) _CUPS_API_1_4;
extern int _cupsSNMPWrite(int fd, http_addr_t *address, int version,
const char *community,
cups_asn1_t request_type,
const unsigned request_id,
const int *oid) _CUPS_API_1_4;
# ifdef __cplusplus
}
# endif
#endif