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

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

?? inet_cidr_pton.c

?? package of develop dns
?? C
字號:
/* * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") * Copyright (c) 1998,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(LIBC_SCCS) && !defined(lint)static const char rcsid[] = "$Id: inet_cidr_pton.c,v 1.2.2.1.8.2 2004/03/17 00:29:46 marka Exp $";#endif#include "port_before.h"#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/nameser.h>#include <arpa/inet.h>#include <isc/assertions.h>#include <ctype.h>#include <errno.h>#include <stdio.h>#include <string.h>#include <stdlib.h>#include "port_after.h"#ifdef SPRINTF_CHAR# define SPRINTF(x) strlen(sprintf/**/x)#else# define SPRINTF(x) ((size_t)sprintf x)#endifstatic int	inet_cidr_pton_ipv4 __P((const char *src, u_char *dst,					 int *bits, int ipv6));static int	inet_cidr_pton_ipv6 __P((const char *src, u_char *dst,					 int *bits));static int	getbits(const char *, int ipv6);/* * int * inet_cidr_pton(af, src, dst, *bits) *	convert network address from presentation to network format. *	accepts inet_pton()'s input for this "af" plus trailing "/CIDR". *	"dst" is assumed large enough for its "af".  "bits" is set to the *	/CIDR prefix length, which can have defaults (like /32 for IPv4). * return: *	-1 if an error occurred (inspect errno; ENOENT means bad format). *	0 if successful conversion occurred. * note: *	192.5.5.1/28 has a nonzero host part, which means it isn't a network *	as called for by inet_net_pton() but it can be a host address with *	an included netmask. * author: *	Paul Vixie (ISC), October 1998 */intinet_cidr_pton(int af, const char *src, void *dst, int *bits) {	switch (af) {	case AF_INET:		return (inet_cidr_pton_ipv4(src, dst, bits, 0));	case AF_INET6:		return (inet_cidr_pton_ipv6(src, dst, bits));	default:		errno = EAFNOSUPPORT;		return (-1);	}}static const char digits[] = "0123456789";static intinet_cidr_pton_ipv4(const char *src, u_char *dst, int *pbits, int ipv6) {	const u_char *odst = dst;	int n, ch, tmp, bits;	size_t size = 4;	/* Get the mantissa. */	while (ch = *src++, (isascii(ch) && isdigit(ch))) {		tmp = 0;		do {			n = strchr(digits, ch) - digits;			INSIST(n >= 0 && n <= 9);			tmp *= 10;			tmp += n;			if (tmp > 255)				goto enoent;		} while ((ch = *src++) != '\0' && isascii(ch) && isdigit(ch));		if (size-- == 0U)			goto emsgsize;		*dst++ = (u_char) tmp;		if (ch == '\0' || ch == '/')			break;		if (ch != '.')			goto enoent;	}	/* Get the prefix length if any. */	bits = -1;	if (ch == '/' && dst > odst) {		bits = getbits(src, ipv6);		if (bits == -2)			goto enoent;	} else if (ch != '\0')		goto enoent;	/* Prefix length can default to /32 only if all four octets spec'd. */	if (bits == -1) {		if (dst - odst == 4)			bits = ipv6 ? 128 : 32;		else			goto enoent;	}	/* If nothing was written to the destination, we found no address. */	if (dst == odst)		goto enoent;	/* If prefix length overspecifies mantissa, life is bad. */	if (((bits - (ipv6 ? 96 : 0)) / 8) > (dst - odst))		goto enoent;	/* Extend address to four octets. */	while (size-- > 0U)		*dst++ = 0;	*pbits = bits;	return (0); enoent:	errno = ENOENT;	return (-1); emsgsize:	errno = EMSGSIZE;	return (-1);}static intinet_cidr_pton_ipv6(const char *src, u_char *dst, int *pbits) {	static const char xdigits_l[] = "0123456789abcdef",			  xdigits_u[] = "0123456789ABCDEF";	u_char tmp[NS_IN6ADDRSZ], *tp, *endp, *colonp;	const char *xdigits, *curtok;	int ch, saw_xdigit;	u_int val;	int bits;	memset((tp = tmp), '\0', NS_IN6ADDRSZ);	endp = tp + NS_IN6ADDRSZ;	colonp = NULL;	/* Leading :: requires some special handling. */	if (*src == ':')		if (*++src != ':')			return (0);	curtok = src;	saw_xdigit = 0;	val = 0;	bits = -1;	while ((ch = *src++) != '\0') {		const char *pch;		if ((pch = strchr((xdigits = xdigits_l), ch)) == NULL)			pch = strchr((xdigits = xdigits_u), ch);		if (pch != NULL) {			val <<= 4;			val |= (pch - xdigits);			if (val > 0xffff)				return (0);			saw_xdigit = 1;			continue;		}		if (ch == ':') {			curtok = src;			if (!saw_xdigit) {				if (colonp)					return (0);				colonp = tp;				continue;			} else if (*src == '\0') {				return (0);			}			if (tp + NS_INT16SZ > endp)				return (0);			*tp++ = (u_char) (val >> 8) & 0xff;			*tp++ = (u_char) val & 0xff;			saw_xdigit = 0;			val = 0;			continue;		}		if (ch == '.' && ((tp + NS_INADDRSZ) <= endp) &&		    inet_cidr_pton_ipv4(curtok, tp, &bits, 1) == 0) {			tp += NS_INADDRSZ;			saw_xdigit = 0;			break;	/* '\0' was seen by inet_pton4(). */		}		if (ch == '/') {			bits = getbits(src, 1);			if (bits == -2)				goto enoent;			break;		}		goto enoent;	}	if (saw_xdigit) {		if (tp + NS_INT16SZ > endp)			goto emsgsize;		*tp++ = (u_char) (val >> 8) & 0xff;		*tp++ = (u_char) val & 0xff;	}	if (colonp != NULL) {		/*		 * Since some memmove()'s erroneously fail to handle		 * overlapping regions, we'll do the shift by hand.		 */		const int n = tp - colonp;		int i;		if (tp == endp)			goto enoent;		for (i = 1; i <= n; i++) {			endp[- i] = colonp[n - i];			colonp[n - i] = 0;		}		tp = endp;	}	memcpy(dst, tmp, NS_IN6ADDRSZ);	*pbits = bits;	return (0); enoent:	errno = ENOENT;	return (-1); emsgsize:	errno = EMSGSIZE;	return (-1);}static intgetbits(const char *src, int ipv6) {	int bits = 0;	char *cp, ch;		if (*src == '\0')			/* syntax */		return (-2);	do {		ch = *src++;		cp = strchr(digits, ch);		if (cp == NULL)			/* syntax */			return (-2);		bits *= 10;		bits += cp - digits;		if (bits == 0 && *src != '\0')	/* no leading zeros */			return (-2);		if (bits > (ipv6 ? 128 : 32))	/* range error */			return (-2);	} while (*src != '\0');	return (bits);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区精品| 色猫猫国产区一区二在线视频| 91精品麻豆日日躁夜夜躁| 偷窥少妇高潮呻吟av久久免费| 欧美性三三影院| 午夜国产精品一区| 欧美sm美女调教| 国产激情视频一区二区三区欧美| 国产精品全国免费观看高清| 91视视频在线观看入口直接观看www | 喷水一区二区三区| 91精品欧美一区二区三区综合在| 美女在线视频一区| 国产精品青草综合久久久久99| 91视频在线观看| 日本免费新一区视频| 国产亚洲精品aa午夜观看| 成人精品一区二区三区四区| 曰韩精品一区二区| 69成人精品免费视频| 激情欧美一区二区三区在线观看| 国产欧美综合在线观看第十页| 99精品国产视频| 日韩电影在线看| 久久精品亚洲国产奇米99| 91麻豆高清视频| 麻豆91在线观看| 亚洲三级小视频| 日韩亚洲欧美一区| 不卡一区二区在线| 日本一区中文字幕 | 国产精品久久久久永久免费观看| 色偷偷88欧美精品久久久| 麻豆国产精品官网| 亚洲乱码日产精品bd| 欧美一二三区在线观看| 91免费看`日韩一区二区| 久久99日本精品| 亚洲激情自拍视频| 国产日本欧洲亚洲| 欧美蜜桃一区二区三区| av不卡免费在线观看| 奇米精品一区二区三区在线观看一 | 久久夜色精品一区| 欧美性生活影院| 国产91对白在线观看九色| 婷婷综合五月天| 中文字幕亚洲成人| 久久一区二区三区四区| 欧美丰满一区二区免费视频| 99re亚洲国产精品| 国产精品主播直播| 免费观看日韩av| 性做久久久久久免费观看欧美| 国产精品色哟哟网站| ww久久中文字幕| 日韩欧美国产一区在线观看| 在线精品亚洲一区二区不卡| 成人黄色一级视频| 国产大陆精品国产| 国产伦精品一区二区三区视频青涩 | 国产精品18久久久久| 麻豆精品一二三| 日韩福利电影在线| 亚洲成人精品影院| 亚洲成人免费观看| 亚洲国产sm捆绑调教视频 | 亚洲激情综合网| 亚洲欧美日韩国产中文在线| 国产精品女同互慰在线看| 久久久99精品免费观看| 26uuu另类欧美| ww亚洲ww在线观看国产| 26uuu色噜噜精品一区二区| 精品欧美一区二区久久| 精品久久久久久无| 久久伊人蜜桃av一区二区| 亚洲精品一区二区三区99| 精品av久久707| 精品不卡在线视频| 久久精品夜色噜噜亚洲aⅴ| 久久久综合精品| 日本一区二区成人在线| 中文av一区特黄| 亚洲色图.com| 亚洲国产va精品久久久不卡综合 | 久久精品欧美一区二区三区不卡| 2021中文字幕一区亚洲| 国产人妖乱国产精品人妖| 国产精品国产精品国产专区不蜜| 中文欧美字幕免费| 亚洲男同1069视频| 亚洲成人av免费| 久久狠狠亚洲综合| 国产成人av电影在线观看| 99国产精品国产精品久久| 欧洲日韩一区二区三区| 日韩一区二区视频| 久久久久亚洲综合| 日韩毛片精品高清免费| 亚洲成人先锋电影| 精品一区二区三区欧美| 国产 日韩 欧美大片| 日本大香伊一区二区三区| 91精品在线麻豆| 久久久噜噜噜久久人人看 | 在线观看国产91| 欧美一区二区在线不卡| 国产午夜精品在线观看| 亚洲精品美腿丝袜| 蜜桃在线一区二区三区| 成人av资源下载| 91麻豆精品国产自产在线| 久久久蜜桃精品| 亚洲成人av一区二区三区| 国产精品中文有码| 欧美在线视频你懂得| 精品黑人一区二区三区久久| 亚洲欧美视频在线观看视频| 日本强好片久久久久久aaa| 成人中文字幕在线| 337p亚洲精品色噜噜狠狠| 中文字幕二三区不卡| 日本午夜一区二区| 99久久国产免费看| 欧美成人精品1314www| 亚洲精品第一国产综合野| 国产裸体歌舞团一区二区| 欧美日韩综合在线| 国产精品久线在线观看| 久久精品国产一区二区三 | 国产精品私人自拍| 蜜臀91精品一区二区三区| 色婷婷亚洲婷婷| 国产亚洲成av人在线观看导航 | 青草国产精品久久久久久| 成人av在线播放网址| 精品国产网站在线观看| 亚洲一区二区三区自拍| 成人黄页在线观看| 久久亚洲综合色一区二区三区| 亚洲成人动漫一区| 91啪在线观看| 国产精品国产三级国产a| 国产在线一区二区综合免费视频| 欧美精选在线播放| 夜色激情一区二区| 97se亚洲国产综合自在线 | 白白色 亚洲乱淫| 久久久精品中文字幕麻豆发布| 天堂久久久久va久久久久| 色婷婷一区二区| 亚洲精品国产一区二区三区四区在线| 国产尤物一区二区| 精品国产乱码久久久久久牛牛| 亚洲1区2区3区视频| 色婷婷久久一区二区三区麻豆| 日本一区二区三区四区| 国产在线不卡一区| 精品黑人一区二区三区久久| 日本不卡123| 欧美一区二区三区男人的天堂| 亚洲午夜久久久| 欧美三级电影精品| 亚洲电影在线播放| 精品视频在线看| 亚洲成人黄色影院| 在线播放亚洲一区| 日韩高清不卡在线| 欧美大肚乱孕交hd孕妇| 美女高潮久久久| 精品成人佐山爱一区二区| 国产专区欧美精品| 国产日产亚洲精品系列| 成人午夜av在线| 亚洲男同1069视频| 欧美三级电影网| 免费成人在线网站| 精品sm捆绑视频| 成人高清视频在线| 亚洲免费观看视频| 欧美日韩国产天堂| 美女脱光内衣内裤视频久久影院| 精品国产免费人成在线观看| 国产在线播精品第三| 成人免费在线视频| 欧美日本在线一区| 精品一区二区在线观看| 欧美国产一区在线| 日本韩国欧美在线| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美大片日本大片免费观看| 国产成人啪免费观看软件| 亚洲人成伊人成综合网小说| 欧美三区在线观看| 伦理电影国产精品| 欧美高清在线视频| 欧美日韩精品一二三区| 国产美女在线观看一区| 一卡二卡三卡日韩欧美|