亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? irs_data.c

?? package of develop dns
?? C
字號:
/* * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") * Copyright (c) 1996,1999 by 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. */#if !defined(LINT) && !defined(CODECENTER)static const char rcsid[] = "$Id: irs_data.c,v 1.3.2.2.4.3 2004/11/30 01:15:43 marka Exp $";#endif#include "port_before.h"#ifndef __BIND_NOSTATIC#include <sys/types.h>#include <netinet/in.h>#include <arpa/nameser.h>#include <resolv.h>#include <stdio.h>#include <string.h>#include <isc/memcluster.h>#ifdef DO_PTHREADS#include <pthread.h>#endif#include <irs.h>#include <stdlib.h>#include "port_after.h"#include "irs_data.h"#undef _res#if !(__GLIBC__ > 2 || __GLIBC__ == 2 &&  __GLIBC_MINOR__ >= 3)#undef h_errnoextern int h_errno;#endifextern struct __res_state _res;#ifdef	DO_PTHREADSstatic pthread_key_t	key;static int		once = 0;#elsestatic struct net_data	*net_data;#endifvoidirs_destroy(void) {#ifndef DO_PTHREADS	if (net_data != NULL)		net_data_destroy(net_data);	net_data = NULL;#endif}voidnet_data_destroy(void *p) {	struct net_data *net_data = p;	res_ndestroy(net_data->res);	if (net_data->gr != NULL) {		(*net_data->gr->close)(net_data->gr);		net_data->gr = NULL;	}	if (net_data->pw != NULL) {		(*net_data->pw->close)(net_data->pw);		net_data->pw = NULL;	}	if (net_data->sv != NULL) {		(*net_data->sv->close)(net_data->sv);		net_data->sv = NULL;	}	if (net_data->pr != NULL) {		(*net_data->pr->close)(net_data->pr);		net_data->pr = NULL;	}	if (net_data->ho != NULL) {		(*net_data->ho->close)(net_data->ho);		net_data->ho = NULL;	}	if (net_data->nw != NULL) {		(*net_data->nw->close)(net_data->nw);		net_data->nw = NULL;	}	if (net_data->ng != NULL) {		(*net_data->ng->close)(net_data->ng);		net_data->ng = NULL;	}	if (net_data->ho_data != NULL) {		free(net_data->ho_data);		net_data->ho_data = NULL;	}	if (net_data->nw_data != NULL) {		free(net_data->nw_data);		net_data->nw_data = NULL;	}	(*net_data->irs->close)(net_data->irs);	memput(net_data, sizeof *net_data);}/* applications that need a specific config file other than * _PATH_IRS_CONF should call net_data_init directly rather than letting *   the various wrapper functions make the first call. - brister */struct net_data *net_data_init(const char *conf_file) {#ifdef	DO_PTHREADS#ifndef LIBBIND_MUTEX_INITIALIZER#define LIBBIND_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER#endif	static pthread_mutex_t keylock = LIBBIND_MUTEX_INITIALIZER;	struct net_data *net_data;	if (!once) {		pthread_mutex_lock(&keylock);		if (!once++)			pthread_key_create(&key, net_data_destroy);		pthread_mutex_unlock(&keylock);	}	net_data = pthread_getspecific(key);#endif	if (net_data == NULL) {		net_data = net_data_create(conf_file);		if (net_data == NULL)			return (NULL);#ifdef	DO_PTHREADS		pthread_setspecific(key, net_data);#endif	}	return (net_data);}struct net_data *net_data_create(const char *conf_file) {	struct net_data *net_data;	net_data = memget(sizeof (struct net_data));	if (net_data == NULL)		return (NULL);	memset(net_data, 0, sizeof (struct net_data));	if ((net_data->irs = irs_gen_acc("", conf_file)) == NULL) {		memput(net_data, sizeof (struct net_data));		return (NULL);	}#ifndef DO_PTHREADS	(*net_data->irs->res_set)(net_data->irs, &_res, NULL);#endif	net_data->res = (*net_data->irs->res_get)(net_data->irs);	if (net_data->res == NULL) {		(*net_data->irs->close)(net_data->irs);		memput(net_data, sizeof (struct net_data));		return (NULL);	}	if ((net_data->res->options & RES_INIT) == 0U &&	    res_ninit(net_data->res) == -1) {		(*net_data->irs->close)(net_data->irs);		memput(net_data, sizeof (struct net_data));		return (NULL);	}	return (net_data);}voidnet_data_minimize(struct net_data *net_data) {	res_nclose(net_data->res);}#ifdef _REENTRANTstruct __res_state *__res_state(void) {	/* NULL param here means use the default config file. */	struct net_data *net_data = net_data_init(NULL);	if (net_data && net_data->res)		return (net_data->res);	return (&_res);}#else#ifdef __linuxstruct __res_state *__res_state(void) {	return (&_res);}#endif#endifint *__h_errno(void) {	/* NULL param here means use the default config file. */	struct net_data *net_data = net_data_init(NULL);	if (net_data && net_data->res)		return (&net_data->res->res_h_errno);#if !(__GLIBC__ > 2 || __GLIBC__ == 2 &&  __GLIBC_MINOR__ >= 3)	return(&_res.res_h_errno);#else	return (&h_errno);#endif}void__h_errno_set(struct __res_state *res, int err) {#if (__GLIBC__ > 2 || __GLIBC__ == 2 &&  __GLIBC_MINOR__ >= 3)	res->res_h_errno = err;#else	h_errno = res->res_h_errno = err;#endif}#endif /*__BIND_NOSTATIC*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区电影在线播| 不卡的av在线播放| 久久看人人爽人人| 成人18视频日本| 亚洲黄色小视频| 555www色欧美视频| 国产在线播放一区二区三区| 成人听书哪个软件好| 国产精品久久久久久久久免费丝袜| 成人av电影在线网| 一区二区三区在线不卡| 88在线观看91蜜桃国自产| 麻豆精品一区二区三区| 国产三级精品在线| 色妹子一区二区| 奇米色777欧美一区二区| 久久久99精品免费观看| 日本黄色一区二区| 琪琪一区二区三区| 国产三级欧美三级日产三级99| 91在线播放网址| 日韩av一区二区在线影视| 久久美女艺术照精彩视频福利播放| 成人免费视频国产在线观看| 亚洲一区在线视频| 精品国产乱码久久久久久浪潮 | 国产麻豆精品在线观看| 中文字幕亚洲综合久久菠萝蜜| 欧美中文字幕一区二区三区 | 日韩免费看网站| 高清久久久久久| 亚洲一卡二卡三卡四卡五卡| 日韩欧美国产精品一区| 成人激情免费网站| 视频一区国产视频| 中文字幕精品综合| 欧美军同video69gay| 国产精品99精品久久免费| 亚洲一区免费在线观看| 337p粉嫩大胆噜噜噜噜噜91av | 欧美激情资源网| 欧美日韩中字一区| 国产高清精品久久久久| 亚洲国产精品一区二区www在线| 精品99久久久久久| 欧美色老头old∨ideo| 国产高清亚洲一区| 日韩激情中文字幕| 中文字幕中文字幕一区二区 | 国产精品成人免费精品自在线观看 | 成人爱爱电影网址| 琪琪一区二区三区| 亚洲在线视频一区| 国产农村妇女毛片精品久久麻豆| 欧美日韩亚洲丝袜制服| 成人涩涩免费视频| 理论片日本一区| 一区二区三区中文字幕在线观看| 久久亚洲精精品中文字幕早川悠里| 在线观看日韩精品| bt7086福利一区国产| 精品一区二区三区在线观看| 亚洲一级二级三级| 国产精品久久久久久久蜜臀| 精品国产91乱码一区二区三区 | 激情欧美一区二区三区在线观看| 洋洋av久久久久久久一区| 国产精品私人影院| 久久亚洲综合色| 日韩欧美123| 欧美日韩在线综合| 91老司机福利 在线| 国产v日产∨综合v精品视频| 麻豆国产91在线播放| 午夜国产精品一区| 亚洲一区影音先锋| 亚洲男人的天堂在线观看| 国产午夜精品理论片a级大结局| 欧美一区二区三区男人的天堂| 欧美亚洲一区二区在线观看| 不卡视频在线观看| 国产a视频精品免费观看| 韩国av一区二区| 美国欧美日韩国产在线播放| 午夜影院久久久| 亚洲午夜在线观看视频在线| 亚洲精品精品亚洲| 亚洲色图清纯唯美| 中文字幕亚洲欧美在线不卡| 国产欧美日韩卡一| xfplay精品久久| 精品av久久707| 26uuu久久综合| 久久一区二区三区四区| 精品99一区二区| 精品99一区二区三区| 精品国产一区二区三区不卡| 精品免费国产一区二区三区四区| 91精品国产高清一区二区三区 | 欧美日韩国产影片| 欧美色国产精品| 欧美日韩激情一区二区| 欧美视频日韩视频| 欧美色综合网站| 欧美日韩免费电影| 欧美日本一区二区| 欧美另类videos死尸| 欧美日韩国产三级| 欧美丰满少妇xxxxx高潮对白| 欧美午夜宅男影院| 欧美日韩三级在线| 欧美精品1区2区| 制服丝袜av成人在线看| 91精品视频网| 精品国产凹凸成av人导航| 久久免费精品国产久精品久久久久| 久久久久亚洲综合| 国产精品国产三级国产aⅴ中文 | 成人avav影音| 97成人超碰视| 日本丶国产丶欧美色综合| 欧美在线免费观看视频| 欧美日韩免费高清一区色橹橹| 制服丝袜av成人在线看| 精品国产第一区二区三区观看体验| 久久久99久久| 亚洲色图一区二区| 午夜一区二区三区视频| 免费成人美女在线观看| 久久99最新地址| 国产成人h网站| 99久久免费精品高清特色大片| 一本色道久久综合狠狠躁的推荐 | 国产风韵犹存在线视精品| 成人精品国产一区二区4080| 91网站视频在线观看| 欧美日韩极品在线观看一区| 日韩三级视频在线看| 久久精品视频在线看| 亚洲婷婷国产精品电影人久久| 亚洲综合另类小说| 久草精品在线观看| 成人综合婷婷国产精品久久免费| 91色视频在线| 欧美一级高清片在线观看| 国产亚洲欧美一级| 亚洲激情图片一区| 久久草av在线| 99精品久久只有精品| 欧美男生操女生| 久久久亚洲午夜电影| 亚洲欧美国产77777| 日韩中文字幕av电影| 国产精品 欧美精品| 在线免费观看日本欧美| 精品成人一区二区三区| 中文字幕一区二| 美国毛片一区二区| 97超碰欧美中文字幕| 日韩一区二区三区免费看 | 国产精品美女久久久久aⅴ国产馆| 亚洲精品成人a在线观看| 免费不卡在线观看| 成人免费视频视频在线观看免费| 欧美日本在线播放| 欧美国产激情一区二区三区蜜月| 亚洲小说欧美激情另类| 国产精品一区二区久久精品爱涩| 欧美怡红院视频| 久久久久久免费网| 亚洲一区国产视频| 国产精品1024久久| 欧美男男青年gay1069videost| 国产免费久久精品| 日本不卡123| 91麻豆免费观看| 精品不卡在线视频| 亚洲无线码一区二区三区| 风间由美一区二区av101| 欧美日本一区二区在线观看| 国产精品久久久久aaaa樱花| 男男视频亚洲欧美| 色八戒一区二区三区| 久久久久久亚洲综合| 日韩精品久久理论片| 92国产精品观看| 久久久精品影视| 日本特黄久久久高潮| 99精品视频一区二区| 久久久青草青青国产亚洲免观| 亚洲v中文字幕| 97久久精品人人澡人人爽| 精品国产免费一区二区三区四区 | 久久99深爱久久99精品| 欧美色网站导航| 国产精品久久久一区麻豆最新章节| 麻豆成人91精品二区三区| 欧美亚洲精品一区| 亚洲欧洲成人精品av97| 国产一区二区三区黄视频 |