xref: /aosp_15_r20/external/libcups/cups/snmp-private.h (revision 5e7646d21f1134fb0638875d812ef646c12ab91e)
1*5e7646d2SAndroid Build Coastguard Worker /*
2*5e7646d2SAndroid Build Coastguard Worker  * Private SNMP definitions for CUPS.
3*5e7646d2SAndroid Build Coastguard Worker  *
4*5e7646d2SAndroid Build Coastguard Worker  * Copyright © 2007-2014 by Apple Inc.
5*5e7646d2SAndroid Build Coastguard Worker  * Copyright © 2006-2007 by Easy Software Products, all rights reserved.
6*5e7646d2SAndroid Build Coastguard Worker  *
7*5e7646d2SAndroid Build Coastguard Worker  * Licensed under Apache License v2.0.  See the file "LICENSE" for more
8*5e7646d2SAndroid Build Coastguard Worker  * information.
9*5e7646d2SAndroid Build Coastguard Worker  */
10*5e7646d2SAndroid Build Coastguard Worker 
11*5e7646d2SAndroid Build Coastguard Worker #ifndef _CUPS_SNMP_PRIVATE_H_
12*5e7646d2SAndroid Build Coastguard Worker #  define _CUPS_SNMP_PRIVATE_H_
13*5e7646d2SAndroid Build Coastguard Worker 
14*5e7646d2SAndroid Build Coastguard Worker 
15*5e7646d2SAndroid Build Coastguard Worker /*
16*5e7646d2SAndroid Build Coastguard Worker  * Include necessary headers.
17*5e7646d2SAndroid Build Coastguard Worker  */
18*5e7646d2SAndroid Build Coastguard Worker 
19*5e7646d2SAndroid Build Coastguard Worker #include <cups/http.h>
20*5e7646d2SAndroid Build Coastguard Worker 
21*5e7646d2SAndroid Build Coastguard Worker 
22*5e7646d2SAndroid Build Coastguard Worker /*
23*5e7646d2SAndroid Build Coastguard Worker  * Constants...
24*5e7646d2SAndroid Build Coastguard Worker  */
25*5e7646d2SAndroid Build Coastguard Worker 
26*5e7646d2SAndroid Build Coastguard Worker #define CUPS_SNMP_PORT		161	/* SNMP well-known port */
27*5e7646d2SAndroid Build Coastguard Worker #define CUPS_SNMP_MAX_COMMUNITY	512	/* Maximum size of community name */
28*5e7646d2SAndroid Build Coastguard Worker #define CUPS_SNMP_MAX_OID	128	/* Maximum number of OID numbers */
29*5e7646d2SAndroid Build Coastguard Worker #define CUPS_SNMP_MAX_PACKET	1472	/* Maximum size of SNMP packet */
30*5e7646d2SAndroid Build Coastguard Worker #define CUPS_SNMP_MAX_STRING	1024	/* Maximum size of string */
31*5e7646d2SAndroid Build Coastguard Worker #define CUPS_SNMP_VERSION_1	0	/* SNMPv1 */
32*5e7646d2SAndroid Build Coastguard Worker 
33*5e7646d2SAndroid Build Coastguard Worker 
34*5e7646d2SAndroid Build Coastguard Worker /*
35*5e7646d2SAndroid Build Coastguard Worker  * Types...
36*5e7646d2SAndroid Build Coastguard Worker  */
37*5e7646d2SAndroid Build Coastguard Worker 
38*5e7646d2SAndroid Build Coastguard Worker enum cups_asn1_e			/**** ASN1 request/object types ****/
39*5e7646d2SAndroid Build Coastguard Worker {
40*5e7646d2SAndroid Build Coastguard Worker   CUPS_ASN1_END_OF_CONTENTS = 0x00,	/* End-of-contents */
41*5e7646d2SAndroid Build Coastguard Worker   CUPS_ASN1_BOOLEAN = 0x01,		/* BOOLEAN */
42*5e7646d2SAndroid Build Coastguard Worker   CUPS_ASN1_INTEGER = 0x02,		/* INTEGER or ENUMERATION */
43*5e7646d2SAndroid Build Coastguard Worker   CUPS_ASN1_BIT_STRING = 0x03,		/* BIT STRING */
44*5e7646d2SAndroid Build Coastguard Worker   CUPS_ASN1_OCTET_STRING = 0x04,	/* OCTET STRING */
45*5e7646d2SAndroid Build Coastguard Worker   CUPS_ASN1_NULL_VALUE = 0x05,		/* NULL VALUE */
46*5e7646d2SAndroid Build Coastguard Worker   CUPS_ASN1_OID = 0x06,			/* OBJECT IDENTIFIER */
47*5e7646d2SAndroid Build Coastguard Worker   CUPS_ASN1_SEQUENCE = 0x30,		/* SEQUENCE */
48*5e7646d2SAndroid Build Coastguard Worker   CUPS_ASN1_HEX_STRING = 0x40,		/* Binary string aka Hex-STRING */
49*5e7646d2SAndroid Build Coastguard Worker   CUPS_ASN1_COUNTER = 0x41,		/* 32-bit unsigned aka Counter32 */
50*5e7646d2SAndroid Build Coastguard Worker   CUPS_ASN1_GAUGE = 0x42,		/* 32-bit unsigned aka Gauge32 */
51*5e7646d2SAndroid Build Coastguard Worker   CUPS_ASN1_TIMETICKS = 0x43,		/* 32-bit unsigned aka Timeticks32 */
52*5e7646d2SAndroid Build Coastguard Worker   CUPS_ASN1_GET_REQUEST = 0xa0,		/* GetRequest-PDU */
53*5e7646d2SAndroid Build Coastguard Worker   CUPS_ASN1_GET_NEXT_REQUEST = 0xa1,	/* GetNextRequest-PDU */
54*5e7646d2SAndroid Build Coastguard Worker   CUPS_ASN1_GET_RESPONSE = 0xa2		/* GetResponse-PDU */
55*5e7646d2SAndroid Build Coastguard Worker };
56*5e7646d2SAndroid Build Coastguard Worker typedef enum cups_asn1_e cups_asn1_t;	/**** ASN1 request/object types ****/
57*5e7646d2SAndroid Build Coastguard Worker 
58*5e7646d2SAndroid Build Coastguard Worker typedef struct cups_snmp_string_s	/**** String value ****/
59*5e7646d2SAndroid Build Coastguard Worker {
60*5e7646d2SAndroid Build Coastguard Worker   unsigned char	bytes[CUPS_SNMP_MAX_STRING];
61*5e7646d2SAndroid Build Coastguard Worker 					/* Bytes in string */
62*5e7646d2SAndroid Build Coastguard Worker   unsigned	num_bytes;		/* Number of bytes */
63*5e7646d2SAndroid Build Coastguard Worker } cups_snmp_string_t;
64*5e7646d2SAndroid Build Coastguard Worker 
65*5e7646d2SAndroid Build Coastguard Worker union cups_snmp_value_u			/**** Object value ****/
66*5e7646d2SAndroid Build Coastguard Worker {
67*5e7646d2SAndroid Build Coastguard Worker   int		boolean;		/* Boolean value */
68*5e7646d2SAndroid Build Coastguard Worker   int		integer;		/* Integer value */
69*5e7646d2SAndroid Build Coastguard Worker   int		counter;		/* Counter value */
70*5e7646d2SAndroid Build Coastguard Worker   unsigned	gauge;			/* Gauge value */
71*5e7646d2SAndroid Build Coastguard Worker   unsigned	timeticks;		/* Timeticks  value */
72*5e7646d2SAndroid Build Coastguard Worker   int		oid[CUPS_SNMP_MAX_OID];	/* OID value */
73*5e7646d2SAndroid Build Coastguard Worker   cups_snmp_string_t string;		/* String value */
74*5e7646d2SAndroid Build Coastguard Worker };
75*5e7646d2SAndroid Build Coastguard Worker 
76*5e7646d2SAndroid Build Coastguard Worker typedef struct cups_snmp_s		/**** SNMP data packet ****/
77*5e7646d2SAndroid Build Coastguard Worker {
78*5e7646d2SAndroid Build Coastguard Worker   const char	*error;			/* Encode/decode error */
79*5e7646d2SAndroid Build Coastguard Worker   http_addr_t	address;		/* Source address */
80*5e7646d2SAndroid Build Coastguard Worker   int		version;		/* Version number */
81*5e7646d2SAndroid Build Coastguard Worker   char		community[CUPS_SNMP_MAX_COMMUNITY];
82*5e7646d2SAndroid Build Coastguard Worker 					/* Community name */
83*5e7646d2SAndroid Build Coastguard Worker   cups_asn1_t	request_type;		/* Request type */
84*5e7646d2SAndroid Build Coastguard Worker   unsigned	request_id;		/* request-id value */
85*5e7646d2SAndroid Build Coastguard Worker   int		error_status;		/* error-status value */
86*5e7646d2SAndroid Build Coastguard Worker   int		error_index;		/* error-index value */
87*5e7646d2SAndroid Build Coastguard Worker   int		object_name[CUPS_SNMP_MAX_OID];
88*5e7646d2SAndroid Build Coastguard Worker 					/* object-name value */
89*5e7646d2SAndroid Build Coastguard Worker   cups_asn1_t	object_type;		/* object-value type */
90*5e7646d2SAndroid Build Coastguard Worker   union cups_snmp_value_u
91*5e7646d2SAndroid Build Coastguard Worker 		object_value;		/* object-value value */
92*5e7646d2SAndroid Build Coastguard Worker } cups_snmp_t;
93*5e7646d2SAndroid Build Coastguard Worker 
94*5e7646d2SAndroid Build Coastguard Worker typedef void (*cups_snmp_cb_t)(cups_snmp_t *packet, void *data);
95*5e7646d2SAndroid Build Coastguard Worker 
96*5e7646d2SAndroid Build Coastguard Worker /*
97*5e7646d2SAndroid Build Coastguard Worker  * Prototypes...
98*5e7646d2SAndroid Build Coastguard Worker  */
99*5e7646d2SAndroid Build Coastguard Worker 
100*5e7646d2SAndroid Build Coastguard Worker #  ifdef __cplusplus
101*5e7646d2SAndroid Build Coastguard Worker extern "C" {
102*5e7646d2SAndroid Build Coastguard Worker #  endif /* __cplusplus */
103*5e7646d2SAndroid Build Coastguard Worker 
104*5e7646d2SAndroid Build Coastguard Worker extern void		_cupsSNMPClose(int fd) _CUPS_PRIVATE;
105*5e7646d2SAndroid Build Coastguard Worker extern int		*_cupsSNMPCopyOID(int *dst, const int *src, int dstsize)
106*5e7646d2SAndroid Build Coastguard Worker 			    _CUPS_PRIVATE;
107*5e7646d2SAndroid Build Coastguard Worker extern const char	*_cupsSNMPDefaultCommunity(void) _CUPS_PRIVATE;
108*5e7646d2SAndroid Build Coastguard Worker extern int		_cupsSNMPIsOID(cups_snmp_t *packet, const int *oid)
109*5e7646d2SAndroid Build Coastguard Worker 			    _CUPS_PRIVATE;
110*5e7646d2SAndroid Build Coastguard Worker extern int		_cupsSNMPIsOIDPrefixed(cups_snmp_t *packet,
111*5e7646d2SAndroid Build Coastguard Worker 			                      const int *prefix) _CUPS_PRIVATE;
112*5e7646d2SAndroid Build Coastguard Worker extern char		*_cupsSNMPOIDToString(const int *src, char *dst,
113*5e7646d2SAndroid Build Coastguard Worker 			                      size_t dstsize) _CUPS_PRIVATE;
114*5e7646d2SAndroid Build Coastguard Worker extern int		_cupsSNMPOpen(int family) _CUPS_PRIVATE;
115*5e7646d2SAndroid Build Coastguard Worker extern cups_snmp_t	*_cupsSNMPRead(int fd, cups_snmp_t *packet,
116*5e7646d2SAndroid Build Coastguard Worker 			               double timeout) _CUPS_PRIVATE;
117*5e7646d2SAndroid Build Coastguard Worker extern void		_cupsSNMPSetDebug(int level) _CUPS_PRIVATE;
118*5e7646d2SAndroid Build Coastguard Worker extern int		*_cupsSNMPStringToOID(const char *src,
119*5e7646d2SAndroid Build Coastguard Worker 			                      int *dst, int dstsize)
120*5e7646d2SAndroid Build Coastguard Worker 					      _CUPS_PRIVATE;
121*5e7646d2SAndroid Build Coastguard Worker extern int		_cupsSNMPWalk(int fd, http_addr_t *address, int version,
122*5e7646d2SAndroid Build Coastguard Worker 			              const char *community, const int *prefix,
123*5e7646d2SAndroid Build Coastguard Worker 				      double timeout, cups_snmp_cb_t cb,
124*5e7646d2SAndroid Build Coastguard Worker 				      void *data) _CUPS_PRIVATE;
125*5e7646d2SAndroid Build Coastguard Worker extern int		_cupsSNMPWrite(int fd, http_addr_t *address, int version,
126*5e7646d2SAndroid Build Coastguard Worker 				       const char *community,
127*5e7646d2SAndroid Build Coastguard Worker 				       cups_asn1_t request_type,
128*5e7646d2SAndroid Build Coastguard Worker 				       const unsigned request_id,
129*5e7646d2SAndroid Build Coastguard Worker 				       const int *oid) _CUPS_PRIVATE;
130*5e7646d2SAndroid Build Coastguard Worker 
131*5e7646d2SAndroid Build Coastguard Worker #  ifdef __cplusplus
132*5e7646d2SAndroid Build Coastguard Worker }
133*5e7646d2SAndroid Build Coastguard Worker #  endif /* __cplusplus */
134*5e7646d2SAndroid Build Coastguard Worker #endif /* !_CUPS_SNMP_PRIVATE_H_ */
135