0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki/*
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki * CDDL HEADER START
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki *
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki * The contents of this file are subject to the terms of the
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki * Common Development and Distribution License (the "License").
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki * You may not use this file except in compliance with the License.
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki *
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki * or http://www.opensolaris.org/os/licensing.
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki * See the License for the specific language governing permissions
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki * and limitations under the License.
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki *
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki * When distributing Covered Code, include this CDDL HEADER in each
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki * If applicable, add the following below this CDDL HEADER, with the
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki * fields enclosed by brackets "[]" replaced with your own identifying
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki * information: Portions Copyright [yyyy] [name of copyright owner]
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki *
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki * CDDL HEADER END
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki */
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki/*
817697f4a28f704a2d88ace09406d985aa3a8549Kelly Moyer * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki * Use is subject to license terms.
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki */
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki#ifndef _SNMPLIB_H
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki#define _SNMPLIB_H
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki#ifdef __cplusplus
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenkiextern "C" {
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki#endif
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki#ifdef USE_SOCKETS
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki#include <sys/types.h>
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki#include <sys/socket.h>
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki#include <netinet/in.h>
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki#include <arpa/inet.h>
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki#endif
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki/*
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki * Groups of OIDs are registered with the picl snmp library to provide
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki * the library with a hint as to the set of OIDs to do GETBULK requests
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki */
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenkitypedef struct oidgroup {
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki struct oidgroup *next;
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki char *oidstrs;
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki int n_oids;
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki int is_volatile;
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki} oidgroup_t;
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki/*
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki * Private (opaque to clients) handle to manage per-client snmp data
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki */
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenkistruct picl_snmphdl {
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki oidgroup_t *group;
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki#ifdef USE_SOCKETS
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki struct sockaddr_in agent_addr;
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki#endif
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki int fd;
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki};
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki#define MIBCACHE_BLK_SZ 256
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki#define MIBCACHE_BLK_SHIFT 8
817697f4a28f704a2d88ace09406d985aa3a8549Kelly Moyer#define REFRESHQ_BLK_SZ 256
817697f4a28f704a2d88ace09406d985aa3a8549Kelly Moyer#define REFRESHQ_BLK_SHIFT 8
817697f4a28f704a2d88ace09406d985aa3a8549Kelly Moyer
817697f4a28f704a2d88ace09406d985aa3a8549Kelly Moyer#define HRTIME_SCALE 10LL /* internal time in 10s of seconds */
817697f4a28f704a2d88ace09406d985aa3a8549Kelly Moyer#define MAX_INCACHE_TIME (300 / HRTIME_SCALE)
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki#define MAX_INT_LEN 16 /* #chars to print */
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki#define DS_SNMP_DRIVER "/devices/pseudo/ds_snmp@0:ds_snmp"
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki#ifdef __cplusplus
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki}
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki#endif
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki
0d63ce2b32a9e1cc8ed71d4d92536c44d66a530avenki#endif /* _SNMPLIB_H */