]> git.ipfire.org Git - thirdparty/cups.git/blobdiff - cups/snmp.h
Merge CUPS 1.4svn-r7319.
[thirdparty/cups.git] / cups / snmp.h
index b0a9703be69ec5daf71b1650eb0a111fc995bd5b..9f1d8dc1976bca859d70862475dec8f66c3cae56 100644 (file)
@@ -41,7 +41,7 @@
  * Types...
  */
 
-typedef enum cups_asn1_e               /**** ASN1 request/object types ****/
+enum cups_asn1_e                       /**** ASN1 request/object types ****/
 {
   CUPS_ASN1_END_OF_CONTENTS = 0x00,    /* End-of-contents */
   CUPS_ASN1_BOOLEAN = 0x01,            /* BOOLEAN */
@@ -51,13 +51,36 @@ typedef enum cups_asn1_e            /**** ASN1 request/object types ****/
   CUPS_ASN1_NULL_VALUE = 0x05,         /* NULL VALUE */
   CUPS_ASN1_OID = 0x06,                        /* OBJECT IDENTIFIER */
   CUPS_ASN1_SEQUENCE = 0x30,           /* SEQUENCE */
-  CUPS_ASN1_APPLICATION = 0x40,                /* Application-specific bit */
+  CUPS_ASN1_HEX_STRING = 0x40,         /* Binary string aka Hex-STRING */
   CUPS_ASN1_COUNTER = 0x41,            /* 32-bit unsigned aka Counter32 */
   CUPS_ASN1_GAUGE = 0x42,              /* 32-bit unsigned aka Gauge32 */
+  CUPS_ASN1_TIMETICKS = 0x43,          /* 32-bit unsigned aka Timeticks32 */
   CUPS_ASN1_GET_REQUEST = 0xa0,                /* GetRequest-PDU */
   CUPS_ASN1_GET_NEXT_REQUEST = 0xa1,   /* GetNextRequest-PDU */
   CUPS_ASN1_GET_RESPONSE = 0xa2                /* GetResponse-PDU */
-} cups_asn1_t;
+};
+typedef enum cups_asn1_e cups_asn1_t;  /**** ASN1 request/object types ****/
+
+struct cups_snmp_hexstring_s           /**** Hex-STRING value ****/
+{
+  unsigned char        bytes[CUPS_SNMP_MAX_STRING];
+                                       /* Bytes in string */
+  int          num_bytes;              /* Number of bytes */
+};
+
+union cups_snmp_value_u                        /**** Object value ****/
+{
+  int          boolean;                /* Boolean value */
+  int          integer;                /* Integer value */
+  unsigned     counter;                /* Counter value */
+  unsigned     gauge;                  /* Gauge value */
+  unsigned     timeticks;              /* Timeticks  value */
+  int          oid[CUPS_SNMP_MAX_OID]; /* OID value */
+  char         string[CUPS_SNMP_MAX_STRING];
+                                       /* String value */
+  struct cups_snmp_hexstring_s hex_string;
+                                       /* Hex string value */
+};
 
 typedef struct cups_snmp_s             /**** SNMP data packet ****/
 {
@@ -73,17 +96,11 @@ typedef struct cups_snmp_s          /**** SNMP data packet ****/
   int          object_name[CUPS_SNMP_MAX_OID];
                                        /* object-name value */
   cups_asn1_t  object_type;            /* object-value type */
-  union
-  {
-    int                boolean;                /* Boolean value */
-    int                integer;                /* Integer value */
-    unsigned   counter;                /* Counter value */
-    unsigned   gauge;                  /* Gauge value */
-    int                oid[CUPS_SNMP_MAX_OID]; /* OID value */
-    char       string[CUPS_SNMP_MAX_STRING];/* String value */
-  }            object_value;           /* object-value value */
+  union cups_snmp_value_u
+               object_value;           /* object-value value */
 } cups_snmp_t;
 
+typedef void (*cups_snmp_cb_t)(cups_snmp_t *packet, void *data);
 
 /*
  * Prototypes...
@@ -96,15 +113,20 @@ extern "C" {
 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 int             cupsSNMPOpen(void) _CUPS_API_1_4;
+extern int             cupsSNMPOpen(int family) _CUPS_API_1_4;
 extern cups_snmp_t     *cupsSNMPRead(int fd, cups_snmp_t *packet, int msec)
                            _CUPS_API_1_4;
 extern void            cupsSNMPSetDebug(int level) _CUPS_API_1_4;
-extern int             cupsSNMPWrite(int fd, http_addr_t *addr, int version,
+extern int             cupsSNMPWalk(int fd, http_addr_t *address, int version,
+                                    const char *community, const int *prefix,
+                                    int msec, 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,