diff packages/net/snmp/lib/current/include/tools.h @ 103:95f3e12a6327 ecos-sw-2000-06-23

Merge from eCos master repository on 2000-06-23-16:41:10-BST
author jlarmour
date Fri, 23 Jun 2000 17:06:31 +0000
parents
children e0c0827131d1
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/packages/net/snmp/lib/current/include/tools.h
@@ -0,0 +1,225 @@
+//==========================================================================
+//
+//      ./lib/current/include/tools.h
+//
+//
+//==========================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// Software distributed under the License is distributed on an "AS IS"      
+// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
+// License for the specific language governing rights and limitations under 
+// the License.                                                             
+//                                                                          
+// The Original Code is eCos - Embedded Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//####UCDSNMPCOPYRIGHTBEGIN####
+//
+// -------------------------------------------
+//
+// Portions of this software may have been derived from the UCD-SNMP
+// project,  <http://ucd-snmp.ucdavis.edu/>  from the University of
+// California at Davis, which was originally based on the Carnegie Mellon
+// University SNMP implementation.  Portions of this software are therefore
+// covered by the appropriate copyright disclaimers included herein.
+//
+// The release used was version 4.1.2 of May 2000.  "ucd-snmp-4.1.2"
+// -------------------------------------------
+//
+//####UCDSNMPCOPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):    hmt
+// Contributors: hmt
+// Date:         2000-05-30
+// Purpose:      Port of UCD-SNMP distribution to eCos.
+// Description:  
+//              
+//
+//####DESCRIPTIONEND####
+//
+//==========================================================================
+/********************************************************************
+       Copyright 1989, 1991, 1992 by Carnegie Mellon University
+
+			  Derivative Work -
+Copyright 1996, 1998, 1999, 2000 The Regents of the University of California
+
+			 All Rights Reserved
+
+Permission to use, copy, modify and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appears in all copies and
+that both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of CMU and The Regents of
+the University of California not be used in advertising or publicity
+pertaining to distribution of the software without specific written
+permission.
+
+CMU AND THE REGENTS OF THE UNIVERSITY OF CALIFORNIA DISCLAIM ALL
+WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL CMU OR
+THE REGENTS OF THE UNIVERSITY OF CALIFORNIA BE LIABLE FOR ANY SPECIAL,
+INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+FROM THE LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+*********************************************************************/
+/*
+ * tools.h
+ */
+
+#ifndef _TOOLS_H
+#define _TOOLS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+
+/* 
+ * General acros and constants.
+ */
+#ifdef WIN32
+#  define SNMP_MAXPATH MAX_PATH
+#else
+#  ifdef PATH_MAX
+#    define SNMP_MAXPATH PATH_MAX
+#  else
+#    define SNMP_MAXPATH MAXPATHLEN
+#  endif
+#endif
+
+#define SNMP_MAXBUF		(1024 * 4)
+#define SNMP_MAXBUF_MEDIUM	1024
+#define SNMP_MAXBUF_SMALL	512
+
+#define SNMP_MAXBUF_MESSAGE	1500
+
+#define SNMP_MAXOID		64
+
+#define SNMP_FILEMODE_CLOSED	0600
+#define SNMP_FILEMODE_OPEN	0644
+
+#define BYTESIZE(bitsize)       ((bitsize + 7) >> 3)
+#define ROUNDUP8(x)		( ( (x+7) >> 3 ) * 8 )
+
+
+
+#define SNMP_FREE(s)		if (s) { free((void *)s); s=NULL; }
+
+					/* XXX Not optimal everywhere. */
+#define SNMP_MALLOC_STRUCT(s)   (struct s *) calloc(1, sizeof(struct s))
+#define SNMP_ZERO(s,l)		if (s) memset(s, 0, l);
+
+
+#define TOUPPER(c)	(c >= 'a' && c <= 'z' ? c - ('a' - 'A') : c)
+#define TOLOWER(c)	(c >= 'A' && c <= 'Z' ? c + ('a' - 'A') : c)
+
+#define HEX2VAL(s) \
+	((isalpha(s) ? (TOLOWER(s)-'a'+10) : (TOLOWER(s)-'0')) & 0xf)
+#define VAL2HEX(s)	( (s) + (((s) >= 10) ? ('a'-10) : '0') )
+
+
+#define SNMP_MAX(a,b) ((a) > (b) ? (a) : (b))
+#define SNMP_MIN(a,b) ((a) > (b) ? (b) : (a))
+
+#ifndef FALSE
+#define FALSE 0
+#endif
+#ifndef TRUE
+#define TRUE  1
+#endif
+
+/*
+ * QUIT the FUNction:
+ *	e	Error code variable
+ *	l	Label to goto to cleanup and get out of the function.
+ *
+ * XXX	It would be nice if the label could be constructed by the
+ *	preprocessor in context.  Limited to a single error return value.
+ *	Temporary hack at best.
+ */
+#define QUITFUN(e, l)			\
+	if ( (e) != SNMPERR_SUCCESS) {	\
+		rval = SNMPERR_GENERR;	\
+		goto l ;		\
+	}
+
+/*
+ * DIFFTIMEVAL
+ *	Set <diff> to the difference between <now> (current) and <then> (past).
+ *
+ * ASSUMES that all inputs are (struct timeval)'s.
+ * Cf. system.c:calculate_time_diff().
+ */
+#define DIFFTIMEVAL(now, then, diff) 			\
+{							\
+	now.tv_sec--;					\
+	now.tv_usec += 1000000L;			\
+	diff.tv_sec  = now.tv_sec  - then.tv_sec;	\
+	diff.tv_usec = now.tv_usec - then.tv_usec;	\
+	if (diff.tv_usec > 1000000L){			\
+		diff.tv_usec -= 1000000L;		\
+		diff.tv_sec++;				\
+	}						\
+}
+
+
+/*
+ * ISTRANSFORM
+ * ASSUMES the minimum length for ttype and toid.
+ */
+#define USM_LENGTH_OID_TRANSFORM	10
+
+#define ISTRANSFORM(ttype, toid)					\
+	!snmp_oid_compare(ttype, USM_LENGTH_OID_TRANSFORM,		\
+		usm ## toid ## Protocol, USM_LENGTH_OID_TRANSFORM)
+
+#define ENGINETIME_MAX	2147483647	/* ((2^31)-1) */
+#define ENGINEBOOT_MAX	2147483647	/* ((2^31)-1) */
+
+
+
+
+/* 
+ * Prototypes.
+ */
+void	free_zero (void *buf, size_t size);
+
+u_char *malloc_random (size_t *size);
+u_char *malloc_zero (size_t size);
+int     memdup (u_char **to, const u_char *from, size_t size);
+
+u_int	binary_to_hex (const u_char *input, size_t len, char **output);
+int	hex_to_binary2 (const u_char *input, size_t len, char **output);
+
+void	dump_chunk (const char *debugtoken, const char *title, const u_char *buf, int size);
+char   *dump_snmpEngineID (const u_char *buf, size_t *buflen);
+
+typedef void * marker_t;
+marker_t atime_newMarker(void);
+void atime_setMarker(marker_t pm);
+int atime_ready( marker_t pm, int deltaT);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TOOLS_H */