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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? resolv.c

?? 一個(gè)tcp/ip協(xié)議棧,帶有PPP、IP、TCP、UDP等協(xié)議
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
		dns_caught_signal = 0;#if USE_UCIP_DIRECT		timerTempSeconds(10,dns_timeout,(void*)fd);		i=udpRead(fd,UNCACHED(packet),PACKETSZ);#else		oldalarm = alarm(REPLY_TIMEOUT);		oldhandler = signal(SIGALRM, dns_catch_signal);		i=read(fd, packet, PACKETSZ);		alarm(0);		signal(SIGALRM, oldhandler);		alarm(oldalarm);#endif		if (dns_caught_signal)		{        /* timed out, so retry send and receive,							to next nameserver on queue */			RESOLVDEBUG(("query timed out, retrying\n"));			goto again;		}#if USE_UCIP_DIRECT		else			timerCancel(dns_timeout,(void*)fd);#endif		if (i < HFIXEDSZ)		{			/* too short ! */			goto again;		}		decode_header(packet, &h);		RESOLVDEBUG(("id = %d, qr = %d\n", h.id, h.qr));		if ((h.id != id) || (!h.qr))		{			/* unsolicited */			goto again;		}		RESOLVDEBUG(("Got response %s\n", "(i think)!"));		RESOLVDEBUG(("qrcount=%d,ancount=%d,nscount=%d,arcount=%d\n",										h.qdcount, h.ancount, h.nscount, h.arcount));		RESOLVDEBUG(("opcode=%d,aa=%d,tc=%d,rd=%d,ra=%d,rcode=%d\n",										h.opcode, h.aa, h.tc, h.rd, h.ra, h.rcode));		if ((h.rcode) || (h.ancount < 1))		{			/* negative result, not present */			goto again;		}		pos = HFIXEDSZ;		for (j = 0; j < h.qdcount; j++)		{			RESOLVDEBUG(("Skipping question %d at %d\n", j, pos));			i = length_question(packet, pos);			RESOLVDEBUG(("Length of question %d is %d\n", j, i));			if (i < 0)				goto again;			pos += i;		}		RESOLVDEBUG(("Decoding answer at pos %d\n", pos));		for (j=0;j<h.ancount;j++)		{			i = decode_answer(packet, pos, &tmpA);			printf("dns_lookup:tmpA.dotted=%p\n",tmpA.dotted);			if (i<0)			{				RESOLVDEBUG(("failed decode %d\n", i));				goto again;			}			/* For all but T_SIG, accept first answer *///                    if (a->atype != T_SIG)//                      break;			//++cg[6/2/2001]: better search of the answers - prefer host address (type 1)			//                answers over other answers if possible.			if(a->atype==0)			{				*a=tmpA;			}else if(tmpA.atype==T_A){				free(a->dotted);				*a=tmpA;			}			if(tmpA.atype==T_A)				break;			if(tmpA.atype==T_SIG)				free(a->dotted);			pos += i;		}		RESOLVDEBUG(("Answer name = |%s|\n", a->dotted));		RESOLVDEBUG(("Answer type = |%d|\n", a->atype));#if USE_UCIP_DIRECT		udpClose(fd);#else		close(fd);#endif		if (outpacket)			*outpacket = packet;		else			free(packet);		printf("dns_lookup (end):a->dotted=%p\n",a->dotted);		return (0);                             /* success! */tryall:		/* if there are other nameservers, give them a go,			otherwise return with error */		variant = 0;		if (retries >= nscount*(searchdomains+1))				goto fail;again:		/* if there are searchdomains, try them or fallback as passed */		if (variant < searchdomains)		{			/* next search */			variant++;		} else {			/* next server, first search */			ns = (ns + 1) % nscount;			variant = 0;		}}fail:	if (fd != -1)#if USE_UCIP_DIRECT		udpClose(fd);#else		close(fd);#endif	if (lookup)		free(lookup);	if (packet)		free(packet);	return -1;}#endif#ifdef L_resolveaddressint resolve_address(const char *address, int nscount,        char **nsip, struct in_addr *in){        unsigned char *packet;        struct resolv_answer a;        char temp[256];        int i;        int nest = 0;        if (!address || !in)                return -1;        strncpy(temp, address, sizeof(temp));        for (;;) {                i = dns_lookup(temp, T_A, nscount, nsip, &packet, &a);								printf("resolve_address: a.dotted=%p\n",a.dotted);                if (i < 0)                        return -1;                free(a.dotted);                if (a.atype == T_CNAME) {               /* CNAME */                        i = decode_dotted(packet, a.rdoffset, temp, sizeof(temp));                        free(packet);                        if (i < 0)                                return -1;                        if (++nest > MAX_RECURSE)                                return -1;                        continue;                } else if (a.atype == T_A) {    /* ADDRESS */                        free(packet);                        break;                } else {                        free(packet);                        return -1;                }        }        if (in)            memcpy(in, a.rdata, INADDRSZ); /* IPv4 T_A */        return 0;}#endif#ifdef L_resolvemailboxint resolve_mailbox(const char *address,                                        int nscount, char **nsip, struct in_addr *in){        struct resolv_answer a;        unsigned char *packet;        char temp[256];        int nest = 0;        int i;        if (!address || !in)                return -1;        /* look up mail exchange */        i = dns_lookup(address, T_MX, nscount, nsip, &packet, &a);        strncpy(temp, address, sizeof(temp));        if (i >= 0) {                i = decode_dotted(packet, a.rdoffset+2, temp, sizeof(temp));                free(packet);        }        for (;;) {                i = dns_lookup(temp, T_A, nscount, nsip, &packet, &a);                if (i < 0)                        return -1;                free(a.dotted);                if (a.atype == T_CNAME) {               /* CNAME */                        i = decode_dotted(packet, a.rdoffset, temp, sizeof(temp));                        free(packet);                        if (i < 0)                                return i;                        if (++nest > MAX_RECURSE)                                return -1;                        continue;                } else if (a.atype == T_A) {    /* ADDRESS */                        free(packet);                        break;                } else {                        free(packet);                        return -1;                }        }        if (in)                memcpy(in, a.rdata, INADDRSZ); /* IPv4 */        return 0;}#endifextern int nameservers;extern char * nameserver[MAX_SERVERS];extern int searchdomains;extern const char * searchdomain[MAX_SEARCH];#ifdef L_opennameservers#if (USE_RESOLV_CONF==0)/** Number of nameservers to search */int nameservers=2;/** Array of nameserver address's */char * nameserverList[]={	"195.184.228.6",	"195.184.228.7"};char *nameserver[MAX_SERVERS];/** Number of search domains */int searchdomains=1;/** Array of search domains */const char *searchdomain[]={	"data-uncertain.co.uk"};#elseint nameservers=0;const char * nameserver[MAX_SERVERS];int searchdomains=0;const char * searchdomain[MAX_SEARCH];#endif#if USE_RESOLV_CONF#error "Reading the nameservers from /etc/resolv.conf doesn't work as I've not included cfgfind() in the build yet."int open_nameservers(){        FILE *fp;        int i;        if (nameservers > 0)            return 0;	RESOLVDEBUG(("open_nameservers()  [using /etc/resolv.conf]\n"));	// Nameservers from configuration file        if ((fp = fopen("/etc/resolv.conf", "r"))) {		if (0 != (arg = cfgfind(fp, "nameserver"))) {                        for (i=1; arg[i] && nameservers <= MAX_SERVERS; i++) {                                nameserver[nameservers++] = strdup(arg[i]);                                RESOLVDEBUG(("adding nameserver %s\n",arg[i]));                        }                }                if (0 != (arg = cfgfind(fp, "search"))) {                        for (i=1; arg[i] && searchdomains <= MAX_SEARCH; i++) {                                searchdomain[searchdomains++] = strdup(arg[i]);                                RESOLVDEBUG(("adding search %s\n",arg[i]));                        }                }                fclose(fp);        } else {            RESOLVDEBUG(("failed to open %s\n", "resolv.conf"));        }        RESOLVDEBUG(("nameservers = %d\n", nameservers));	return 0;}#endif#endif#ifdef L_closenameserversvoid close_nameservers(void){        while (nameservers > 0)                free((void*)nameserver[--nameservers]);}#endif#ifdef L_resolvenameconst char *resolve_name(const char *name, int mailbox){        struct in_addr in;        int i;        /* shortcut: is it a valid IP address to begin with? */        if (inet_aton(name, &in))                return name;#if USE_RESOLV_CONF        open_nameservers();#endif        RESOLVDEBUG(("looking up '%s', mailbox=%d, nameservers=%d\n",                        name, mailbox, nameservers));        if (mailbox)                i = resolve_mailbox(name, nameservers, nameserver, &in);        else                i = resolve_address(name, nameservers, nameserver, &in);        if (i < 0)                return 0;        RESOLVDEBUG(("success = '%s'\n", inet_ntoa(in)));        return inet_ntoa(in);}#endif#include <pthread.h>pthread_mutex_t resolvLock;void resolvInit(void){	pthread_mutex_init(&resolvLock,NULL);	nameservers=2;	nameserver[0]=strdup(nameserverList[0]);	nameserver[1]=strdup(nameserverList[1]);}/** * set nameservers * @param ns1 IP of primary nameserver * @param ns2 IP of secondary nameserver (or NULL if none) */void setNameServer(const char *ns1, const char *ns2){	if(nameserver[0])		free(nameserver[0]);	if(nameserver[1])		free(nameserver[1]);	nameservers=0;	if(ns1)	{		nameserver[nameservers]=strdup(ns1);		nameservers++;	}	if(ns2)	{		nameserver[nameservers]=strdup(ns2);		nameservers++;	}}#ifdef L_gethostbynametypedef struct {	char *name;	struct in_addr in;  struct in_addr *addr_list[2];	struct hostent h;} DNS_CACHE;#define DNS_CACHE_MAX 10static int cachePtr=0;static DNS_CACHE cache[DNS_CACHE_MAX]={	{NULL},	{NULL},	{NULL},	{NULL},	{NULL},	{NULL},	{NULL},	{NULL},	{NULL},	{NULL}};struct hostent *gethostbyname(const char *name){	char namebuf[512];	struct hostent *rtn=NULL;	unsigned char *packet;	struct resolv_answer a;	int i;	int nest = 0;	// do dns cache lookup...	for(i=0; i<DNS_CACHE_MAX; i++)	{		if((cache[i].name)&&(!strcmp(name,cache[i].name)))		{			printf("gethostbyname(%s): got cached address in slot %d\n",name,i);			return &cache[i].h;		}	}	printf("gethostbyname(%s): uncached, requesting from DNS\n",name);#ifdef ISS_OS	pthread_mutex_lock(&resolvLock);#endif	RESOLVDEBUG(("gethostbyname()\n"));#if USE_RESOLV_CONF	open_nameservers();#endif	if (!name)	{		RESOLVDEBUG(("no name\n"));#ifdef ISS_OS		pthread_mutex_unlock(&resolvLock);#endif		return 0;	}	memset(&cache[cachePtr].h, 0, sizeof(cache[cachePtr].h));	cache[cachePtr].addr_list[0] = &cache[cachePtr].in;	cache[cachePtr].addr_list[1] = 0;	strcpy(namebuf, name);	for (;;)	{		i = dns_lookup(namebuf, 1, nameservers, nameserver, &packet, &a);		if (i < 0)		{#ifdef ISS_OS			pthread_mutex_unlock(&resolvLock);#endif			return 0;		}		strncpy(namebuf, a.dotted, strlen(a.dotted));		printf("gethostbyname: a.dotted=%p\n",a);		free(a.dotted);		if (a.atype == T_CNAME)               /* CNAME */		{			i = decode_dotted(packet, a.rdoffset, namebuf, sizeof(namebuf));			free(packet);			if (i < 0)			{#ifdef ISS_OS				pthread_mutex_unlock(&resolvLock);#endif				return 0;			}			if (++nest > MAX_RECURSE)			{#ifdef ISS_OS					pthread_mutex_unlock(&resolvLock);#endif				return 0;			}			continue;		} else if (a.atype == T_A) {    /* ADDRESS */			memcpy(&cache[cachePtr].in, a.rdata, sizeof(cache[cachePtr].in));			printf("dns lookup, got addres for %s, caching in slot %d\n",name,cachePtr);			if(cache[cachePtr].name)				free(cache[cachePtr].name);			cache[cachePtr].name=strdup(name);			cache[cachePtr].h.h_name = cache[cachePtr].name;			cache[cachePtr].h.h_addrtype = AF_INET;			cache[cachePtr].h.h_length = sizeof(cache[cachePtr].in);			cache[cachePtr].h.h_addr_list = (char **) cache[cachePtr].addr_list;			rtn=&cache[cachePtr].h;			free(packet);			if(++cachePtr==DNS_CACHE_MAX)				cachePtr=0;			break;		} else {			free(packet);#ifdef ISS_OS			pthread_mutex_unlock(&resolvLock);#endif			return 0;		}	}#ifdef ISS_OS	pthread_mutex_unlock(&resolvLock);#endif	return rtn;}#endif#ifdef L_gethostbyaddrstruct hostent *gethostbyaddr(const char *addr, size_t len, int type){        static struct hostent h;        static char namebuf[256];        static struct in_addr in;        static struct in_addr *addr_list[2];        unsigned char *packet;        struct resolv_answer a;        int i;        int nest = 0;        if (!addr || (len != sizeof(in)) || (type != AF_INET))                return 0;        memcpy(&in.s_addr, addr, len);#if USE_RESOLV_CONF	open_nameservers();#endif        memset(&h, 0, sizeof(h));        addr_list[0] = &in;        addr_list[1] = 0;        sprintf(namebuf, "%d.%d.%d.%d.in-addr.arpa",                        (in.s_addr >> 24) & 0xff,                        (in.s_addr >> 16) & 0xff,                        (in.s_addr >> 8) & 0xff, (in.s_addr >> 0) & 0xff);        for (;;) {                i = dns_lookup(namebuf, T_PTR, nameservers, nameserver, &packet, &a);                if (i < 0)                        return 0;                strncpy(namebuf, a.dotted, sizeof(namebuf));                free(a.dotted);                if (a.atype == T_CNAME) {               /* CNAME */                        i = decode_dotted(packet, a.rdoffset, namebuf, sizeof(namebuf));                        free(packet);                        if (i < 0)                                return 0;                        if (++nest > MAX_RECURSE)                                return 0;                        continue;                } else if (a.atype == T_PTR) {  /* ADDRESS */                        i = decode_dotted(packet, a.rdoffset, namebuf, sizeof(namebuf));                        free(packet);                        h.h_name = namebuf;                        h.h_addrtype = AF_INET;                        h.h_length = sizeof(in);                        h.h_addr_list = (char **) addr_list;                        break;                } else {                        free(packet);                        return 0;                }        }        return &h;}#endif

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丰满亚洲少妇av| 久久久久国产精品麻豆ai换脸| 国产精品原创巨作av| 伊人婷婷欧美激情| 国产精品久久一卡二卡| 国产区在线观看成人精品| 日韩精品中文字幕一区| 欧美日韩一本到| 一本色道久久加勒比精品| 高清免费成人av| 国产精品一区二区你懂的| 精东粉嫩av免费一区二区三区| 婷婷成人激情在线网| 午夜精品一区二区三区三上悠亚| 一区二区三区四区国产精品| 亚洲国产精品精华液ab| 久久久美女毛片| 久久久久久麻豆| 中文字幕不卡在线观看| 亚洲欧美在线视频观看| 亚洲精品videosex极品| 亚洲丰满少妇videoshd| 免费看黄色91| 国产乱国产乱300精品| 成人激情开心网| 欧美主播一区二区三区| 欧美一区日韩一区| 国产视频911| 亚洲欧美一区二区三区极速播放| 亚洲一区影音先锋| 久久精品国产一区二区三| 国产乱码精品一区二区三区五月婷 | 欧美二区三区91| 欧美性色综合网| 欧美三级日韩三级| 欧美一级久久久| 国产欧美精品区一区二区三区| 亚洲精品国产成人久久av盗摄| 午夜a成v人精品| 国产一区二区在线视频| 91在线观看地址| 91精品国产欧美日韩| 国产日韩v精品一区二区| 亚洲综合丁香婷婷六月香| 日本vs亚洲vs韩国一区三区| 丁香啪啪综合成人亚洲小说| 欧美中文字幕一区二区三区亚洲| 日韩精品自拍偷拍| 亚洲男人电影天堂| 精品一区二区久久| 91国偷自产一区二区三区观看| 日韩一级黄色大片| 亚洲天堂网中文字| 毛片av中文字幕一区二区| gogo大胆日本视频一区| 欧美一级久久久| 亚洲欧美国产77777| 久草热8精品视频在线观看| 色婷婷综合激情| 久久精品一区四区| 丝袜国产日韩另类美女| 成人自拍视频在线| 欧美一区二区三区视频在线| ●精品国产综合乱码久久久久| 日韩国产精品91| 色狠狠av一区二区三区| 久久精品亚洲精品国产欧美 | 国产精品一色哟哟哟| 色国产精品一区在线观看| 久久女同性恋中文字幕| 视频一区二区三区在线| 99久久精品免费看| 久久久久久久精| 青草av.久久免费一区| 91国偷自产一区二区三区成为亚洲经典 | 蜜乳av一区二区三区| 91国偷自产一区二区三区观看 | 国产精品免费久久| 蓝色福利精品导航| 欧美日韩中文字幕精品| 自拍偷在线精品自拍偷无码专区| 久久99精品国产麻豆婷婷洗澡| 欧美综合欧美视频| 综合激情网...| 国产成人在线视频免费播放| 欧美一级久久久| 日本不卡高清视频| 欧美久久一区二区| 亚洲一区二区在线播放相泽| 91偷拍与自偷拍精品| 国产精品伦一区| 成人免费av资源| 国产视频一区在线播放| 国内精品久久久久影院薰衣草| 91精品国产高清一区二区三区| 亚洲图片欧美综合| 色哟哟一区二区在线观看| 1区2区3区国产精品| 北条麻妃国产九九精品视频| 国产片一区二区| 成人性生交大片免费看视频在线 | 粉嫩高潮美女一区二区三区| 精品va天堂亚洲国产| 经典三级在线一区| 精品国产一区二区三区不卡| 美腿丝袜亚洲色图| 精品美女一区二区| 韩国av一区二区三区| 26uuu成人网一区二区三区| 久久se精品一区精品二区| 精品国产一区二区亚洲人成毛片| 久久er99热精品一区二区| 精品久久久三级丝袜| 国产一区二区在线看| 国产色一区二区| 9久草视频在线视频精品| 综合久久给合久久狠狠狠97色| 91捆绑美女网站| 亚洲国产色一区| 91麻豆精品久久久久蜜臀| 免费观看一级特黄欧美大片| 日韩精品一区二区三区三区免费| 精品一区二区三区影院在线午夜 | 亚洲妇熟xx妇色黄| 日韩精品一区二区三区在线| 经典三级一区二区| 国产精品久久午夜| 在线观看免费一区| 日韩精品91亚洲二区在线观看 | 青青草伊人久久| 久久亚洲精华国产精华液 | 91成人在线精品| 午夜欧美在线一二页| 欧美变态tickle挠乳网站| 国产精品一级二级三级| 亚洲人成网站色在线观看| 欧美视频精品在线观看| 久草中文综合在线| 综合av第一页| 欧美一区三区四区| 国产成人精品aa毛片| 伊人一区二区三区| 日韩免费高清视频| 成人动漫中文字幕| 亚洲国产cao| 2023国产精华国产精品| 一本久久a久久精品亚洲| 美女一区二区三区在线观看| 久久精品一二三| 欧美三级电影精品| 国产成人av自拍| 午夜精品久久久久久不卡8050| 久久婷婷国产综合精品青草| 色琪琪一区二区三区亚洲区| 美女免费视频一区二区| 成人免费在线播放视频| 欧美成人三级电影在线| 色综合久久久久久久久| 久久99国产精品免费| 一区二区三区四区乱视频| 久久综合久久鬼色中文字| 欧美在线短视频| 国产精品一二三四区| 丝袜亚洲另类欧美综合| 亚洲欧洲精品一区二区三区不卡| 欧美一区二区三区在线观看视频| av在线不卡观看免费观看| 美女网站色91| 亚洲一区二区三区四区在线| 国产欧美日韩另类视频免费观看| 91.com视频| 91国模大尺度私拍在线视频| 国产成人自拍在线| 久久精品国产成人一区二区三区| 亚洲人成影院在线观看| 国产亚洲综合性久久久影院| 欧美日产国产精品| 一本色道久久综合精品竹菊| 国产成人日日夜夜| 乱一区二区av| 日韩精品成人一区二区三区| 一区二区三区在线免费播放| 国产精品美女久久久久久2018 | 中文字幕日韩欧美一区二区三区| 欧美成人r级一区二区三区| 在线观看视频一区| 91小视频免费看| 国产suv一区二区三区88区| 久久精工是国产品牌吗| 性久久久久久久久久久久| 亚洲伦理在线精品| 1区2区3区精品视频| 欧美国产在线观看| 欧美激情一区二区在线| 久久综合色综合88| 日韩你懂的在线观看| 日韩视频在线观看一区二区| 在线不卡中文字幕| 欧美美女一区二区在线观看| 欧美午夜免费电影|