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

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

?? unp.c

?? TCP/IP商品掃描器 0.1
?? C
字號:
/* * unp.c -- Unix Network Programming interface. * Created: Xie Han, net lab of Peking University. <e@pku.edu.cn> * * Function "in_chksum" is taken from the book: UNP volume 1. Special * thanks to Richard Stevens. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */#include <errno.h>#include <sys/types.h>#include <sys/ioctl.h>#include <sys/socket.h>#include <sys/un.h>#include <net/if.h>#include <netinet/in.h>#include <netdb.h>#include <unistd.h>#include <stdio.h>#include <string.h>#include "unp.h"unsigned short in_cksum(unsigned short *addr, int len){	int				nleft = len;	int				sum = 0;	unsigned short	*w = addr;	unsigned short	answer = 0;	/*	 * Our algorithm is simple, using a 32 bit accumulator (sum), we add	 * sequential 16 bit words to it, and at the end, fold back all the	 * carry bits from the top 16 bits into the lower 16 bits.	 */	while (nleft > 1)  {		sum += *w++;		nleft -= 2;	}		/* 4mop up an odd byte, if necessary */	if (nleft == 1) {		*(unsigned char *)(&answer) = *(unsigned char *)w ;		sum += answer;	}		/* 4add back carry outs from top 16 bits to low 16 bits */	sum = (sum >> 16) + (sum & 0xffff);	/* add hi 16 to low 16 */	sum += (sum >> 16);			/* add carry */	answer = ~sum;				/* truncate to 16 bits */	return(answer);}inline static int __sockfd_to_family(int sockfd){	union	{		struct sockaddr_un sun;		struct sockaddr sockaddr;	} un;	socklen_t addrlen = sizeof un;	return getsockname(sockfd, &un.sockaddr, &addrlen) >= 0 ?		   un.sockaddr.sa_family : -1;}int mcast_join(int sockfd, const struct sockaddr *sockaddr,socklen_t addrlen,			   unsigned int ifindex, const char *ifname){	switch (sockaddr->sa_family)	{	case AF_INET:		{			struct ip_mreq mreq;			struct ifreq ifreq;			memcpy(&mreq.imr_multiaddr, &((struct sockaddr_in *)sockaddr)->				   sin_addr, sizeof (struct in_addr));			if (ifindex > 0 || ifname)			{				if (ifindex > 0)				{					if (!if_indextoname(ifindex, ifreq.ifr_name))					{						errno = ENXIO;						break;					}				}				else					strncpy(ifreq.ifr_name, ifname, IFNAMSIZ);				if (ioctl(sockfd, SIOCGIFADDR, &ifreq) >= 0)				{					memcpy(&mreq.imr_interface, &((struct sockaddr_in *)&ifreq.						   ifr_addr)->sin_addr, sizeof (struct in_addr));				}				else					break;			}			else				mreq.imr_interface.s_addr = htonl(INADDR_ANY);			return setsockopt(sockfd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq,							  sizeof (struct ip_mreq));		}#ifdef IPV6	case AF_INET6:		{			struct ipv6_mreq mreq6;			memcpy(&mreq6.ipv6mr_multiaddr, &((struct sockaddr_in6 *)				   sockaddr)->sin6_addr, sizeof (struct in6_addr));			if (ifindex > 0)				mreq6.ipv6mr_interface = ifindex;			else if (ifname)			{				if ((mreq6.ipv6mr_interface = if_nametoindex(ifname)) == 0)				{					errno = ENXIO;					break;				}			}			else				mreq6.ipv6mr_interface = 0;			return setsockopt(sockfd, IPPROTO_IPV6, IPV6_ADD_MEMBERSHIP,							  &mreq6, sizeof (struct ipv6_mreq));		}#endif	default:		errno = EAFNOSUPPORT;		break;	}	return -1;}int mcast_setif(int sockfd, unsigned int ifindex, const char *ifname){	switch (__sockfd_to_family(sockfd))	{	case AF_INET:		{			struct ifreq ifreq;			if (ifindex > 0 || ifname)			{				if (ifindex > 0)				{					if (!if_indextoname(ifindex, ifreq.ifr_name))					{						errno = ENXIO;						break;					}				}				else					strncpy(ifreq.ifr_name, ifname, IFNAMSIZ);				if (ioctl(sockfd, SIOCGIFADDR, &ifreq) < 0)					break;			}			else			{				((struct sockaddr_in *)&ifreq.ifr_addr)->sin_addr.s_addr =					htonl(INADDR_ANY);			}			return setsockopt(sockfd, IPPROTO_IP, IP_MULTICAST_IF,							  &((struct sockaddr_in *)&ifreq.ifr_addr)->							  sin_addr, sizeof (struct in_addr));		}#ifdef IPV6	case AF_INET6:		{			if (ifindex == 0 && ifname)			{				if ((ifindex = if_nametoindex(ifname)) == 0)				{					errno = ENXIO;					break;				}			}			return setsockopt(sockfd, IPPROTO_IPV6, IPV6_MULTICAST_IF,							  &ifindex, sizeof (unsigned int));		}#endif	default:		errno = EAFNOSUPPORT;		break;	}	return -1;}int mcast_setloop(int sockfd, int loop){	switch (__sockfd_to_family(sockfd))	{	case AF_INET:		{			unsigned char flag = loop;			return setsockopt(sockfd, IPPROTO_IP, IP_MULTICAST_LOOP, &flag,							  sizeof (unsigned char));		}#ifdef IPV6	case AF_INET6:		{			unsigned int flag = loop;			return setsockopt(sockfd, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, &flag,							  sizeof (unsigned int));		}#endif	default:		errno = EAFNOSUPPORT;		return -1;	}}inline static int __getifaddr_ipv4(int ifindex, const char *ifname,								   struct in_addr *ifaddr){	struct ifreq ifreq;	int sockfd;	int ret = -1;	char ifn[IFNAMSIZ];	if (ifindex > 0)	{		if (!(ifname = if_indextoname(ifindex, ifn)))		{			errno = ENXIO;			return -1;		}	}	if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) >= 0)	{		strncpy(ifreq.ifr_name, ifname, IFNAMSIZ);		if ((ret = ioctl(sockfd, SIOCGIFADDR, &ifreq)) >= 0)			*ifaddr = ((struct sockaddr_in *)&ifreq.ifr_addr)->sin_addr;		close(sockfd);	}	return ret;}#ifdef IPV6#define PROC_IFINET6_PATH	"/proc/net/if_inet6"inline static int __getifaddr_ipv6(unsigned int ifindex, const char *ifname,								   struct in6_addr *ifaddr){	FILE *fp = fopen(PROC_IFINET6_PATH, "r");	char addrstr[INET6_ADDRSTRLEN];	char seg[8][5];	int index, plen, scope, flags;	char ifn[IFNAMSIZ];	int ret = -1;	if (fp)	{		while (fscanf(fp, "%4s%4s%4s%4s%4s%4s%4s%4s %02x %02x %02x %02x %s\n",					  seg[0], seg[1], seg[2], seg[3], seg[4], seg[5], seg[6],					  seg[7], &index, &plen, &scope, &flags, ifn) != EOF)		{			if (ifindex == index || ifindex == 0 && strcmp(ifn, ifname) == 0)			{				sprintf(addrstr, "%s:%s:%s:%s:%s:%s:%s:%s", seg[0], seg[1],						seg[2], seg[3], seg[4], seg[5], seg[6], seg[7]);				ret = inet_pton(AF_INET6, addrstr, ifaddr);				goto out;			}		}		errno = ENXIO;out:		fclose(fp);	}	return ret;}#endifint getifaddr(int family, unsigned int ifindex, const char *ifname,			  void *ifaddr){	switch (family)	{	case AF_INET:		return __getifaddr_ipv4(ifindex, ifname, (struct in_addr *)ifaddr);#ifdef IPV6	case AF_INET6:		return __getifaddr_ipv6(ifindex, ifname, (struct in6_addr *)ifaddr);#endif	default:		errno = EAFNOSUPPORT;		break;	}	return -1;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品日产卡一卡二卡麻豆| 韩国在线一区二区| 91丝袜美腿高跟国产极品老师 | 中文在线免费一区三区高中清不卡| 天堂久久久久va久久久久| 777色狠狠一区二区三区| 日韩福利电影在线| 日韩精品一区二| 国产aⅴ综合色| 亚洲色图在线播放| 欧美亚日韩国产aⅴ精品中极品| 亚洲国产日韩一区二区| 欧美一二三区精品| 国产乱码一区二区三区| 国产精品久久午夜| 欧美日韩一区二区三区高清| 免费欧美在线视频| 国产亚洲一区二区三区四区| 美女在线观看视频一区二区| 日韩一区二区三区精品视频| 精品系列免费在线观看| 中文字幕不卡三区| 欧美日韩国产区一| 国产乱子轮精品视频| 亚洲免费av观看| 91麻豆精品91久久久久久清纯| 精品午夜久久福利影院| 中文字幕日韩一区| 欧美一区二区三级| 成人性生交大片免费看在线播放 | 欧美日韩1区2区| 狠狠色综合播放一区二区| 国产精品久久99| 欧美麻豆精品久久久久久| 国产黄色精品视频| 亚洲在线一区二区三区| 久久综合色之久久综合| 欧美专区日韩专区| 国产成人午夜视频| 国产精品人妖ts系列视频| 国产91丝袜在线播放| 亚洲福利国产精品| 国产欧美视频一区二区三区| 欧美三级韩国三级日本一级| 粉嫩av一区二区三区| 午夜伦欧美伦电影理论片| 国产精品污www在线观看| 欧美一区二区日韩| 色欧美片视频在线观看在线视频| 韩国成人在线视频| 日韩黄色免费网站| 亚洲一二三区不卡| ...xxx性欧美| 欧美国产一区在线| 久久亚洲精品小早川怜子| 欧美日韩国产一区二区三区地区| 成人av综合在线| 黄页网站大全一区二区| 日本视频免费一区| 亚洲va韩国va欧美va精品| 亚洲人成网站色在线观看| 国产日韩v精品一区二区| 欧美三级中文字幕| 日韩黄色免费网站| 一区二区三区四区亚洲| 亚洲国产精品v| 26uuu精品一区二区三区四区在线| 欧美人与性动xxxx| 精品视频一区二区三区免费| 91麻豆国产香蕉久久精品| 成人性生交大片免费看视频在线| 国产一区二区网址| 国产一区二区调教| 国产毛片精品国产一区二区三区| 久久机这里只有精品| 伦理电影国产精品| 久色婷婷小香蕉久久| 日本欧美韩国一区三区| 午夜精品久久久久久久蜜桃app| 亚洲已满18点击进入久久| 亚洲最新视频在线播放| 亚洲一区二区在线观看视频| 亚洲小少妇裸体bbw| 亚洲国产精品一区二区久久恐怖片 | 国产精品视频观看| 日韩精品在线网站| 日韩一区二区三区免费看| 日韩小视频在线观看专区| 91精品国产91综合久久蜜臀| 69堂亚洲精品首页| 日韩西西人体444www| 精品久久久影院| 国产女同互慰高潮91漫画| 国产精品对白交换视频| 亚洲激情在线激情| 午夜久久电影网| 久久精品999| 国产成人精品亚洲777人妖 | 97久久精品人人做人人爽50路| 国产成人精品一区二区三区网站观看| 不卡的电影网站| 色婷婷av一区二区三区大白胸 | 日韩国产在线观看一区| 日产国产欧美视频一区精品| 日韩欧美国产电影| 亚洲成人福利片| 亚洲成人激情社区| 精品亚洲aⅴ乱码一区二区三区| 国产精品一区二区在线观看不卡 | 国产精品理伦片| 亚洲精品视频观看| 青娱乐精品视频在线| 国产成人精品免费一区二区| 色噜噜夜夜夜综合网| 欧美年轻男男videosbes| 337p日本欧洲亚洲大胆色噜噜| 欧美国产激情一区二区三区蜜月| 亚洲伊人色欲综合网| 精品一区二区免费在线观看| 99精品一区二区| 日韩三级在线免费观看| ...xxx性欧美| 麻豆一区二区99久久久久| 91在线精品一区二区三区| 91精品国产色综合久久久蜜香臀| 日韩中文字幕区一区有砖一区 | 欧美高清激情brazzers| 精品国产制服丝袜高跟| 欧美国产激情二区三区| 午夜久久福利影院| 高清不卡一区二区在线| 欧美丰满高潮xxxx喷水动漫| 欧美激情资源网| 麻豆精品久久久| 91久久精品一区二区三区| 国产午夜精品一区二区三区视频| 香蕉av福利精品导航| av激情成人网| 久久久久久久久伊人| 亚洲一区自拍偷拍| 99久久伊人久久99| 久久久精品免费免费| 日韩高清国产一区在线| 91黄色在线观看| 国产精品二三区| 国产成人av影院| 2021中文字幕一区亚洲| 午夜影院在线观看欧美| 色婷婷精品久久二区二区蜜臂av| 久久天天做天天爱综合色| 日本欧美一区二区在线观看| 欧美三区在线视频| 亚洲精品福利视频网站| 又紧又大又爽精品一区二区| 蜜桃av噜噜一区| 欧美性极品少妇| 亚洲女子a中天字幕| 高清久久久久久| 2020国产精品| 久久精品二区亚洲w码| 欧美一区二区三区在线观看视频| 亚洲一区二区成人在线观看| 色妞www精品视频| 国产精品久99| jlzzjlzz国产精品久久| 久久综合九色欧美综合狠狠| 精品系列免费在线观看| 日韩欧美国产一区二区三区 | 国产网站一区二区三区| 国产综合久久久久影院| 精品国产免费视频| 国产精品中文字幕日韩精品 | 99久久精品99国产精品| 国产日韩精品一区| 国产黄人亚洲片| 日本一区二区三区四区在线视频 | 国产精品久久久久久久久久久免费看 | 一区二区三区久久| 色综合久久久久综合| 亚洲人亚洲人成电影网站色| 91麻豆国产在线观看| 亚洲综合av网| 欧美一区二区三区视频在线| 久久精品国产免费看久久精品| 欧美电影免费观看高清完整版在| 国内精品久久久久影院色| 久久久久久久久久久电影| 国产激情精品久久久第一区二区| 国产精品美女久久久久久2018 | 悠悠色在线精品| 欧美丰满嫩嫩电影| 国产在线播放一区三区四| 国产精品私人自拍| 91免费版pro下载短视频| 午夜电影久久久| 国产精品视频免费看| 国产剧情av麻豆香蕉精品| 欧美极品xxx| 91久久奴性调教| 免费成人在线影院|