10d63ce2bSvenki /*
20d63ce2bSvenki  * CDDL HEADER START
30d63ce2bSvenki  *
40d63ce2bSvenki  * The contents of this file are subject to the terms of the
50d63ce2bSvenki  * Common Development and Distribution License (the "License").
60d63ce2bSvenki  * You may not use this file except in compliance with the License.
70d63ce2bSvenki  *
80d63ce2bSvenki  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
90d63ce2bSvenki  * or http://www.opensolaris.org/os/licensing.
100d63ce2bSvenki  * See the License for the specific language governing permissions
110d63ce2bSvenki  * and limitations under the License.
120d63ce2bSvenki  *
130d63ce2bSvenki  * When distributing Covered Code, include this CDDL HEADER in each
140d63ce2bSvenki  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
150d63ce2bSvenki  * If applicable, add the following below this CDDL HEADER, with the
160d63ce2bSvenki  * fields enclosed by brackets "[]" replaced with your own identifying
170d63ce2bSvenki  * information: Portions Copyright [yyyy] [name of copyright owner]
180d63ce2bSvenki  *
190d63ce2bSvenki  * CDDL HEADER END
200d63ce2bSvenki  */
210d63ce2bSvenki 
220d63ce2bSvenki /*
23*817697f4SKelly Moyer  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
240d63ce2bSvenki  * Use is subject to license terms.
250d63ce2bSvenki  */
260d63ce2bSvenki 
270d63ce2bSvenki #ifndef	_SNMPLIB_H
280d63ce2bSvenki #define	_SNMPLIB_H
290d63ce2bSvenki 
300d63ce2bSvenki #ifdef	__cplusplus
310d63ce2bSvenki extern "C" {
320d63ce2bSvenki #endif
330d63ce2bSvenki 
340d63ce2bSvenki #ifdef USE_SOCKETS
350d63ce2bSvenki #include <sys/types.h>
360d63ce2bSvenki #include <sys/socket.h>
370d63ce2bSvenki #include <netinet/in.h>
380d63ce2bSvenki #include <arpa/inet.h>
390d63ce2bSvenki #endif
400d63ce2bSvenki 
410d63ce2bSvenki /*
420d63ce2bSvenki  * Groups of OIDs are registered with the picl snmp library to provide
430d63ce2bSvenki  * the library with a hint as to the set of OIDs to do GETBULK requests
440d63ce2bSvenki  */
450d63ce2bSvenki typedef struct oidgroup {
460d63ce2bSvenki 	struct oidgroup *next;
470d63ce2bSvenki 	char		*oidstrs;
480d63ce2bSvenki 	int		n_oids;
490d63ce2bSvenki 	int		is_volatile;
500d63ce2bSvenki } oidgroup_t;
510d63ce2bSvenki 
520d63ce2bSvenki /*
530d63ce2bSvenki  * Private (opaque to clients) handle to manage per-client snmp data
540d63ce2bSvenki  */
550d63ce2bSvenki struct picl_snmphdl {
560d63ce2bSvenki 	oidgroup_t	*group;
570d63ce2bSvenki #ifdef USE_SOCKETS
580d63ce2bSvenki 	struct sockaddr_in	agent_addr;
590d63ce2bSvenki #endif
600d63ce2bSvenki 	int		fd;
610d63ce2bSvenki };
620d63ce2bSvenki 
630d63ce2bSvenki #define	MIBCACHE_BLK_SZ		256
640d63ce2bSvenki #define	MIBCACHE_BLK_SHIFT	8
65*817697f4SKelly Moyer #define	REFRESHQ_BLK_SZ		256
66*817697f4SKelly Moyer #define	REFRESHQ_BLK_SHIFT	8
67*817697f4SKelly Moyer 
68*817697f4SKelly Moyer #define	HRTIME_SCALE		10LL	/* internal time in 10s of seconds */
69*817697f4SKelly Moyer #define	MAX_INCACHE_TIME	(300 / HRTIME_SCALE)
700d63ce2bSvenki #define	MAX_INT_LEN		16	/* #chars to print */
710d63ce2bSvenki 
720d63ce2bSvenki #define	DS_SNMP_DRIVER   	"/devices/pseudo/ds_snmp@0:ds_snmp"
730d63ce2bSvenki 
740d63ce2bSvenki #ifdef	__cplusplus
750d63ce2bSvenki }
760d63ce2bSvenki #endif
770d63ce2bSvenki 
780d63ce2bSvenki #endif	/* _SNMPLIB_H */
79