408 lines
13 KiB
C
408 lines
13 KiB
C
/* smint.h v0.10
|
||
// Copyright (C) 1992-1995, All Rights Reserved, by
|
||
// Digital Equipment Corporation, Maynard, Mass.
|
||
//
|
||
// This software is furnished under a license and may be used and copied
|
||
// only in accordance with the terms of such license and with the
|
||
// inclusion of the above copyright notice. This software or any other
|
||
// copies thereof may not be provided or otherwise made available to any
|
||
// other person. No title to and ownership of the software is hereby
|
||
// transferred.
|
||
//
|
||
// The information in this software is subject to change without notice
|
||
// and should not be construed as a commitment by Digital Equipment
|
||
// Corporation.
|
||
//
|
||
// Digital assumes no responsibility for the use or reliability of its
|
||
// software on equipment which is not supplied by Digital.
|
||
*/
|
||
|
||
/*
|
||
* Facility:
|
||
*
|
||
* SNMP Extension Agent
|
||
*
|
||
* Abstract:
|
||
*
|
||
* This module contains the native data type definitions. This file
|
||
* is taken from the Calaveras Project's system management work done by
|
||
* Wayne Duso. By using these native data types (Structure of Management
|
||
* Information (SMI)) it is intended to align the management APIs on
|
||
* the Windows NT and UNIX platforms as closely as possible.
|
||
*/
|
||
|
||
|
||
#if !defined(_SMINT_H_)
|
||
#define _SMINT_H_
|
||
|
||
#if !defined(lint) && defined(INCLUDE_ALL_RCSID)
|
||
static char smitydef_h_rcsid[] = "$Header: /calsrv/usr/cal10/duso/calaveras/RCS/smint.h,v 1.6 1993/08/13 15:29:49 duso Exp $";
|
||
#endif
|
||
|
||
|
||
|
||
/*
|
||
// FACILITY:
|
||
//
|
||
// Calaveras System Management
|
||
//
|
||
// ABSTRACT:
|
||
//
|
||
// Structure Of Management Information (SMI) support. Specifically, type
|
||
// declarations targeted for Management Agent use.
|
||
//
|
||
// AUTHORS:
|
||
//
|
||
// Wayne W. Duso
|
||
//
|
||
// CREATION DATE:
|
||
//
|
||
// 25-November-1992
|
||
//
|
||
// MODIFICATION HISTORY:
|
||
//
|
||
// $Log: smitydef.h,v $
|
||
* Revision 1.7 1994/03/23 14:02:00 miriam
|
||
* Modifications for Windows NT platform
|
||
*
|
||
* Revision 1.6 1993/08/13 15:29:49 duso
|
||
* Housekeeping.
|
||
*
|
||
* Revision 1.5 1993/03/11 21:26:51 duso
|
||
* Modify interface types to reflect CA X1.1.1 changes.
|
||
*
|
||
* Revision 1.4 1993/03/10 17:36:26 duso
|
||
* Fix free bug resulting from using MOSS to create opaque structures and not
|
||
* using MOSS to free said structures. Manipulation of MOSS opaque structures
|
||
* now done using MOSS supplied routines exclusively. In the spirit of
|
||
* providing opaque types with a 'complete' API, a create() operations has been
|
||
* added to each SMI supported type.
|
||
*
|
||
* Revision 1.3 1993/02/22 18:12:58 duso
|
||
* Support for all SNMP SMI types now in place. Also exclusive copy passed from
|
||
* avlToLocal; not reference copy. This 'inefficiency' was needed to support
|
||
* structure types (length, value). Said types could not be mutated from an
|
||
* avl octet to their true form using references.
|
||
*
|
||
* Revision 1.2 1993/01/28 21:45:24 duso
|
||
* Major clean up and completion to support SNMP centered MOMStub and class
|
||
* Simple test MOC.
|
||
*/
|
||
|
||
|
||
|
||
/*
|
||
// TABLE OF CONTENTS
|
||
//
|
||
// Associated Documents
|
||
//
|
||
// Usage/Design Notes
|
||
//
|
||
// Include Files
|
||
//
|
||
// SMI Supported Types (typedef(s))
|
||
// BIDT_ENUMERATION
|
||
// ConstructionStart
|
||
// ConstructionEnd
|
||
// Counter
|
||
// Gauge
|
||
// Integer
|
||
// IpAddress
|
||
// Null
|
||
// ObjectIdentifier
|
||
// OctetString
|
||
// Opaque
|
||
// TimeTicks
|
||
*/
|
||
|
||
|
||
/*
|
||
// Associated Documents
|
||
//
|
||
// [1] Calaveras Managed Object Module Framework Design Specification
|
||
// [2] smidbty.h: Declares the pseudo abstract base psuedo class DtEntry and
|
||
// its API.
|
||
// [3] smitypes.h: Declares actual instances of DtEntry, one for each typed
|
||
// delcared in this file.
|
||
*/
|
||
|
||
|
||
/*
|
||
// Usage/Design Notes
|
||
//
|
||
// 1. Each type declared in this file has an accompanying API. The APIs
|
||
// are declared in [2,3]. It is strongly recommended that type instances
|
||
// be accessed through their API, not through direct manipulation of
|
||
// their internal format [NB: Additional operations must be added to the
|
||
// API set to make the type's concrete/indiginous-like. Specifically,
|
||
// there currently is no 'compare' interface; this must/will be corrected].
|
||
//
|
||
// 2. For each SMI type supported - those being any type defined by either
|
||
// RFC 1155 or by additions to said RFC accepted by the IETF - there is a
|
||
// typedef defining its 'in-memory' or 'local' representation. This
|
||
// information is made available to the SMI type database, the managed
|
||
// object module stub, and managed object classes (management agents)
|
||
// through this module.
|
||
*/
|
||
|
||
|
||
/*
|
||
// Include Files
|
||
*/
|
||
|
||
#include <snmp.h>
|
||
|
||
|
||
|
||
|
||
/*
|
||
// SMI Supported Types (typedef(s))
|
||
*/
|
||
typedef enum
|
||
{
|
||
nsm_true = 1 ,
|
||
nsm_false = 2
|
||
} NSM_Boolean ;
|
||
|
||
|
||
typedef int BIDT_ENUMERATION;
|
||
/* Signed 32 bit integer is the base data construct used by the MIR to
|
||
// represent integer enumerations.
|
||
*/
|
||
|
||
|
||
typedef unsigned long int Counter;
|
||
/* Unsigned 32 bit integer is the base data construct.
|
||
*/
|
||
|
||
|
||
typedef unsigned long int Gauge;
|
||
/* Unsigned 32 bit integer is the base data construct.
|
||
*/
|
||
|
||
|
||
typedef int Integer;
|
||
/* Signed 32 bit integer is the base data construct.
|
||
*/
|
||
|
||
|
||
typedef unsigned long int IpAddress;
|
||
/* Unsigned 32 bit integer is the base data construct. Interpret as
|
||
// a 4 octet hex value.
|
||
*/
|
||
|
||
|
||
typedef char Null;
|
||
/* The semantics of Null are that it should always be a 0 constant.
|
||
*/
|
||
|
||
|
||
typedef AsnObjectIdentifier ObjectIdentifier;
|
||
/*
|
||
// Aggregate type: Note that this is typedef to the Windows NT's version
|
||
// of an object identifier to enable use with the Windows NT SNMP routines.
|
||
// The Common Agent's MOSS library is not available for use on Windows NT.
|
||
//
|
||
// The fields for the object identifier are:
|
||
// UINT idLength ; // number of integers in the oid's int array
|
||
// UINT *ids ; // address of the oid's int array
|
||
*/
|
||
|
||
|
||
typedef struct
|
||
/*
|
||
// This one is used to minimize differences across platforms and because
|
||
// Windows NT has no support routines for manipulating an octet string.
|
||
// Should that change consideration should be given to using the native
|
||
// for as the Common Agent is not available on Windows NT.
|
||
// Aggregate type: Note that this is structured exactly as the CA MOSS
|
||
// definition octet_string found in moss.h. As such, it should either be
|
||
// removed in favor of that definition or its synchronization must be
|
||
// ensured.
|
||
*/
|
||
{
|
||
int length; /* length of string */
|
||
unsigned long int dataType; /* ASN.1 data type tag (currently optional)*/
|
||
char* string; /* pointer to counted string */
|
||
} OctetString;
|
||
|
||
|
||
typedef struct
|
||
/*
|
||
// Aggregate type
|
||
*/
|
||
{
|
||
int length; /* length of string */
|
||
char* string; /* pointer to counted entity */
|
||
} Opaque;
|
||
|
||
|
||
typedef unsigned long int TimeTicks;
|
||
/* Unsigned 32 bit integer is the base data construct.
|
||
*/
|
||
|
||
typedef OctetString Simple_DisplayString ;
|
||
/* Included here as oppose to in the simpleema.hxx file on Calaveras to
|
||
// reduce the number of header files.
|
||
*/
|
||
|
||
typedef int Access_Credential ;
|
||
/* This is a dummy place holder for use in the future
|
||
*/
|
||
|
||
typedef struct
|
||
{
|
||
unsigned int count ; /* number of identifying variables for an instance */
|
||
char **array ; /* array of pointers to variables' data */
|
||
} InstanceName ;
|
||
/* This is a flexible structure for passing the ordered native datatypes
|
||
// that compose the instance name. For example,
|
||
// tcpConnEntry from RFC 1213 p. 49 (MIB-II) is identified by
|
||
//
|
||
// INDEX {
|
||
// tcpConnLocalAddress,
|
||
// tcpConnLocalPort,
|
||
// tcpConnRemAddress,
|
||
// tcpConnRemPort
|
||
// }
|
||
//
|
||
// The instance name would be an ordered set :
|
||
//
|
||
// count = 4
|
||
// array[ 0 ] = address of an IP Address (the local ip address)
|
||
// array[ 1 ] = address of an Integer (the local port)
|
||
// array[ 2 ] = address of an IP Address (the remote ip address)
|
||
// array[ 3 ] = address of an Integer (the remote port)
|
||
*/
|
||
|
||
#define MAX_OCTET_STRING 256
|
||
|
||
UINT
|
||
SMIGetInteger( IN OUT RFC1157VarBind *VarBind , // Variable Binding for get
|
||
IN unsigned long int cindex ,
|
||
IN unsigned long int vindex ,
|
||
IN InstanceName *instance );
|
||
UINT
|
||
SMIGetNSMBoolean( IN OUT RFC1157VarBind *VarBind , // Variable Binding for get
|
||
IN unsigned long int cindex ,
|
||
IN unsigned long int vindex ,
|
||
IN InstanceName *instance );
|
||
UINT
|
||
SMIGetBIDTEnum( IN OUT RFC1157VarBind *VarBind , // Variable Binding for get
|
||
IN unsigned long int cindex ,
|
||
IN unsigned long int vindex ,
|
||
IN InstanceName *instance );
|
||
UINT
|
||
SMIGetOctetString( IN OUT RFC1157VarBind *VarBind , // Variable Binding for get
|
||
IN unsigned long int cindex ,
|
||
IN unsigned long int vindex ,
|
||
IN InstanceName *instance );
|
||
UINT
|
||
SMIGetObjectId( IN OUT RFC1157VarBind *VarBind , // Variable Binding for get
|
||
IN unsigned long int cindex ,
|
||
IN unsigned long int vindex ,
|
||
IN InstanceName *instance );
|
||
UINT
|
||
SMIGetCounter( IN OUT RFC1157VarBind *VarBind , // Variable Binding for get
|
||
IN unsigned long int cindex ,
|
||
IN unsigned long int vindex ,
|
||
IN InstanceName *instance );
|
||
UINT
|
||
SMIGetGauge( IN OUT RFC1157VarBind *VarBind , // Variable Binding for get
|
||
IN unsigned long int cindex ,
|
||
IN unsigned long int vindex ,
|
||
IN InstanceName *instance );
|
||
UINT
|
||
SMIGetTimeTicks( IN OUT RFC1157VarBind *VarBind , // Variable Binding for get
|
||
IN unsigned long int cindex ,
|
||
IN unsigned long int vindex ,
|
||
IN InstanceName *instance );
|
||
UINT
|
||
SMIGetIpAddress( IN OUT RFC1157VarBind *VarBind , // Variable Binding for get
|
||
IN unsigned long int cindex ,
|
||
IN unsigned long int vindex ,
|
||
IN InstanceName *instance );
|
||
UINT
|
||
SMIGetDispString( IN OUT RFC1157VarBind *VarBind , // Variable Binding for get
|
||
IN unsigned long int cindex ,
|
||
IN unsigned long int vindex ,
|
||
IN InstanceName *instance );
|
||
UINT
|
||
SMISetInteger( IN OUT RFC1157VarBind *VarBind , // Variable Binding for set
|
||
IN unsigned long int cindex ,
|
||
IN unsigned long int vindex ,
|
||
IN InstanceName *instance );
|
||
UINT
|
||
SMISetNSMBoolean( IN OUT RFC1157VarBind *VarBind , // Variable Binding for set
|
||
IN unsigned long int cindex ,
|
||
IN unsigned long int vindex ,
|
||
IN InstanceName *instance );
|
||
UINT
|
||
SMISetBIDTEnum( IN OUT RFC1157VarBind *VarBind , // Variable Binding for set
|
||
IN unsigned long int cindex ,
|
||
IN unsigned long int vindex ,
|
||
IN InstanceName *instance );
|
||
UINT
|
||
SMISetOctetString( IN OUT RFC1157VarBind *VarBind , // Variable Binding for set
|
||
IN unsigned long int cindex ,
|
||
IN unsigned long int vindex ,
|
||
IN InstanceName *instance );
|
||
UINT
|
||
SMISetObjectId( IN OUT RFC1157VarBind *VarBind , // Variable Binding for set
|
||
IN unsigned long int cindex ,
|
||
IN unsigned long int vindex ,
|
||
IN InstanceName *instance );
|
||
UINT
|
||
SMISetCounter( IN OUT RFC1157VarBind *VarBind , // Variable Binding for set
|
||
IN unsigned long int cindex ,
|
||
IN unsigned long int vindex ,
|
||
IN InstanceName *instance );
|
||
UINT
|
||
SMISetGauge( IN OUT RFC1157VarBind *VarBind , // Variable Binding for set
|
||
IN unsigned long int cindex ,
|
||
IN unsigned long int vindex ,
|
||
IN InstanceName *instance );
|
||
UINT
|
||
SMISetTimeTicks( IN OUT RFC1157VarBind *VarBind , // Variable Binding for set
|
||
IN unsigned long int cindex ,
|
||
IN unsigned long int vindex ,
|
||
IN InstanceName *instance );
|
||
UINT
|
||
SMISetIpAddress( IN OUT RFC1157VarBind *VarBind , // Variable Binding for set
|
||
IN unsigned long int cindex ,
|
||
IN unsigned long int vindex ,
|
||
IN InstanceName *instance );
|
||
UINT
|
||
SMISetDispString( IN OUT RFC1157VarBind *VarBind , // Variable Binding for set
|
||
IN unsigned long int cindex ,
|
||
IN unsigned long int vindex ,
|
||
IN InstanceName *instance );
|
||
UINT
|
||
SMIBuildInteger( IN OUT RFC1157VarBind *VarBind ,
|
||
IN char *invalue );
|
||
UINT
|
||
SMIBuildOctetString( IN OUT RFC1157VarBind *VarBind ,
|
||
IN char *invalue );
|
||
UINT
|
||
SMIBuildObjectId( IN OUT RFC1157VarBind *VarBind ,
|
||
IN char *invalue );
|
||
UINT
|
||
SMIBuildCounter( IN OUT RFC1157VarBind *VarBind ,
|
||
IN char *invalue );
|
||
UINT
|
||
SMIBuildGauge( IN OUT RFC1157VarBind *VarBind ,
|
||
IN char *invalue );
|
||
UINT
|
||
SMIBuildTimeTicks( IN OUT RFC1157VarBind *VarBind ,
|
||
IN char *invalue );
|
||
UINT
|
||
SMIBuildIpAddress( IN OUT RFC1157VarBind *VarBind ,
|
||
IN char *invalue );
|
||
UINT
|
||
SMIBuildDispString( IN OUT RFC1157VarBind *VarBind ,
|
||
IN char *invalue );
|
||
void
|
||
SMIFree( IN AsnAny *invalue );
|
||
|
||
#endif /*_SMINT_H_*/
|