File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / ipsec-tools / src / racoon / misc.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 22:39:10 2012 UTC (12 years, 5 months ago) by misho
Branches: ipsec-tools, MAIN
CVS tags: v0_8_2p2, v0_8_1p0, v0_8_1, v0_8_0p0, v0_8_0, HEAD
ipsec-tools

    1: /*	$NetBSD: misc.c,v 1.6 2008/07/15 00:47:09 mgrooms Exp $	*/
    2: 
    3: /*	$KAME: misc.c,v 1.23 2001/08/16 14:37:29 itojun Exp $	*/
    4: 
    5: /*
    6:  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
    7:  * All rights reserved.
    8:  * 
    9:  * Redistribution and use in source and binary forms, with or without
   10:  * modification, are permitted provided that the following conditions
   11:  * are met:
   12:  * 1. Redistributions of source code must retain the above copyright
   13:  *    notice, this list of conditions and the following disclaimer.
   14:  * 2. Redistributions in binary form must reproduce the above copyright
   15:  *    notice, this list of conditions and the following disclaimer in the
   16:  *    documentation and/or other materials provided with the distribution.
   17:  * 3. Neither the name of the project nor the names of its contributors
   18:  *    may be used to endorse or promote products derived from this software
   19:  *    without specific prior written permission.
   20:  * 
   21:  * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
   22:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   23:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   24:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
   25:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   26:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   27:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   28:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   29:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   30:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   31:  * SUCH DAMAGE.
   32:  */
   33: 
   34: #include "config.h"
   35: 
   36: #include <sys/types.h>
   37: #include <sys/param.h>
   38: #include <sys/stat.h>
   39: #include <sys/time.h>
   40: 
   41: #include <stdlib.h>
   42: #include <stdio.h>
   43: #include <string.h>
   44: #include <errno.h>
   45: #include <syslog.h>
   46: #include <ctype.h>
   47: #include <fcntl.h>
   48: 
   49: #include "var.h"
   50: #include "misc.h"
   51: #include "debug.h"
   52: 
   53: #if 0
   54: static int bindump __P((void *, size_t));
   55: 
   56: static int
   57: bindump(buf0, len)
   58:         void *buf0;
   59:         size_t len;
   60: {
   61: 	unsigned char *buf = (unsigned char *)buf0;
   62: 	size_t i;
   63: 
   64: 	for (i = 0; i < len; i++) {
   65: 		if ((buf[i] & 0x80) || !isprint(buf[i]))
   66: 			printf("\\x%x", buf[i]);
   67: 		else
   68: 			printf("%c", buf[i]);
   69: 	}
   70: 	printf("\n");
   71: 
   72: 	return 0;
   73: }
   74: #endif
   75: 
   76: int
   77: racoon_hexdump(buf0, len)
   78: 	void *buf0;
   79: 	size_t len;
   80: {
   81: 	caddr_t buf = (caddr_t)buf0;
   82: 	size_t i;
   83: 
   84: 	for (i = 0; i < len; i++) {
   85: 		if (i != 0 && i % 32 == 0)
   86: 			printf("\n");
   87: 		if (i % 4 == 0)
   88: 			printf(" ");
   89: 		printf("%02x", (unsigned char)buf[i]);
   90: 	}
   91: 	printf("\n");
   92: 
   93: 	return 0;
   94: }
   95: 
   96: char *
   97: bit2str(n, bl)
   98: 	int n, bl;
   99: {
  100: #define MAXBITLEN 128
  101: 	static char b[MAXBITLEN + 1];
  102: 	int i;
  103: 
  104: 	if (bl > MAXBITLEN)
  105: 		return "Failed to convert.";	/* NG */
  106: 	memset(b, '0', bl);
  107: 	b[bl] = '\0';
  108: 
  109: 	for (i = 0; i < bl; i++) {
  110: 		if (n & (1 << i))
  111: 			b[bl - 1 - i] = '1';
  112: 	}
  113: 
  114: 	return b;
  115: }
  116: 
  117: const char *
  118: debug_location(file, line, func)
  119: 	const char *file;
  120: 	int line;
  121: 	const char *func;
  122: {
  123: 	static char buf[1024];
  124: 	const char *p;
  125: 
  126: 	/* truncate pathname */
  127: 	p = strrchr(file, '/');
  128: 	if (p)
  129: 		p++;
  130: 	else
  131: 		p = file;
  132: 
  133: 	if (func)
  134: 		snprintf(buf, sizeof(buf), "%s:%d:%s()", p, line, func);
  135: 	else
  136: 		snprintf(buf, sizeof(buf), "%s:%d", p, line);
  137: 
  138: 	return buf;
  139: }
  140: 
  141: /*
  142:  * get file size.
  143:  * -1: error occured.
  144:  */
  145: int
  146: getfsize(path)
  147: 	char *path;
  148: {
  149:         struct stat st;
  150: 
  151:         if (stat(path, &st) != 0)
  152:                 return -1;
  153:         else
  154:                 return st.st_size;
  155: }
  156: 
  157: /*
  158:  * set the close-on-exec flag for file descriptor fd.
  159:  */
  160: void
  161: close_on_exec(fd)
  162: 	int fd;
  163: {
  164: 	fcntl(fd, F_SETFD, FD_CLOEXEC);
  165: }
  166: 
  167: /*
  168:  * calculate the difference between two times.
  169:  * t1: start
  170:  * t2: end
  171:  */
  172: double
  173: timedelta(t1, t2)
  174: 	struct timeval *t1, *t2;
  175: {
  176: 	if (t2->tv_usec >= t1->tv_usec)
  177: 		return t2->tv_sec - t1->tv_sec +
  178: 			(double)(t2->tv_usec - t1->tv_usec) / 1000000;
  179: 
  180: 	return t2->tv_sec - t1->tv_sec - 1 +
  181: 		(double)(1000000 + t2->tv_usec - t1->tv_usec) / 1000000;
  182: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>