ns_stats.c

来自「<B>Digital的Unix操作系统VAX 4.2源码</B>」· C语言 代码 · 共 165 行

C
165
字号
#ifndef lintstatic	char	*sccsid = "@(#)ns_stats.c	4.1	(ULTRIX)	7/2/90";#endif lint/************************************************************************ *									* *			Copyright (c) 1984-1990 by			* *		Digital Equipment Corporation, Maynard, MA		* *			All rights reserved.				* *									* *   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.			* *									* *   This software is  derived  from  software  received  from  the	* *   University    of   California,   Berkeley,   and   from   Bell	* *   Laboratories.  Use, duplication, or disclosure is  subject  to	* *   restrictions  under  license  agreements  with  University  of	* *   California and with AT&T.						* *									* *   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.	* *									* ************************************************************************//* * Copyright (c) 1986 Regents of the University of California *	All Rights Reserved *//* * Modification History: * * 18-Jan-88	logcher *	Added BIND 4.7.3. * * 10-Jan-90	sue *	Incorporated Hesiod changes from MIT to implement multiple *	"character strings" in a TXT record according to RFC1035. *//* * simple monitoring of named behavior * dumps a bunch of values into a well-known file */#ifdef STATS#include <sys/types.h>#include <sys/time.h>#ifdef ULTRIXFUNC#include <sys/stat.h>#endif ULTRIXFUNC#include <netinet/in.h>#include <stdio.h>#include <syslog.h>#include <arpa/nameser.h>#include "ns.h"#ifdef STATSFILEchar *statsfile = STATSFILE ;#elsechar *statsfile = "/usr/var/tmp/named.stats";#endif /* STATSFILE */extern	time_t	boottime, resettime;extern	int	needStatsDump;/* * General statistics gathered *//* The position in this table must agree with the defines in ns.h */struct stats stats[S_NSTATS] = {	{ 0, "input packets" },	{ 0, "output packets" },	{ 0, "queries" },	{ 0, "iqueries" },	{ 0, "duplicate queries" },	{ 0, "responses" },	{ 0, "duplicate responses" },	{ 0, "OK answers" },	{ 0, "FAIL answers" },	{ 0, "FORMERR answers" },	{ 0, "system queries" },	{ 0, "prime cache calls" },	{ 0, "check_ns calls" },	{ 0, "bad responses dropped" },	{ 0, "martian responses" },};/* *  Statistics for queries (by type) */unsigned long typestats[T_ANY+1];char *typenames[T_ANY+1] = {	/* 5 types per line */	"Unknown", "A", "NS", "invalid(MD)", "invalid(MF)",	"CNAME", "SOA", "MB", "MG", "MR",	"NULL", "WKS", "PTR", "HINFO", "MINFO",	"MX", "TXT", 0, 0, 0,	/* 20 per line */	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/* 100 */	"UINFO", "UID", "GID", "UNSPEC", 0, 0, 0, 0, 0, 0,	/* 110 */	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/* 120 */	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/* 200 */	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/* 240 */	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,	/* 250 */	0, 0, "AXFR", "MAILB", "MAILA", "ANY" };ns_stats(){	time_t timenow;	register FILE *f;	register int i;	if ((f = fopen(statsfile,"a")) == 0)	{#ifdef DEBUG		if (debug)			fprintf(ddt,"can't open stat file, \"%s\"\n",statsfile);#endif		syslog(LOG_ERR, "cannot open stat file, \"%s\"\n",statsfile);		return;	}	time(&timenow);	fprintf(f, "###  %s", ctime(&timenow));	fprintf(f, "%d\ttime since boot (secs)\n", timenow - boottime);	fprintf(f, "%d\ttime since reset (secs)\n", timenow - resettime);	/* general statistics */	for (i = 0; i < S_NSTATS; i++)		fprintf(f,"%d\t%s\n", stats[i].cnt, stats[i].description);	/* query type statistics */	fprintf(f, "%d\tUnknown query types\n", typestats[0]);	for(i=1; i < T_ANY+1; i++)		if (typestats[i])			fprintf(f, "%d\t%s querys\n", typestats[i],				typenames[i]);	(void) fclose(f);}#endif STATS

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?