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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? if_ether.c

?? 完整的TCP/IP源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
                        sdl = SDL (rt->rt_gwroute->rt_gateway);                    }                else                    sdl = SDL (rt->rt_gateway);                if (sdl->sdl_family != AF_LINK)                    return (EINVAL);                }            else                return (ENETUNREACH);            bzero ( (char *)&rtmask, sizeof (rtmask));            rtmask.sin_len = 8;            rtmask.sin_addr.s_addr = 0xffffffff;            bzero ( (char *)&ipaddr, sizeof (ipaddr));            ipaddr.sin_len = sizeof (ipaddr);            ipaddr.sin_family = AF_INET;            ipaddr.sin_addr.s_addr = soInAddr->sin_addr.s_addr;            bzero ( (char *)&arpaddr, sizeof (arpaddr));	    arpaddr.sdl_len = sizeof (arpaddr);            arpaddr.sdl_family = AF_LINK;            arpaddr.sdl_type = sdl->sdl_type;            arpaddr.sdl_index = sdl->sdl_index; 	    bcopy((caddr_t)ar->arp_ha.sa_data, LLADDR(&arpaddr),		  arpaddr.sdl_alen = sizeof(struct ether_addr));             flags |= (RTF_HOST | RTF_STATIC);            /*              * A netmask of 0 compares each route entry against the entire             * key during lookups. If an overlapping network route already             * exists, set it to all ones so that queries with SIN_PROXY set             * will still succeed. If a matching host route exists, set the             * SIN_PROXY flag in the new entry instead.             */            pMask = NULL;            if (proxy)                {                if (export)                    ipaddr.sin_other = SIN_PROXY;                else                    {                    pMask = &rtmask;                    flags &= ~RTF_HOST;                    }                }            error = rtrequest (RTM_ADD, (struct sockaddr *)&ipaddr,                               (struct sockaddr *)&arpaddr,                               (struct sockaddr *)pMask, flags, &pNewRt);            if (error == 0 && pNewRt)                {	        if (ar->arp_flags & ATF_PERM)		    pNewRt->rt_expire = 0; 	        else 		    pNewRt->rt_expire = tickGet() + (sysClkRateGet() *                                                     arpt_keep);                pNewRt->rt_refcnt--;                }	    break;	case SIOCDARP:		/* delete entry */	    if ((la = arplookup(soInAddr->sin_addr.s_addr, 0, 0)) == NULL)		return (EADDRNOTAVAIL); 	    arptfree(la);	    break;	case SIOCGARP:		/* get entry */	    if ((la = arplookup(soInAddr->sin_addr.s_addr, 0, 0)) == NULL)		return (EADDRNOTAVAIL); 	    rt = la->la_rt;             sdl = SDL(rt->rt_gateway);	    ar->arp_flags = 0; 	/* initialize the flags */	    if (sdl->sdl_alen)		{		bcopy(LLADDR(sdl), (caddr_t)ar->arp_ha.sa_data, sdl->sdl_alen);		ar->arp_flags |= ATF_COM; 		}	    else		return (EADDRNOTAVAIL); 			    if (rt->rt_flags & RTF_UP)		ar->arp_flags |= ATF_INUSE; 	    if (rt->rt_flags & RTF_ANNOUNCE)		ar->arp_flags |= ATF_PUBL; 	    	    if (rt->rt_expire == 0) 		ar->arp_flags |= ATF_PERM;	    break;	default : 	    return (EINVAL); 	}    return (error);     }/* * Convert Ethernet address to printable (loggable) representation. */char *ether_sprintf(ap)	register u_char *ap;{	register i;	static char etherbuf[18];	register char *cp = etherbuf;	for (i = 0; i < 6; i++) {		*cp++ = digits[*ap >> 4];		*cp++ = digits[*ap++ & 0xf];		*cp++ = ':';	}	*--cp = 0;	return (etherbuf);}#ifdef INCLUDE_REVARP /* XXX currently not supported *//* * Called from 10 Mb/s Ethernet interrupt handlers * when ether packet type ETHERTYPE_REVARP * is received.  Common length and type checks are done here, * then the protocol-specific routine is called. */voidrevarpinput(m)	struct mbuf *m;{	struct arphdr *ar;	int op, s;	if (m->m_len < sizeof(struct arphdr))		goto out;	ar = mtod(m, struct arphdr *);	if (ntohs(ar->ar_hrd) != ARPHRD_ETHER)		goto out;	if (m->m_len < sizeof(struct arphdr) + 2 * (ar->ar_hln + ar->ar_pln))		goto out;	switch (ntohs(ar->ar_pro)) {	case ETHERTYPE_IP:	case ETHERTYPE_IPTRAILERS:		in_revarpinput(m);		return;	default:		break;	}out:	m_freem(m);}/* * RARP for Internet protocols on 10 Mb/s Ethernet. * Algorithm is that given in RFC 903. * We are only using for bootstrap purposes to get an ip address for one of * our interfaces.  Thus we support no user-interface. * * Since the contents of the RARP reply are specific to the interface that * sent the request, this code must ensure that they are properly associated. * * Note: also supports ARP via RARP packets, per the RFC. */in_revarpinput(m)	struct mbuf *m;{	struct ifnet *ifp;	struct ether_arp *ar;	int op, s;	ar = mtod(m, struct ether_arp *);	op = ntohs(ar->arp_op);	switch (op) {	case ARPOP_REQUEST:	case ARPOP_REPLY:	/* per RFC */		in_arpinput(m);		return;	case ARPOP_REVREPLY:		break;	case ARPOP_REVREQUEST:	/* handled by rarpd(8) */	default:		goto out;	}	if (!revarp_in_progress)		goto out;	ifp = m->m_pkthdr.rcvif;	if (ifp != myip_ifp) /* !same interface */		goto out;	if (myip_initialized)		goto wake;	if (bcmp((char *)ar->arp_tha, 		 (char *)((struct arpcom *)ifp)->ac_enaddr,		 sizeof(ar->arp_tha)))		goto out;	bcopy((caddr_t)ar->arp_spa, (caddr_t)&srv_ip, sizeof(srv_ip));	bcopy((caddr_t)ar->arp_tpa, (caddr_t)&myip, sizeof(myip));	myip_initialized = 1;wake:	/* Do wakeup every time in case it was missed. */#if 0 /* XXX to be checked */	wakeup((caddr_t)&myip);#endif /* XXX to be checked */out:	m_freem(m);}/* * Send a RARP request for the ip address of the specified interface. * The request should be RFC 903-compliant. */voidrevarprequest(ifp)	struct ifnet *ifp;{	struct sockaddr sa;	struct mbuf *m;	struct ether_header *eh;	struct ether_arp *ea;	struct arpcom *ac = (struct arpcom *)ifp;	if ((m = mHdrClGet(M_DONTWAIT, MT_DATA, 			   sizeof(*ea), TRUE)) == NULL)	    return; 	m->m_len = sizeof(*ea);	m->m_pkthdr.len = sizeof(*ea);	MH_ALIGN(m, sizeof(*ea));	ea = mtod(m, struct ether_arp *);	eh = (struct ether_header *)sa.sa_data;	bzero((caddr_t)ea, sizeof(*ea));	bcopy((caddr_t)etherbroadcastaddr, (caddr_t)eh->ether_dhost,	    sizeof(eh->ether_dhost));	eh->ether_type = htons(ETHERTYPE_REVARP);	ea->arp_hrd = htons(ARPHRD_ETHER);	ea->arp_pro = htons(ETHERTYPE_IP);	ea->arp_hln = sizeof(ea->arp_sha);	/* hardware address length */	ea->arp_pln = sizeof(ea->arp_spa);	/* protocol address length */	ea->arp_op = htons(ARPOP_REVREQUEST);	bcopy((caddr_t)ac->ac_enaddr, (caddr_t)ea->arp_sha,	   sizeof(ea->arp_sha));	bcopy((caddr_t)ac->ac_enaddr, (caddr_t)ea->arp_tha,	   sizeof(ea->arp_tha));	sa.sa_family = AF_UNSPEC;	sa.sa_len = sizeof(sa);	ifp->if_output(ifp, m, &sa, (struct rtentry *)0);}/* * RARP for the ip address of the specified interface, but also * save the ip address of the server that sent the answer. * Timeout if no response is received. */intrevarpwhoarewe(ifp, serv_in, clnt_in)	struct ifnet *ifp;	struct in_addr *serv_in;	struct in_addr *clnt_in;{	int result, count = 20;		if (myip_initialized) 		return EIO;	myip_ifp = ifp;	revarp_in_progress = 1;	while (count--) {		revarprequest(ifp);				/* one second delay */		taskDelay (sysClkRateGet());#if 0 /* XXX WORKAROUND with TAskDelay provided is it OK??? */		result = tsleep((caddr_t)&myip, PSOCK, "revarp", hz/2);		if (result != EWOULDBLOCK)			break;#endif  /* XXX */	}	revarp_in_progress = 0;	if (!myip_initialized)		return ENETUNREACH;		bcopy((caddr_t)&srv_ip, (char *)serv_in, sizeof(*serv_in));	bcopy((caddr_t)&myip, (char *)clnt_in, sizeof(*clnt_in));	return 0;}/* For compatibility: only saves interface address. */intrevarpwhoami(in, ifp)	struct in_addr *in;	struct ifnet *ifp;{	struct in_addr server;	return (revarpwhoarewe(ifp, &server, in));}#endif /* INCLUDE_REVARP XXX currently not supported */#define db_printf	printfvoiddb_print_sa(sa)	struct sockaddr *sa;{	int len;	u_char *p;	if (sa == 0) {		db_printf("[NULL]");		return;	}	p = (u_char*)sa;	len = sa->sa_len;	db_printf("[");	while (len > 0) {		db_printf("%d", *p);		p++; len--;		if (len) db_printf(",");	}	db_printf("]\n");}#ifdef	DDBstatic voiddb_print_ifa(ifa)	struct ifaddr *ifa;{	if (ifa == 0)		return;	db_printf("  ifa_addr=");	db_print_sa(ifa->ifa_addr);	db_printf("  ifa_dsta=");	db_print_sa(ifa->ifa_dstaddr);	db_printf("  ifa_mask=");	db_print_sa(ifa->ifa_netmask);	db_printf("  flags=0x%x,refcnt=%d,metric=%d\n",			  ifa->ifa_flags,			  ifa->ifa_refcnt,			  ifa->ifa_metric);}static voiddb_print_llinfo(li)	caddr_t li;{	struct llinfo_arp *la;	if (li == 0)		return;	la = (struct llinfo_arp *)li;	db_printf("  la_rt=0x%x la_hold=0x%x, la_asked=0x%x\n",			  la->la_rt, la->la_hold, la->la_asked);}/* * Function to pass to rn_walktree(). * Return non-zero error to abort walk. */static intdb_show_radix_node(rn, w)	struct radix_node *rn;	void *w;{	struct rtentry *rt = (struct rtentry *)rn;	db_printf("rtentry=0x%x", rt);	db_printf(" flags=0x%x refcnt=%d use=%d expire=%d\n",			  rt->rt_flags, rt->rt_refcnt,			  rt->rt_use, rt->rt_expire);	db_printf(" key="); db_print_sa(rt_key(rt));	db_printf(" mask="); db_print_sa(rt_mask(rt));	db_printf(" gw="); db_print_sa(rt->rt_gateway);	db_printf(" ifp=0x%x ", rt->rt_ifp);	if (rt->rt_ifp)		db_printf("(%s%d)",				  rt->rt_ifp->if_name,				  rt->rt_ifp->if_unit);	else		db_printf("(NULL)");	db_printf(" ifa=0x%x\n", rt->rt_ifa);	db_print_ifa(rt->rt_ifa);	db_printf(" genmask="); db_print_sa(rt->rt_genmask);	db_printf(" gwroute=0x%x llinfo=0x%x\n",			  rt->rt_gwroute, rt->rt_llinfo);	db_print_llinfo(rt->rt_llinfo);	return (0);}/* * Function to print all the route trees. * Use this from ddb:  "call db_show_arptab" */db_show_arptab(){	struct radix_node_head *rnh;	rnh = rt_tables[AF_INET];	db_printf("Route tree for AF_INET\n");	if (rnh == NULL) {		db_printf(" (not initialized)\n");		return (0);	}	rn_walktree(rnh, db_show_radix_node, NULL);	return (0);}#endif#endif /* INET */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久亚洲一区二区三区明星换脸| 亚洲v日本v欧美v久久精品| 亚洲激情成人在线| 国产一区二区网址| 欧美一级日韩免费不卡| 综合久久久久综合| 国产另类ts人妖一区二区| 精品视频在线视频| 一区二区免费在线| 99视频在线精品| 国产欧美日韩三级| 国产一区二区调教| 亚洲精品一线二线三线| 日欧美一区二区| 欧美日韩一区 二区 三区 久久精品| 一区在线播放视频| 大美女一区二区三区| 国产午夜亚洲精品羞羞网站| 久久国产精品免费| 日韩欧美国产一区二区三区| 偷拍与自拍一区| 555夜色666亚洲国产免| 日日摸夜夜添夜夜添国产精品| 在线观看不卡一区| 亚洲制服欧美中文字幕中文字幕| aaa欧美日韩| 成人欧美一区二区三区视频网页| 成人黄色在线视频| 最新国产成人在线观看| 99久久er热在这里只有精品66| 国产日韩三级在线| 成人夜色视频网站在线观看| 国产精品免费久久久久| av高清久久久| 亚洲国产一区视频| 91精品国产综合久久精品| 日韩av在线播放中文字幕| 91精品在线免费观看| 六月婷婷色综合| 久久精品亚洲精品国产欧美 | 色综合久久综合| 亚洲蜜臀av乱码久久精品| 色综合久久久网| 午夜免费欧美电影| 欧美tickling网站挠脚心| 国产在线视频不卡二| 国产午夜精品福利| 色天使久久综合网天天| 午夜视频久久久久久| 欧美电影免费观看高清完整版| 国产伦精品一区二区三区免费| 国产精品毛片久久久久久久| 在线免费观看成人短视频| 三级一区在线视频先锋| 久久精品日产第一区二区三区高清版 | 久久99国内精品| 日本一区二区三区免费乱视频 | 日韩一区二区在线看片| 国产一区二区三区黄视频| 椎名由奈av一区二区三区| 欧美亚洲综合色| 国内精品久久久久影院色| 亚洲三级在线看| 欧美一区二区三区在线| 暴力调教一区二区三区| 青娱乐精品在线视频| 久久九九影视网| 4hu四虎永久在线影院成人| youjizz国产精品| 日本不卡视频一二三区| 欧美激情中文不卡| 欧美一区二区三区系列电影| 波多野结衣91| 极品销魂美女一区二区三区| 亚洲欧美色图小说| 国产日韩亚洲欧美综合| 91精品国产综合久久久久久久久久 | 欧洲一区二区三区免费视频| 国产在线播精品第三| 亚洲小少妇裸体bbw| 精品国产不卡一区二区三区| 欧美三级午夜理伦三级中视频| 黄色成人免费在线| 日韩国产欧美三级| 一区二区三区四区中文字幕| 国产日产欧产精品推荐色 | 欧美视频在线观看一区二区| 成人午夜在线视频| 精品一区二区在线视频| 亚洲国产裸拍裸体视频在线观看乱了 | 日韩亚洲欧美成人一区| 欧美亚洲国产怡红院影院| 成人免费高清在线| 国产一区二区在线视频| 蜜臀久久99精品久久久画质超高清 | 久久精品水蜜桃av综合天堂| 欧美一级专区免费大片| 欧美日韩1234| 欧美三级日本三级少妇99| 91小视频免费看| thepron国产精品| 丁香网亚洲国际| 国产成人免费xxxxxxxx| 国产一区啦啦啦在线观看| 久久99精品久久久久久动态图| 日本不卡视频一二三区| 麻豆传媒一区二区三区| 免费成人在线观看视频| 欧美aaa在线| 男女性色大片免费观看一区二区| 图片区小说区国产精品视频| 婷婷开心激情综合| 肉肉av福利一精品导航| 蜜乳av一区二区三区| 美国三级日本三级久久99| 久久99精品网久久| 国产精品一区二区91| 国产很黄免费观看久久| 成人黄色a**站在线观看| 91玉足脚交白嫩脚丫在线播放| 成人av电影免费在线播放| 91麻豆国产福利精品| 91极品视觉盛宴| 777午夜精品免费视频| 欧美成人午夜电影| 国产日韩欧美不卡| 一区二区三区四区中文字幕| 亚洲成人第一页| 久久99精品久久久久久| 成人免费毛片a| 在线观看国产日韩| 日韩一区和二区| 国产视频一区在线观看| 中文字幕一区av| 日产精品久久久久久久性色| 国产乱妇无码大片在线观看| 97国产精品videossex| 欧美日韩精品一区二区三区 | 一区二区三区美女视频| 亚洲国产一区二区在线播放| 蜜臀va亚洲va欧美va天堂| 国产成a人亚洲精| 欧美私模裸体表演在线观看| 欧美xxxx老人做受| 亚洲美女视频在线| 青青草国产成人av片免费| 成人国产电影网| 91麻豆精品久久久久蜜臀| 国产精品欧美一区喷水| 日韩精品电影在线观看| 国产91丝袜在线播放| 欧美日韩在线精品一区二区三区激情 | 日韩理论片在线| 久久电影网站中文字幕| 91小视频在线观看| 日韩精品一区二| 亚洲综合免费观看高清完整版| 麻豆国产精品一区二区三区| 91免费视频大全| 精品播放一区二区| 亚洲成人你懂的| 91美女视频网站| 国产欧美日韩另类视频免费观看 | 一区二区在线观看不卡| 国内外成人在线视频| 欧美日韩国产一级二级| 中文字幕中文在线不卡住| 美女一区二区三区在线观看| 色94色欧美sute亚洲线路二| 欧美激情中文字幕| 精品亚洲国内自在自线福利| 欧美男生操女生| 一区二区在线观看免费| 99国产精品视频免费观看| 久久久午夜电影| 蜜臀久久久99精品久久久久久| 91成人免费在线| 亚洲乱码日产精品bd| av一区二区三区在线| 亚洲国产精品ⅴa在线观看| 麻豆成人91精品二区三区| 欧美麻豆精品久久久久久| 亚洲乱码日产精品bd| 91日韩一区二区三区| 亚洲欧洲日本在线| 成人激情黄色小说| 国产精品美女久久久久久久网站| 国产综合色在线视频区| 欧美成人三级在线| 久久国产三级精品| 亚洲精品在线电影| 国内精品久久久久影院一蜜桃| 欧美大片免费久久精品三p| 日产精品久久久久久久性色| 7777女厕盗摄久久久| 欧美a级理论片| 日韩限制级电影在线观看| 免费观看在线色综合| 欧美精品一区二区三区很污很色的| 人人精品人人爱|