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

📄 lwconfig.c

📁 bind 9.3结合mysql数据库
💻 C
字号:
/* * Copyright (C) 2004  Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2002  Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM * 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. *//* $Id: lwconfig.c,v 1.1.222.3 2004/03/08 09:05:12 marka Exp $ *//* * We do this so that we may incorporate everything in the main routines * so that we can take advantage of the fixes and changes made there * without having to add them twice. We can then call the parse routine * if there is a resolv.conf file and fetch our own data from the * Windows environment otherwise. *//* * Note that on Win32 there is normally no resolv.conf since all information * is stored in the registry. Therefore there is no ordering like the * contents of resolv.conf. Since the "search" or "domain" keyword, on * Win32 if a search list is found it is used, otherwise the domain name * is used since they are mutually exclusive. The search list can be entered * in the DNS tab of the "Advanced TCP/IP settings" window under the same place * that you add your nameserver list. */#define lwres_conf_parse generic_lwres_conf_parse#include "../lwconfig.c"#undef lwres_conf_parse#include <iphlpapi.h>#define TCPIP_SUBKEY	\	"SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters"voidget_win32_searchlist(lwres_context_t *ctx) {	HKEY hKey;	BOOL keyFound = TRUE;	char searchlist[MAX_PATH];	DWORD searchlen = MAX_PATH;	char *cp;	int idx;	lwres_conf_t *confdata;	REQUIRE(ctx != NULL);	confdata = &ctx->confdata;	memset(searchlist, 0, MAX_PATH);	if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, TCPIP_SUBKEY, 0, KEY_READ, &hKey)		!= ERROR_SUCCESS)		keyFound = FALSE;		if (keyFound == TRUE) {		/* Get the named directory */		if (RegQueryValueEx(hKey, "SearchList", NULL, NULL,			(LPBYTE)searchlist, &searchlen) != ERROR_SUCCESS)			keyFound = FALSE;	}		RegCloseKey(hKey);	confdata->searchnxt = 0;	idx = 0;	cp = strtok((char *)searchlist, ", \0");	while (cp != NULL) {		if (confdata->searchnxt == LWRES_CONFMAXSEARCH)			break;		if (strlen(cp) <= MAX_PATH && strlen(cp) > 0) {			confdata->search[idx] = lwres_strdup(ctx, cp);		}		idx++;		confdata->searchnxt++;		cp = strtok(NULL, ", \0");	}}lwres_result_tlwres_conf_parse(lwres_context_t *ctx, const char *filename) {	lwres_result_t ret = LWRES_R_SUCCESS;	lwres_result_t res;	lwres_conf_t *confdata;	FIXED_INFO * FixedInfo;	ULONG    BufLen = sizeof(FIXED_INFO);	DWORD    dwRetVal;	IP_ADDR_STRING *pIPAddr;	REQUIRE(ctx != NULL);	confdata = &ctx->confdata;	REQUIRE(confdata != NULL);	/* Use the resolver if there is one */	ret = generic_lwres_conf_parse(ctx, filename);	if (confdata->nsnext > 0)		return (ret);	/*	 * We didn't get any nameservers so we need to do this ourselves	 */	FixedInfo = (FIXED_INFO *) GlobalAlloc(GPTR, BufLen);	dwRetVal = GetNetworkParams(FixedInfo, &BufLen);	if (dwRetVal == ERROR_BUFFER_OVERFLOW) {		GlobalFree(FixedInfo);		FixedInfo = GlobalAlloc(GPTR, BufLen);		dwRetVal = GetNetworkParams(FixedInfo, &BufLen);	}	if (dwRetVal != ERROR_SUCCESS) {		GlobalFree(FixedInfo);		return (LWRES_R_FAILURE);	}	/* Get the search list from the registry */	get_win32_searchlist(ctx);	/* Use only if there is no search list */	if (confdata->searchnxt == 0) {		confdata->domainname = lwres_strdup(ctx, FixedInfo->DomainName);		if (confdata->domainname == NULL) {			GlobalFree(FixedInfo);			return (LWRES_R_FAILURE);		}	}	/* Get the list of nameservers */	pIPAddr = &FixedInfo->DnsServerList;	while (pIPAddr) {		if (confdata->nsnext >= LWRES_CONFMAXNAMESERVERS)			break;		res = lwres_create_addr(pIPAddr->IpAddress.String,				&confdata->nameservers[confdata->nsnext++], 1);		if (res != LWRES_R_SUCCESS) {			GlobalFree(FixedInfo);			return (res);		}		pIPAddr = pIPAddr ->Next;	}	GlobalFree(FixedInfo);	return (ret);}

⌨️ 快捷键说明

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