⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 str.c

📁 此dns服务器是在mydns基础上改写
💻 C
字号:
/**************************************************************************************************	$Id: str.c,v 1.19 2005/04/20 16:43:22 bboy Exp $	Copyright (C) 2002-2005  Don Moore <bboy@bboy.net>	This program is free software; you can redistribute it and/or modify	it under the terms of the GNU General Public License as published by	the Free Software Foundation; either version 2 of the License, or	(at Your option) any later version.	This program is distributed in the hope that it will be useful,	but WITHOUT ANY WARRANTY; without even the implied warranty of	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the	GNU General Public License for more details.	You should have received a copy of the GNU General Public License	along with this program; if not, write to the Free Software	Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA**************************************************************************************************/#include "mydns.h"/**************************************************************************************************	MYDNS_CLASS_STR	Returns a pointer to a static string describing the specified query/response protocol class.**************************************************************************************************/char *mydns_class_str(dns_class_t c){	static char buf[4];	switch (c)	{		case DNS_CLASS_UNKNOWN:	return ("UNKNOWN");		case DNS_CLASS_IN:		return ("IN");		case DNS_CLASS_CHAOS:	return ("CHAOS");		case DNS_CLASS_HESIOD:	return ("HESIOD");		case DNS_CLASS_NONE:		return ("NONE");		case DNS_CLASS_ANY:		return ("ANY");	}	snprintf(buf, sizeof(buf), "%03d", c);	return (buf);}/*--- mydns_class_str() -------------------------------------------------------------------------*//**************************************************************************************************	MYDNS_QTYPE_STR	Returns a pointer to a static string describing the specified query/response type.**************************************************************************************************/char *mydns_qtype_str(dns_qtype_t qtype){	static char buf[4];	switch (qtype)	{		case DNS_QTYPE_UNKNOWN:		return ("UNKNOWN");		case DNS_QTYPE_A:				return ("A");		case DNS_QTYPE_NS:			return ("NS");		case DNS_QTYPE_MD:			return ("MD");		case DNS_QTYPE_MF:			return ("MF");		case DNS_QTYPE_CNAME:		return ("CNAME");		case DNS_QTYPE_SOA:			return ("SOA");		case DNS_QTYPE_MB:			return ("MB");		case DNS_QTYPE_MG:			return ("MG");		case DNS_QTYPE_MR:			return ("MR");		case DNS_QTYPE_NULL:			return ("NULL");		case DNS_QTYPE_WKS:			return ("WKS");		case DNS_QTYPE_PTR:			return ("PTR");		case DNS_QTYPE_HINFO:		return ("HINFO");		case DNS_QTYPE_MINFO:		return ("MINFO");		case DNS_QTYPE_MX:			return ("MX");		case DNS_QTYPE_TXT:			return ("TXT");		case DNS_QTYPE_RP:			return ("RP");		case DNS_QTYPE_AFSDB:		return ("AFSDB");		case DNS_QTYPE_X25:			return ("X25");		case DNS_QTYPE_ISDN:			return ("ISDN");		case DNS_QTYPE_RT:			return ("RT");		case DNS_QTYPE_NSAP:			return ("NSAP");		case DNS_QTYPE_NSAP_PTR:	return ("NSAP_PTR");		case DNS_QTYPE_SIG:			return ("SIG");		case DNS_QTYPE_KEY:			return ("KEY");		case DNS_QTYPE_PX:			return ("PX");		case DNS_QTYPE_GPOS:			return ("GPOS");		case DNS_QTYPE_AAAA:			return ("AAAA");		case DNS_QTYPE_LOC:			return ("LOC");		case DNS_QTYPE_NXT:			return ("NXT");		case DNS_QTYPE_EID:			return ("EID");		case DNS_QTYPE_NIMLOC:		return ("NIMLOC");		case DNS_QTYPE_SRV:			return ("SRV");		case DNS_QTYPE_ATMA:			return ("ATMA");		case DNS_QTYPE_NAPTR:		return ("NAPTR");		case DNS_QTYPE_KX:			return ("KX");		case DNS_QTYPE_CERT:			return ("CERT");		case DNS_QTYPE_A6:			return ("A6");		case DNS_QTYPE_DNAME:		return ("DNAME");		case DNS_QTYPE_SINK:			return ("SINK");		case DNS_QTYPE_OPT:			return ("OPT");		case DNS_QTYPE_TSIG:			return ("TSIG");		case DNS_QTYPE_IXFR:			return ("IXFR");		case DNS_QTYPE_AXFR:			return ("AXFR");		case DNS_QTYPE_MAILB:		return ("MAILB");		case DNS_QTYPE_MAILA:		return ("MAILA");		case DNS_QTYPE_ANY:			return ("ANY");#if ALIAS_ENABLED		case DNS_QTYPE_ALIAS:		return ("ALIAS");#endif		case DNS_QTYPE_NONE:			break;	}	snprintf(buf, sizeof(buf), "%03d", qtype);	return (buf);}/*--- mydns_qtype_str() -------------------------------------------------------------------------*//**************************************************************************************************	MYDNS_OPCODE_STR	Returns a pointer to a static string describing the specified query/response opcode.**************************************************************************************************/char *mydns_opcode_str(dns_opcode_t opcode){	static char buf[4];	switch (opcode)	{		case DNS_OPCODE_UNKNOWN:	return ("UNKNOWN");		case DNS_OPCODE_QUERY:		return ("QUERY");		case DNS_OPCODE_IQUERY:		return ("IQUERY");		case DNS_OPCODE_STATUS:		return ("STATUS");		case DNS_OPCODE_NOTIFY:		return ("NOTIFY");		case DNS_OPCODE_UPDATE:		return ("UPDATE");	}	snprintf(buf, sizeof(buf), "%03d", opcode);	return (buf);}/*--- mydns_opcode_str() ------------------------------------------------------------------------*//**************************************************************************************************	MYDNS_RCODE_STR	Returns a pointer to a static string describing the specified return code.**************************************************************************************************/char *mydns_rcode_str(dns_rcode_t rcode){	static char buf[4];	switch (rcode)	{		case DNS_RCODE_UNKNOWN:		return ("UNKNOWN");		case DNS_RCODE_NOERROR:		return ("NOERROR");		case DNS_RCODE_FORMERR:		return ("FORMERR");		case DNS_RCODE_SERVFAIL:	return ("SERVFAIL");		case DNS_RCODE_NXDOMAIN:	return ("NXDOMAIN");		case DNS_RCODE_NOTIMP:		return ("NOTIMP");		case DNS_RCODE_REFUSED:		return ("REFUSED");		case DNS_RCODE_YXDOMAIN:	return ("YXDOMAIN");		case DNS_RCODE_YXRRSET:		return ("YXRRSET");		case DNS_RCODE_NXRRSET:		return ("NXRRSET");		case DNS_RCODE_NOTAUTH:		return ("NOTAUTH");		case DNS_RCODE_NOTZONE:		return ("NOTZONE");		case DNS_RCODE_BADSIG:		return ("BADSIG");		case DNS_RCODE_BADKEY:		return ("BADKEY");		case DNS_RCODE_BADTIME:		return ("BADTIME");		case DNS_RCODE_BADMODE:		return ("BADMODE");		case DNS_RCODE_BADNAME:		return ("BADNAME");		case DNS_RCODE_BADALG:		return ("BADALG");	}	snprintf(buf, sizeof(buf), "%03d", rcode);	return (buf);}/*--- mydns_rcode_str() -------------------------------------------------------------------------*//**************************************************************************************************	MYDNS_SECTION_STR	Returns a pointer to a static string describing the specified data section.**************************************************************************************************/char *mydns_section_str(datasection_t section){	switch (section)	{		case QUESTION:		return ("QUESTION");		case ANSWER:		return ("ANSWER");		case AUTHORITY:	return ("AUTHORITY");		case ADDITIONAL:	return ("ADDITIONAL");	}	return ("UNKNOWN");}/*--- mydns_section_str() -----------------------------------------------------------------------*//**************************************************************************************************	HINFO_PARSE	Parses an HINFO data string (CPU OS) into CPU and OS, obeying quotes and escaped characters.	This function is called by reply_add_hinfo().	Returns 0 on success, or -1 if an error (buffer overflow) occurred.**************************************************************************************************/inthinfo_parse(char *hinfo, char *cpu, char *os, size_t destlen){	register char	*s, *d;	register int	cpu_done = 0;								/* Completed 'cpu' yet? */	register char	quote = 0;									/* If inside quotes, which quote char */	for (s = hinfo, d = cpu; *s; s++)	{		if (!cpu_done && ((d - cpu) > (destlen - 1)))	/* Have we exceeded length for 'cpu'? */			return (-1);		if (cpu_done && ((d - os) > (destlen - 1)))		/* Have we exceeded length for 'os'? */			return (-1);		if (!cpu_done && isspace(*s) && !quote)			/* Time to move from 'cpu' to 'os'? */		{			*d = '\0';			d = os;			cpu_done = 1;		}		else if (*s == '\'' || *s == '"')		{			if (!quote)				quote = *s;			else if (quote == *s)				quote = 0;			else				*d++ = *s;		}		else			*d++ = *s;	}	return (0);}/*--- hinfo_parse() -----------------------------------------------------------------------------*//* vi:set ts=3: */

⌨️ 快捷键说明

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