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

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

?? getaddrinfo.c

?? 數據鏈路層的數據截取,主要用于各種型號網卡數據流的獲取
?? C
?? 第 1 頁 / 共 2 頁
字號:
		return 0;	hp = gethostbyname(hostname);#ifdef HAVE_H_ERRNO	h_error = h_errno;#else	h_error = EINVAL;#endif#endif /*HAVE_GETHOSTBYNAME2*/#endif /*USE_GETIPNODEBY*/	if (hp == NULL) {		switch (h_error) {		case HOST_NOT_FOUND:		case NO_DATA:			error = EAI_NODATA;			break;		case TRY_AGAIN:			error = EAI_AGAIN;			break;		case NO_RECOVERY:		case NETDB_INTERNAL:		default:			error = EAI_FAIL;			break;		}	} else if ((hp->h_name == NULL) || (hp->h_name[0] == 0)			|| (hp->h_addr_list[0] == NULL)) {#ifdef USE_GETIPNODEBY		freehostent(hp);#endif		hp = NULL;		error = EAI_FAIL;	}	if (hp == NULL)		goto free;#ifdef USE_GETIPNODEBY	aplist = hp->h_addr_list;#else	/*	 * hp will be overwritten if we use gethostbyname2().	 * always deep copy for simplification.	 */	for (naddrs = 0; hp->h_addr_list[naddrs] != NULL; naddrs++)		;	naddrs++;	aplist = (char **)malloc(sizeof(aplist[0]) * naddrs);	apbuf = (char *)malloc(hp->h_length * naddrs);	if (aplist == NULL || apbuf == NULL) {		error = EAI_MEMORY;		goto free;	}	memset(aplist, 0, sizeof(aplist[0]) * naddrs);	for (i = 0; i < naddrs; i++) {		if (hp->h_addr_list[i] == NULL) {			aplist[i] = NULL;			continue;		}		memcpy(&apbuf[i * hp->h_length], hp->h_addr_list[i],			hp->h_length);		aplist[i] = &apbuf[i * hp->h_length];	}#endif	for (i = 0; aplist[i] != NULL; i++) {		af = hp->h_addrtype;		ap = aplist[i];#ifdef AF_INET6		if (af == AF_INET6		 && IN6_IS_ADDR_V4MAPPED((struct in6_addr *)ap)) {			af = AF_INET;			ap = ap + sizeof(struct in6_addr)				- sizeof(struct in_addr);		}#endif		if (af != pai->ai_family)			continue;		if ((pai->ai_flags & AI_CANONNAME) == 0) {			GET_AI(cur->ai_next, afd, ap);			GET_PORT(cur->ai_next, servname);		} else {			/*			 * if AI_CANONNAME and if reverse lookup			 * fail, return ai anyway to pacify			 * calling application.			 *			 * XXX getaddrinfo() is a name->address			 * translation function, and it looks			 * strange that we do addr->name			 * translation here.			 */			get_name(ap, afd, &cur->ai_next,				ap, pai, servname);		}		while (cur && cur->ai_next)			cur = cur->ai_next;	}	*res = sentinel.ai_next;	return 0;free:#ifdef USE_GETIPNODEBY	if (hp)		freehostent(hp);#endif	if (aplist)		free(aplist);	if (apbuf)		free(apbuf);	if (sentinel.ai_next)		freeaddrinfo(sentinel.ai_next);	return error;}/* * hostname == NULL. * passive socket -> anyaddr (0.0.0.0 or ::) * non-passive socket -> localhost (127.0.0.1 or ::1) */static intexplore_null(pai, hostname, servname, res)	const struct addrinfo *pai;	const char *hostname;	const char *servname;	struct addrinfo **res;{	int s;	const struct afd *afd;	struct addrinfo *cur;	struct addrinfo sentinel;	int error;	*res = NULL;	sentinel.ai_next = NULL;	cur = &sentinel;	/*	 * filter out AFs that are not supported by the kernel	 * XXX errno?	 */	s = socket(pai->ai_family, SOCK_DGRAM, 0);	if (s < 0) {		if (errno != EMFILE)			return 0;	} else		close(s);	/*	 * if the servname does not match socktype/protocol, ignore it.	 */	if (get_portmatch(pai, servname) != 0)		return 0;	afd = find_afd(pai->ai_family);	if (pai->ai_flags & AI_PASSIVE) {		GET_AI(cur->ai_next, afd, afd->a_addrany);		/* xxx meaningless?		 * GET_CANONNAME(cur->ai_next, "anyaddr");		 */		GET_PORT(cur->ai_next, servname);	} else {		GET_AI(cur->ai_next, afd, afd->a_loopback);		/* xxx meaningless?		 * GET_CANONNAME(cur->ai_next, "localhost");		 */		GET_PORT(cur->ai_next, servname);	}	cur = cur->ai_next;	*res = sentinel.ai_next;	return 0;free:	if (sentinel.ai_next)		freeaddrinfo(sentinel.ai_next);	return error;}/* * numeric hostname */static intexplore_numeric(pai, hostname, servname, res)	const struct addrinfo *pai;	const char *hostname;	const char *servname;	struct addrinfo **res;{	const struct afd *afd;	struct addrinfo *cur;	struct addrinfo sentinel;	int error;	char pton[PTON_MAX];	int flags;	*res = NULL;	sentinel.ai_next = NULL;	cur = &sentinel;	/*	 * if the servname does not match socktype/protocol, ignore it.	 */	if (get_portmatch(pai, servname) != 0)		return 0;	afd = find_afd(pai->ai_family);	flags = pai->ai_flags;	if (inet_pton(afd->a_af, hostname, pton) == 1) {		u_int32_t v4a;#ifdef INET6		u_char pfx;#endif		switch (afd->a_af) {		case AF_INET:			v4a = (u_int32_t)ntohl(((struct in_addr *)pton)->s_addr);			if (IN_MULTICAST(v4a) || IN_EXPERIMENTAL(v4a))				flags &= ~AI_CANONNAME;			v4a >>= IN_CLASSA_NSHIFT;			if (v4a == 0 || v4a == IN_LOOPBACKNET)				flags &= ~AI_CANONNAME;			break;#ifdef INET6		case AF_INET6:			pfx = ((struct in6_addr *)pton)->s6_addr[0];			if (pfx == 0 || pfx == 0xfe || pfx == 0xff)				flags &= ~AI_CANONNAME;			break;#endif		}		if (pai->ai_family == afd->a_af ||		    pai->ai_family == PF_UNSPEC /*?*/) {			if ((flags & AI_CANONNAME) == 0) {				GET_AI(cur->ai_next, afd, pton);				GET_PORT(cur->ai_next, servname);			} else {				/*				 * if AI_CANONNAME and if reverse lookup				 * fail, return ai anyway to pacify				 * calling application.				 *				 * XXX getaddrinfo() is a name->address				 * translation function, and it looks				 * strange that we do addr->name				 * translation here.				 */				get_name(pton, afd, &cur->ai_next,					pton, pai, servname);			}			while (cur && cur->ai_next)				cur = cur->ai_next;		} else 			ERR(EAI_FAMILY);	/*xxx*/	}	*res = sentinel.ai_next;	return 0;free:bad:	if (sentinel.ai_next)		freeaddrinfo(sentinel.ai_next);	return error;}/* * numeric hostname with scope */static intexplore_numeric_scope(pai, hostname, servname, res)	const struct addrinfo *pai;	const char *hostname;	const char *servname;	struct addrinfo **res;{#ifndef SCOPE_DELIMITER	return explore_numeric(pai, hostname, servname, res);#else	const struct afd *afd;	struct addrinfo *cur;	int error;	char *cp, *hostname2 = NULL;	int scope;	struct sockaddr_in6 *sin6;	/*	 * if the servname does not match socktype/protocol, ignore it.	 */	if (get_portmatch(pai, servname) != 0)		return 0;	afd = find_afd(pai->ai_family);	if (!afd->a_scoped)		return explore_numeric(pai, hostname, servname, res);	cp = strchr(hostname, SCOPE_DELIMITER);	if (cp == NULL)		return explore_numeric(pai, hostname, servname, res);	/*	 * Handle special case of <scoped_address><delimiter><scope id>	 */	hostname2 = strdup(hostname);	if (hostname2 == NULL)		return EAI_MEMORY;	/* terminate at the delimiter */	hostname2[cp - hostname] = '\0';	cp++;	switch (pai->ai_family) {#ifdef INET6	case AF_INET6:		scope = if_nametoindex(cp);		if (scope == 0) {			free(hostname2);			return (EAI_NONAME);		}		break;#endif	}	error = explore_numeric(pai, hostname2, servname, res);	if (error == 0) {		for (cur = *res; cur; cur = cur->ai_next) {			if (cur->ai_family != AF_INET6)				continue;			sin6 = (struct sockaddr_in6 *)cur->ai_addr;			if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr) ||			    IN6_IS_ADDR_MC_LINKLOCAL(&sin6->sin6_addr))				sin6->sin6_scope_id = scope;		}	}	free(hostname2);	return error;#endif}static intget_name(addr, afd, res, numaddr, pai, servname)	const char *addr;	const struct afd *afd;	struct addrinfo **res;	char *numaddr;	const struct addrinfo *pai;	const char *servname;{	struct hostent *hp = NULL;	struct addrinfo *cur = NULL;	int error = 0;	char *ap = NULL, *cn = NULL;#ifdef USE_GETIPNODEBY	int h_error;	hp = getipnodebyaddr(addr, afd->a_addrlen, afd->a_af, &h_error);#else	hp = gethostbyaddr(addr, afd->a_addrlen, afd->a_af);#endif	if (hp && hp->h_name && hp->h_name[0] && hp->h_addr_list[0]) {#ifdef USE_GETIPNODEBY		GET_AI(cur, afd, hp->h_addr_list[0]);		GET_PORT(cur, servname);		GET_CANONNAME(cur, hp->h_name);#else		/* hp will be damaged if we use gethostbyaddr() */		if ((ap = (char *)malloc(hp->h_length)) == NULL) {			error = EAI_MEMORY;			goto free;		}		memcpy(ap, hp->h_addr_list[0], hp->h_length);		if ((cn = strdup(hp->h_name)) == NULL) {			error = EAI_MEMORY;			goto free;		}		GET_AI(cur, afd, ap);		GET_PORT(cur, servname);		GET_CANONNAME(cur, cn);		free(ap); ap = NULL;		free(cn); cn = NULL;#endif	} else {		GET_AI(cur, afd, numaddr);		GET_PORT(cur, servname);	}	#ifdef USE_GETIPNODEBY	if (hp)		freehostent(hp);#endif	*res = cur;	return SUCCESS; free:	if (cur)		freeaddrinfo(cur);	if (ap)		free(ap);	if (cn)		free(cn);#ifdef USE_GETIPNODEBY	if (hp)		freehostent(hp);#endif	*res = NULL;	return error;}static intget_canonname(pai, ai, str)	const struct addrinfo *pai;	struct addrinfo *ai;	const char *str;{	if ((pai->ai_flags & AI_CANONNAME) != 0) {		ai->ai_canonname = (char *)malloc(strlen(str) + 1);		if (ai->ai_canonname == NULL)			return EAI_MEMORY;		strcpy(ai->ai_canonname, str);	}	return 0;}static struct addrinfo *get_ai(pai, afd, addr)	const struct addrinfo *pai;	const struct afd *afd;	const char *addr;{	char *p;	struct addrinfo *ai;	ai = (struct addrinfo *)malloc(sizeof(struct addrinfo)		+ (afd->a_socklen));	if (ai == NULL)		return NULL;	memcpy(ai, pai, sizeof(struct addrinfo));	ai->ai_addr = (struct sockaddr *)(ai + 1);	memset(ai->ai_addr, 0, afd->a_socklen);#ifdef HAVE_SOCKADDR_SA_LEN	ai->ai_addr->sa_len = afd->a_socklen;#endif	ai->ai_addrlen = afd->a_socklen;	ai->ai_addr->sa_family = ai->ai_family = afd->a_af;	p = (char *)(ai->ai_addr);	memcpy(p + afd->a_off, addr, afd->a_addrlen);	return ai;}static intget_portmatch(ai, servname)	const struct addrinfo *ai;	const char *servname;{	/* get_port does not touch first argument. when matchonly == 1. */	return get_port((struct addrinfo *)ai, servname, 1);}static intget_port(ai, servname, matchonly)	struct addrinfo *ai;	const char *servname;	int matchonly;{	const char *proto;	struct servent *sp;	int port;	int allownumeric;	if (servname == NULL)		return 0;	switch (ai->ai_family) {	case AF_INET:#ifdef AF_INET6	case AF_INET6:#endif		break;	default:		return 0;	}	switch (ai->ai_socktype) {	case SOCK_RAW:		return EAI_SERVICE;	case SOCK_DGRAM:	case SOCK_STREAM:		allownumeric = 1;		break;	case ANY:		allownumeric = 0;		break;	default:		return EAI_SOCKTYPE;	}	if (str_isnumber(servname)) {		if (!allownumeric)			return EAI_SERVICE;		port = htons(atoi(servname));		if (port < 0 || port > 65535)			return EAI_SERVICE;	} else {		switch (ai->ai_socktype) {		case SOCK_DGRAM:			proto = "udp";			break;		case SOCK_STREAM:			proto = "tcp";			break;		default:			proto = NULL;			break;		}		if ((sp = getservbyname(servname, proto)) == NULL)			return EAI_SERVICE;		port = sp->s_port;	}	if (!matchonly) {		switch (ai->ai_family) {		case AF_INET:			((struct sockaddr_in *)ai->ai_addr)->sin_port = port;			break;#ifdef INET6		case AF_INET6:			((struct sockaddr_in6 *)ai->ai_addr)->sin6_port = port;			break;#endif		}	}	return 0;}static const struct afd *find_afd(af)	int af;{	const struct afd *afd;	if (af == PF_UNSPEC)		return NULL;	for (afd = afdl; afd->a_af; afd++) {		if (afd->a_af == af)			return afd;	}	return NULL;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产精品一区二区三区| 国产一区在线看| 91蜜桃在线观看| 亚洲人成网站影音先锋播放| 91在线视频18| 亚洲国产精品久久艾草纯爱| 欧美日韩在线播放三区四区| 日韩成人一区二区| 久久婷婷成人综合色| 成人激情免费视频| 亚洲国产日韩a在线播放性色| 欧美在线一二三四区| 美国精品在线观看| 国产精品麻豆欧美日韩ww| 91精品福利在线| 蜜臀av在线播放一区二区三区| xf在线a精品一区二区视频网站| 不卡欧美aaaaa| 亚洲电影欧美电影有声小说| 日韩你懂的在线播放| 成人av资源下载| 性久久久久久久| 国产亚洲福利社区一区| 欧美图区在线视频| 国产91精品在线观看| 天天免费综合色| 国产女主播视频一区二区| 欧美日韩在线综合| 成人动漫视频在线| 蜜桃av一区二区| 一区二区三区加勒比av| 欧美成人三级在线| 色婷婷久久久久swag精品| 经典三级一区二区| 亚洲综合一区在线| 国产调教视频一区| 国产亚洲综合在线| 在线亚洲精品福利网址导航| 国产在线精品不卡| 日欧美一区二区| 综合欧美亚洲日本| 久久久久久久久久美女| 欧美日本在线一区| 色婷婷综合久久久中文一区二区 | 欧美成人a视频| 一本到不卡免费一区二区| 极品少妇一区二区三区精品视频 | 欧美一区二区不卡视频| bt欧美亚洲午夜电影天堂| 久久精品久久99精品久久| 亚洲激情男女视频| 中文字幕日本不卡| 久久综合狠狠综合久久激情| 欧美精品少妇一区二区三区| 91免费看`日韩一区二区| 日本不卡一区二区三区| 一区二区三区精品视频| 综合精品久久久| 中文字幕在线不卡一区二区三区| 日韩精品一区二区三区在线| 91精品国产一区二区三区蜜臀| 日本国产一区二区| 欧美性欧美巨大黑白大战| 97久久久精品综合88久久| 精品一区二区三区免费视频| 麻豆精品一区二区三区| 日韩电影免费在线看| 午夜精品影院在线观看| 亚洲成人av资源| 午夜精品久久久久久不卡8050| 亚洲va欧美va天堂v国产综合| 亚洲国产视频一区| 午夜精品成人在线视频| 日日夜夜免费精品| 麻豆91在线播放| 久久精品999| 激情综合色播五月| 国产精一品亚洲二区在线视频| 另类小说综合欧美亚洲| 韩国三级在线一区| 粉嫩aⅴ一区二区三区四区五区| 高清在线观看日韩| 99re6这里只有精品视频在线观看| 色www精品视频在线观看| 欧美日韩亚州综合| 欧美一区二区三区在线| 欧美变态tickling挠脚心| 久久久亚洲国产美女国产盗摄| 国产丝袜在线精品| 亚洲日本一区二区| 日日欢夜夜爽一区| 成人少妇影院yyyy| 欧美在线免费视屏| 精品国产免费人成电影在线观看四季| 国产蜜臀av在线一区二区三区| 亚洲欧美色综合| 看片网站欧美日韩| 91视频xxxx| 亚洲精品在线免费播放| 一区二区日韩av| 韩国中文字幕2020精品| 欧洲一区在线观看| 国产欧美精品一区二区色综合 | 不卡一区二区三区四区| 91国产丝袜在线播放| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 久久精品一区四区| 欧美一区二区三区在线看| 国产精品入口麻豆九色| 日本伊人午夜精品| 91麻豆文化传媒在线观看| 精品国产91久久久久久久妲己 | 一区二区三区四区在线免费观看| 奇米色一区二区| 一本大道综合伊人精品热热| 久久日韩精品一区二区五区| 亚洲综合在线第一页| 99视频在线精品| 精品久久久久久无| 蜜臀va亚洲va欧美va天堂| 在线中文字幕一区二区| 国产日韩欧美不卡在线| 蜜臀91精品一区二区三区| 欧美在线你懂的| 亚洲免费在线播放| 99精品国产91久久久久久 | 不卡的看片网站| 精品久久久久久无| 天堂蜜桃一区二区三区| 欧洲一区二区三区免费视频| 欧美激情中文字幕一区二区| 蜜臀国产一区二区三区在线播放 | 日韩电影免费在线看| 成人精品国产福利| 日本一二三不卡| 国产成人在线视频播放| 久久免费的精品国产v∧| 午夜在线成人av| 欧美日韩不卡视频| 亚洲va欧美va人人爽| 欧美亚洲综合网| 国产精品卡一卡二卡三| 成人av动漫在线| 亚洲啪啪综合av一区二区三区| 成人免费av在线| 亚洲欧美激情视频在线观看一区二区三区| 成人午夜大片免费观看| 国产精品丝袜久久久久久app| 波多野结衣中文字幕一区二区三区 | 26uuu精品一区二区在线观看| 精品在线观看视频| 久久久综合视频| 懂色av中文字幕一区二区三区| 亚洲国产精品v| 一本色道**综合亚洲精品蜜桃冫| 一区二区三区欧美| 91精品国产日韩91久久久久久| 九九热在线视频观看这里只有精品| 久久综合久久久久88| 99在线热播精品免费| 99久久精品国产网站| 亚洲精品成人少妇| 日韩免费高清av| 成人av午夜电影| 午夜天堂影视香蕉久久| 久久午夜国产精品| 色老汉av一区二区三区| 免费亚洲电影在线| 久久久久久免费毛片精品| av亚洲精华国产精华精华| 亚洲电影一级黄| 久久久国产午夜精品| 欧美综合一区二区三区| 久久精品久久综合| 成人免费一区二区三区在线观看| 欧美精品三级日韩久久| 国产精品正在播放| 自拍偷自拍亚洲精品播放| 在线综合+亚洲+欧美中文字幕| 国产福利一区在线| 亚洲成av人片一区二区梦乃| 日韩精品一区二区在线| va亚洲va日韩不卡在线观看| 三级欧美韩日大片在线看| 国产精品久久久久精k8| 欧美电影免费观看高清完整版在 | 天堂午夜影视日韩欧美一区二区| 亚洲精品一区二区三区香蕉| 色噜噜久久综合| 国产伦精品一区二区三区免费 | 国产精品天干天干在线综合| 欧美日韩国产经典色站一区二区三区| 久久成人18免费观看| 一级精品视频在线观看宜春院 | 国产精品一区二区91| 午夜影院在线观看欧美| 亚洲激情男女视频| 中文字幕亚洲成人| 国产拍欧美日韩视频二区| 欧美一区二区三区免费大片|