409 lines
13 KiB
C
409 lines
13 KiB
C
/* $Header: /usr/cvsroot/target/h/wrn/wm/snmp/engine/asn1conf.h,v 1.3 2003/01/15 13:58:56 josh Exp $ */
|
|
|
|
/*
|
|
* Copyright (C) 1999-2005 Wind River Systems, Inc.
|
|
* All rights reserved. Provided under license only.
|
|
* Distribution or other use of this software is only
|
|
* permitted pursuant to the terms of a license agreement
|
|
* from Wind River Systems (and is otherwise prohibited).
|
|
* Refer to that license agreement for terms of use.
|
|
*/
|
|
|
|
|
|
/****************************************************************************
|
|
* Copyright 1993-1997 Epilogue Technology Corporation.
|
|
* Copyright 1998 Integrated Systems, Inc.
|
|
* All rights reserved.
|
|
****************************************************************************/
|
|
|
|
/*
|
|
* $Log: asn1conf.h,v $
|
|
* Revision 1.3 2003/01/15 13:58:56 josh
|
|
* directory structure shifting
|
|
*
|
|
* Revision 1.2 2001/11/06 21:50:40 josh
|
|
* second (and hopefully final) pass of new path hacking
|
|
*
|
|
* Revision 1.1.1.1 2001/11/05 17:47:22 tneale
|
|
* Tornado shuffle
|
|
*
|
|
* Revision 9.9.4.3 2001/09/21 19:14:28 josh
|
|
* an extra check: can't install coexistence if neither SNMPv1
|
|
* nor SNMPv2 are installed
|
|
*
|
|
* Revision 9.9.4.2 2001/08/24 14:32:10 josh
|
|
* a variety of option checks to make sure we don't have conflicting
|
|
* options installed
|
|
*
|
|
* Revision 9.9.4.1 2001/06/28 18:22:56 josh
|
|
* Seeding the Cormorant branch with the code from the old
|
|
* cormorant branch
|
|
*
|
|
* Revision 9.9 2001/04/11 20:58:32 josh
|
|
* we are overwriting the trunk's copy of this file with
|
|
* the file from the kingfisher branch
|
|
*
|
|
* Revision 9.8 2001/01/19 22:22:02 paul
|
|
* Update copyright.
|
|
*
|
|
* Revision 9.7 2000/07/10 15:55:13 mrf
|
|
* Add configuration for Cygnus NT environment with associated changes.
|
|
*
|
|
* Revision 9.6 2000/06/09 14:54:12 josh
|
|
* modifications due to new installation options, new proxy code
|
|
* moved some definitions from sendntfy.h into v3_trgt.h so they'd
|
|
* be built with the target code
|
|
*
|
|
* Revision 9.5.4.1 2001/04/11 20:48:29 josh
|
|
* moving cormorant-specific changes off to the cormorant
|
|
* branch
|
|
*
|
|
* Revision 9.5.2.2 2001/03/12 22:07:50 tneale
|
|
* Updated copyright
|
|
*
|
|
* Revision 9.5.2.1 2000/09/21 21:14:52 josh
|
|
* bringing branch include files in line with root
|
|
*
|
|
* Revision 9.5 2000/03/17 19:48:28 meister
|
|
* Update copyright notice
|
|
*
|
|
* Revision 9.4 2000/03/09 20:58:32 tneale
|
|
* All structure definitions are now bracketted with a test that
|
|
* potentially sets an alignment pragma. This is to maintain compatibility
|
|
* with the code base that had been distributed by Wind River.
|
|
*
|
|
* Revision 9.3 2000/03/09 16:54:09 tneale
|
|
* Added #ifdef for C++ to declare extern C if needed
|
|
*
|
|
* Revision 9.2 1999/06/01 15:46:14 josh
|
|
* Moving some installation option checking.
|
|
*
|
|
* Revision 9.1 1999/04/09 20:36:59 josh
|
|
* Obsoleting ENVOY_SNMP_VERSON_USEC and ENVOY_40_VB_FREE_COMPAT
|
|
*
|
|
* Revision 9.0 1998/10/16 22:10:04 sar
|
|
* Update version stamp to match release
|
|
*
|
|
* Revision 8.8 1998/08/04 02:02:17 sar
|
|
* Added some macros for use with longer term storage, if the user
|
|
* hasn't defined them they default to the standard ones.
|
|
*
|
|
* Revision 8.7 1998/06/23 20:28:23 sar
|
|
* Added requirement for view2275 if v3 is installed
|
|
*
|
|
* Revision 8.6 1998/06/09 21:34:56 sar
|
|
* Added MEMCMP_NULLOK
|
|
*
|
|
* Revision 8.5 1998/06/08 19:42:10 sar
|
|
* Create a define to tell us if we need the stats group in general
|
|
*
|
|
* Revision 8.4 1998/05/29 03:53:54 sar
|
|
* Add and use defines for v2 types and v2 protocol pieces. This allows
|
|
* us to include the types and pieces for other versions, such as v3,
|
|
* without having to touch all of the seperate files that use the
|
|
* types or pieces.
|
|
*
|
|
* Revision 8.3 1998/05/23 19:55:38 sar
|
|
* As part of adding rfc2275 made a switch to mesh 2275 and 1445.
|
|
*
|
|
* Revision 8.2 1998/02/25 15:21:23 sra
|
|
* Finish moving types.h, bug.h, and bugdef.h to common/h/.
|
|
*
|
|
* Revision 8.1 1998/02/25 04:50:22 sra
|
|
* Update copyrights.
|
|
*
|
|
* Revision 8.0 1997/11/18 00:56:20 sar
|
|
* Updated revision to 8.0
|
|
*
|
|
* Revision 7.5 1997/10/30 04:23:16 sar
|
|
* Update type information mostly convert bits16_ts to ALENGTH_Ts
|
|
* also add MAX_ALENGTH
|
|
*
|
|
* Revision 7.4 1997/10/22 03:07:28 sar
|
|
* Mofied the agentx and older subagent schemes install options
|
|
*
|
|
* Revision 7.3 1997/08/21 17:23:44 sra
|
|
* Begin moving configuration stuff that's common to all products to common.h
|
|
* Minor cleanups to common/lib/prng.c. Add pnrg seed function to snarkbsd.
|
|
*
|
|
* Revision 7.2 1997/03/20 06:47:59 sra
|
|
* DFARS-safe copyright text. Zap!
|
|
*
|
|
* Revision 7.1 1997/02/25 10:49:26 sra
|
|
* Update copyright notice, dust under the bed.
|
|
*
|
|
*/
|
|
|
|
/* [clearcase]
|
|
modification history
|
|
-------------------
|
|
01b,26jul08,y_t fix the incompatible for STL
|
|
01a,19apr05,job update copyright notices
|
|
*/
|
|
|
|
|
|
#if !defined(asn1conf_inc)
|
|
#define asn1conf_inc
|
|
|
|
#ifdef __cplusplus
|
|
extern"C" {
|
|
#endif
|
|
|
|
#if !defined(EPILOGUE_INSTALL_H)
|
|
#include <wrn/wm/common/install.h>
|
|
#endif
|
|
|
|
/* Get the standard types and the install defines */
|
|
#if !defined(EPILOGUE_TYPES_H)
|
|
#include <wrn/wm/common/types.h>
|
|
#endif
|
|
|
|
/* !!! These are here for backwards compatibility only while we're switching
|
|
* over to the new configuration system. */
|
|
#if (INSTALL_ENVOY_SNMP_GROUP_V1 || INSTALL_ENVOY_SNMP_GROUP_V2)
|
|
#define SGRP 1
|
|
#endif
|
|
|
|
/* This is to provide compatibility for windnet users because the
|
|
* windnet version of envoy had all struct declarations bracketted
|
|
* with an alignment pragma based on this test. We will follow
|
|
* suit but put the test in a single place (here). */
|
|
#if INSTALL_ENVOY_ALIGN_STRUCTURES
|
|
#define WINDNET_STRUCT_ALIGN
|
|
#endif
|
|
|
|
/*****************************************************************
|
|
* Portable types definitions for backwards compatibility. These
|
|
* are now defined in terms of things defined by <common/h/types.h> and
|
|
* therefore <oemtypes.h> so any changes should be made in
|
|
* <oemtypes.h>.
|
|
*****************************************************************/
|
|
/* various sizes of integers */
|
|
typedef sbits32_t INT_32_T;
|
|
typedef bits32_t UINT_32_T;
|
|
typedef sbits16_t INT_16_T;
|
|
typedef bits16_t UINT_16_T;
|
|
typedef bits8_t UINT_8_T;
|
|
typedef bits8_t OCTET_T ;
|
|
/* A generic pointer type. Use void * if your compiler can hack
|
|
* it, otherwise char * is probably the right thing. */
|
|
typedef ptr_t PTR_T;
|
|
/* SNMP ASN.1 tags and lengths can always fit into 16 bits... */
|
|
typedef bits16_t ATVALUE_T; /* ASN.1 type values */
|
|
typedef bits16_t ALENGTH_T; /* ASN.1 contents field lengths */
|
|
/* this is used as both a maximum and a mask */
|
|
#define MAX_ALENGTH 0xFFFF
|
|
|
|
#define OCTETS_PER_INT32 (sizeof(INT_32_T)/sizeof(OCTET_T))
|
|
#define OCTETS_PER_INT16 (sizeof(INT_16_T)/sizeof(OCTET_T))
|
|
|
|
|
|
/*
|
|
* get the common system configuration
|
|
*/
|
|
#include <wrn/wm/common/config.h>
|
|
|
|
/*
|
|
* get the system configuration for envoy
|
|
*/
|
|
#define CONFIG_PREAMBLE 1
|
|
#include <envoy.h>
|
|
#undef CONFIG_PREAMBLE
|
|
|
|
|
|
/* Long lived dynamic storage. If the user doesn't define
|
|
them explicitly we use the shorter term ones */
|
|
#ifndef SNMP_memory_alloc_lt
|
|
#define SNMP_memory_alloc_lt(need) SNMP_memory_alloc(need)
|
|
#endif
|
|
|
|
#ifndef SNMP_memory_free_lt
|
|
#define SNMP_memory_free_lt(buf) SNMP_memory_free(buf)
|
|
#endif
|
|
|
|
/*****************************************************************
|
|
* Set the size of object identifier components. 32 bits is recommended
|
|
* but 16 bits may work and may save a little space.
|
|
* This may be overridden in <oemtypes.h> by defining __TYPES_HAVE_OIDC_T_
|
|
*****************************************************************/
|
|
#ifndef __TYPES_HAVE_OIDC_T_
|
|
typedef bits32_t OIDC_T;
|
|
#endif
|
|
|
|
/* min and max macros if not provided by the system */
|
|
#ifndef NOMINMAX
|
|
#if (!defined(max))
|
|
#define max(a,b) (((a) > (b)) ? (a) : (b))
|
|
#endif
|
|
#if (!defined(min))
|
|
#define min(a,b) (((a) < (b)) ? (a) : (b))
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
|
/* These are the standard C functions that we use in Envoy. If the
|
|
* customer's compiler supplies these correctly then nothing more need be
|
|
* done. If not, then <envoy.h> can override. The most common case is
|
|
* that the system provides them but with the wrong type arguments (char *
|
|
* instead of void *). The macros can then fix this with casts. */
|
|
#ifndef MEMCPY
|
|
#define MEMCPY(dst, src, n) memcpy(dst, src, n)
|
|
#endif
|
|
#ifndef MEMSET
|
|
#define MEMSET(dst, val, n) memset(dst, val, n)
|
|
#endif
|
|
#ifndef MEMCMP
|
|
#define MEMCMP(s1, s2, n) memcmp(s1, s2, n)
|
|
#endif
|
|
#ifndef STRLEN
|
|
#define STRLEN(s) strlen(s)
|
|
#endif
|
|
|
|
#ifndef MEMCMP_NULLOK
|
|
#define MEMCMP_NULLOK(s1, s2, n) (n ? MEMCMP(s1, s2, n) : 0)
|
|
#endif
|
|
|
|
/* Error checking, Look for inconsistencies or necessary configuration
|
|
that hasn't been done */
|
|
|
|
/* Do we need any of the stats. For v1 & v2 there is a seperate
|
|
installation option for the stats groups, for v3 the stats
|
|
are required for reports so installing v3 installs the groups */
|
|
#if (INSTALL_ENVOY_SNMP_GROUP_V1 || INSTALL_ENVOY_SNMP_GROUP_V2 || \
|
|
INSTALL_ENVOY_SNMP_VERSION_3)
|
|
#define ENVOY_NEED_STATS 1
|
|
#else
|
|
#define ENVOY_NEED_STATS 0
|
|
#endif
|
|
|
|
/* See if we need either v2 types or protocols, we do this
|
|
to avoid needing to add new install option whenever a new
|
|
version is defined */
|
|
#if (INSTALL_ENVOY_SNMP_USE_V2_TYPES || INSTALL_ENVOY_SNMP_VERSION_2 || \
|
|
INSTALL_ENVOY_SNMP_VERSION_3)
|
|
#define ENVOY_USE_V2_TYPES 1
|
|
#else
|
|
#define ENVOY_USE_V2_TYPES 0
|
|
#endif
|
|
|
|
#if (INSTALL_ENVOY_SNMP_VERSION_2 || INSTALL_ENVOY_SNMP_VERSION_3)
|
|
#define ENVOY_USE_V2_PROTOS 1
|
|
#else
|
|
#define ENVOY_USE_V2_PROTOS 0
|
|
#endif
|
|
|
|
/* If version 3 is installed we must have 2275 views */
|
|
#if ((INSTALL_ENVOY_SNMP_VERSION_3) && !(INSTALL_ENVOY_SNMP_RFC2275_VIEWS))
|
|
#error If you are installing version 3 you must also install rfc2275
|
|
#error views using _ENVOY_SNMP_RFC2275_VIEWS.
|
|
#endif
|
|
|
|
/* check that only one of the view schemes is turned on,
|
|
if one is turned on turn on the flex view option for use
|
|
elsewhere */
|
|
#if (INSTALL_ENVOY_SNMP_RFC1445_VIEWS && INSTALL_ENVOY_SNMP_RFC2275_VIEWS)
|
|
#error Must not have both the rfc1445 and rfc2275 view schemes installed.
|
|
#error You should modify the configuration file and remove either the
|
|
#error ENVOY_SNMP_RFC1445_VIEWS or ENVOY_SNMP_RFC2275_VIEWS option
|
|
#endif
|
|
|
|
#if (INSTALL_ENVOY_SNMP_RFC1445_VIEWS || INSTALL_ENVOY_SNMP_RFC2275_VIEWS)
|
|
#define INSTALL_ENVOY_SNMP_DYNAMIC_VIEWS 1
|
|
#else
|
|
#define INSTALL_ENVOY_SNMP_DYNAMIC_VIEWS 0
|
|
#endif
|
|
|
|
/* Check that that the lock & serialization options are consistent */
|
|
#if (INSTALL_ENVOY_SNMP_LOCK && INSTALL_ENVOY_SNMP_SERIALIZE)
|
|
#error Must not have both the lock code and the serialization code installed.
|
|
#error You should modify the configuration file and remove either
|
|
#error the ENVOY_SNMP_LOCK or the ENVOY_SNMP_SERIALIZE option
|
|
#endif
|
|
|
|
#if (INSTALL_ENVOY_CONTINUE_REENTRANT && !INSTALL_ENVOY_SNMP_LOCK)
|
|
#error Must have locks installed to use reentrant continues.
|
|
#error You should modify the configuration file and install
|
|
#error the ENVOY_SNMP_LOCK option.
|
|
#endif
|
|
|
|
/* check that the options for the agentx scheme are consistent */
|
|
#if ((INSTALL_ENVOY_AGENTX_MASTER || INSTALL_ENVOY_AGENTX_SUB) && \
|
|
!(INSTALL_ENVOY_AGENTX))
|
|
#error You must install ENVOY_AGENTX with ENVOY_AGENTX_MASTER
|
|
#error and ENVOY_AGENTX_SUB
|
|
#endif
|
|
|
|
|
|
#if (INSTALL_ENVOY_AGENTX_MASTER)
|
|
#if (INSTALL_ENVOY_MAIN_AGENT && !(INSTALL_ENVOY_SNMP_DYNAMIC_VIEWS))
|
|
#error You must install ENVOY_SNMP_RFC1445_VIEWS or
|
|
#error ENVOY_SNMP_RFC2275_VIEWS for use with a master agent
|
|
#endif
|
|
|
|
#if (!INSTALL_ENVOY_SNMP_LOCK && !INSTALL_ENVOY_SNMP_SERIALIZE)
|
|
#error Must have either the locking scheme or the serialization scheme
|
|
#error installed. You should modify the configuration file and install
|
|
#error either the ENVOY_SNMP_LOCK or ENVOY_SNMP_SERIALIZE option
|
|
#endif
|
|
#endif
|
|
|
|
/* Check that the various SNMPv3 components are consistent */
|
|
#if ((INSTALL_ENVOY_SNMP_V3_TARGET) && !(INSTALL_ENVOY_SNMP_VERSION_3))
|
|
#error The target code (ENVOY_SNMP_V3_TARGET) requires SNMPv3 support.
|
|
#error Either uninstall ENVOY_SNMP_V3_TARGET or install ENVOY_SNMP_VERSION_3.
|
|
#endif
|
|
|
|
#if !(INSTALL_ENVOY_SNMP_VERSION_1 || INSTALL_ENVOY_SNMP_VERSION_2) && \
|
|
INSTALL_ENVOY_SNMP_COEXISTENCE
|
|
#error If coexistence is installed, either SNMPv1 or SNMPv2 must also
|
|
#error be installed.
|
|
#endif
|
|
|
|
#if ((INSTALL_ENVOY_SNMP_V3_NOTIFY || INSTALL_ENVOY_SNMP_V3_PROXY || \
|
|
INSTALL_ENVOY_SNMP_COEXISTENCE) && !(INSTALL_ENVOY_SNMP_V3_TARGET))
|
|
#error The use of notifies, proxies, or coexistence requires that
|
|
#error ENVOY_SNMP_V3_TARGET be installed.
|
|
#endif
|
|
|
|
#if ((INSTALL_ENVOY_SNMP_V3_PROXY) && (INSTALL_ENVOY_SNMP_PROXY))
|
|
#error ENVOY_SNMP_V3_PROXY and ENVOY_SNMP_PROXY cannot both be installed.
|
|
#endif
|
|
|
|
#if ((INSTALL_ENVOY_SNMP_V3_PROXY) || (INSTALL_ENVOY_SNMP_PROXY))
|
|
#define INSTALL_ENVOY_USE_SNMP_PROXY 1
|
|
#else
|
|
#define INSTALL_ENVOY_USE_SNMP_PROXY 0
|
|
#endif
|
|
|
|
/* If we don't have a main agent we shouldn't be counting stats */
|
|
#if ((INSTALL_ENVOY_SNMP_GROUP_V1 || INSTALL_ENVOY_SNMP_GROUP_V2) && \
|
|
!(INSTALL_ENVOY_MAIN_AGENT))
|
|
#error Must not have the stats groups installed if building only a
|
|
#error sub agent. You should modify the configuration file
|
|
#error for the makmak program and either uninstall the SNMP_GROUP
|
|
#error options, add the MASTER agent option or remove the SUB agent option
|
|
#endif
|
|
|
|
#if INSTALL_ENVOY_SNMP_VERSION_USEC
|
|
#error Envoy no longer supports USEC. Please uninstall
|
|
#error ENVOY_SNMP_VERSION_USEC and recompile.
|
|
#endif
|
|
|
|
#if INSTALL_ENVOY_40_VB_FREE_COMPAT
|
|
#error ENVOY_40_VB_FREE_COMPAT is no longer a valid option.
|
|
#error Please uninstall it and recompile.
|
|
#endif
|
|
|
|
#if (INSTALL_SNMP_VXWORKS_VIRTUAL_STACK && \
|
|
INSTALL_SNMP_VXWORKS_VS_ENTITY && \
|
|
!(INSTALL_ENVOY_ENTITY_MIB))
|
|
#error You must install ENVOY_ENTITY_MIB for use with SNMP_VXWORKS_VS_ENTITY
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* asn1conf_inc */
|