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

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

?? ip_input.c

?? vxworks的完整的源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
	pMbufTmp = pMbPktFrag->m_nextpkt; 	pMbPktFrag->m_nextpkt = NULL ; 	m_cat (pMbuf, pMbPktFrag); 	/* concatenate the fragment */	}    pIpHdrFrag = mtod(pMbuf, struct ipasfrag *);     pIpHdrFrag->ip_len = len; 		/* length of the ip packet */    if (len > 0xffff - (pIpHdrFrag->ip_hl << 2))  /* ping of death */        goto dropFrag;                            /* drop entire chain */    pIpHdrFrag->ipf_mff &= ~1;    remque(pIpFragQueue);    (void) m_free (pIpFragQueue->pMbufHdr);     /* some debugging cruft by sklower, below, will go away soon */    if (pMbuf->m_flags & M_PKTHDR)	{ /* XXX this should be done elsewhere */	len = 0; 	for (pMbufTmp = pMbuf; pMbufTmp; pMbufTmp = pMbufTmp->m_next)	    len += pMbufTmp->m_len;	pMbuf->m_pkthdr.len = len;	}    return (pMbuf);			/* return the assembled packet */    dropFrag:#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_WARNING event */    WV_NET_ADDRIN_EVENT_1 (NET_CORE_EVENT, WV_NET_WARNING, 8, 13,                           pIpHdr->ip_src.s_addr, pIpHdr->ip_dst.s_addr,                           WV_NETEVENT_IPIN_FRAGDROP, WV_NET_RECV, pIpHdrFrag)#endif  /* INCLUDE_WVNET */#endif#ifdef VIRTUAL_STACK    _ipstat.ips_fragdropped++;#else    ipstat.ips_fragdropped++;#endif /* VIRTUAL_STACK */    m_freem (pMbuf);			/* free the fragment */    return (NULL);    }/* * Free a fragment reassembly header and all * associated datagrams. */voidip_freef(fp)	struct ipq *fp;{	struct mbuf **  pPtrMbuf; 	struct mbuf *  pMbuf;#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_INFO event */    WV_NET_ADDRIN_MARKER_2 (NET_AUX_EVENT, WV_NET_INFO, 7, 17,                            fp->ipq_src.s_addr, fp->ipq_dst.s_addr,                            WV_NETEVENT_IPFRAGFREE_START,                            fp->ipq_src.s_addr, fp->ipq_dst.s_addr)#endif  /* INCLUDE_WVNET */#endif	/* free all fragments */	pPtrMbuf = &(fp->pMbufPkt); 	while (*pPtrMbuf)	    {	    pMbuf = (*pPtrMbuf)->m_nextpkt; 	    m_freem (*pPtrMbuf); 	    *pPtrMbuf = pMbuf; 	    }	remque(fp);	(void) m_free(fp->pMbufHdr);}n_timeiptime(){	u_long t;	/* t is time in milliseconds (i hope) */	t = ((int) tickGet () * 1000) / sysClkRateGet ();	return (htonl(t));}/* * IP timer processing; * if a timer expires on a reassembly * queue, discard it. */voidip_slowtimo(){	register struct ipq *fp;	int s = splnet();#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_INFO event */    WV_NET_MARKER_0 (NET_AUX_EVENT, WV_NET_INFO, 8, 18,                      WV_NETEVENT_IPTIMER_FRAGFREE)#endif  /* INCLUDE_WVNET */#endif#ifdef VIRTUAL_STACK	fp = _ipq.next;#else	fp = ipq.next;#endif	if (fp == 0) {		splx(s);		return;	}#ifdef VIRTUAL_STACK	while (fp != &_ipq) {#else	while (fp != &ipq) {#endif		--fp->ipq_ttl;		fp = fp->next;		if (fp->prev->ipq_ttl == 0) {#ifdef VIRTUAL_STACK			_ipstat.ips_fragtimeout++;#else			ipstat.ips_fragtimeout++;#endif /* VIRTUAL_STACK */			ip_freef(fp->prev);		}	}	splx(s);	return;}/* * Drain off all datagram fragments and excess (unused) route entries. */voidip_drain(){#ifdef VIRTUAL_STACK	while (_ipq.next != &_ipq) {		_ipstat.ips_fragdropped++;		ip_freef(_ipq.next);	}#else	while (ipq.next != &ipq) {		ipstat.ips_fragdropped++;		ip_freef(ipq.next);	}#endif /* VIRTUAL_STACK */        routeDrain();	return;}/* * Do option processing on a datagram, * possibly discarding it if bad options are encountered, * or forwarding it if source-routed. * Returns 1 if packet has been forwarded/freed, * 0 if the packet should be processed further. */intip_dooptions(m)	struct mbuf *m;{	register struct ip *ip = mtod(m, struct ip *);	register u_char *cp;	register struct ip_timestamp *ipt;	register struct in_ifaddr *ia;	int opt, optlen, cnt, off, code, type = ICMP_PARAMPROB, forward = 0;	struct in_addr *sin, dst;	n_time ntime;	dst = ip->ip_dst;	cp = (u_char *)(ip + 1);	cnt = (ip->ip_hl << 2) - sizeof (struct ip);	for (; cnt > 0; cnt -= optlen, cp += optlen) {		opt = cp[IPOPT_OPTVAL];		if (opt == IPOPT_EOL)			break;		if (opt == IPOPT_NOP)			optlen = 1;		else {			optlen = cp[IPOPT_OLEN];			if (optlen <= 0 || optlen > cnt) {				code = &cp[IPOPT_OLEN] - (u_char *)ip;				goto bad;			}		}		switch (opt) {		default:			break;		/*		 * Source routing with record.		 * Find interface with current destination address.		 * If none on this machine then drop if strictly routed,		 * or do nothing if loosely routed.		 * Record interface address and bring up next address		 * component.  If strictly routed make sure next		 * address is on directly accessible net.		 */		case IPOPT_LSRR:		case IPOPT_SSRR:			if ((off = cp[IPOPT_OFFSET]) < IPOPT_MINOFF) {				code = &cp[IPOPT_OFFSET] - (u_char *)ip;				goto bad;			}			input_ipaddr.sin_addr = ip->ip_dst;			TOS_SET (&input_ipaddr, ip->ip_tos);  /* tos routing */			ia = (struct in_ifaddr *)				ifa_ifwithaddr((struct sockaddr *)&input_ipaddr);			if (ia == 0) {				if (opt == IPOPT_SSRR) {					type = ICMP_UNREACH;					code = ICMP_UNREACH_SRCFAIL;					goto bad;				}				/*				 * Loose routing, and not at next destination				 * yet; nothing to do except forward.				 */				break;			}			off--;			/* 0 origin */			if (off > optlen - sizeof(struct in_addr)) {				/*				 * End of source route.  Should be for us.				 */#ifdef SRCRT				save_rte(cp, ip->ip_src);#endif /* SRCRT */				break;			}			/*			 * locate outgoing interface			 */			bcopy((caddr_t)(cp + off), (caddr_t)&input_ipaddr.sin_addr,			    sizeof(input_ipaddr.sin_addr));			if (opt == IPOPT_SSRR) {#define	INA	struct in_ifaddr *#define	SA	struct sockaddr *			    if ((ia = (INA)ifa_ifwithdstaddr((SA)&input_ipaddr)) == 0)				ia = (INA)ifa_ifwithnet((SA)&input_ipaddr);			} else				ia = ip_rtaddr(input_ipaddr.sin_addr);			if (ia == 0) {				type = ICMP_UNREACH;				code = ICMP_UNREACH_SRCFAIL;				goto bad;			}			ip->ip_dst = input_ipaddr.sin_addr;			bcopy((caddr_t)&(IA_SIN(ia)->sin_addr),			    (caddr_t)(cp + off), sizeof(struct in_addr));			cp[IPOPT_OFFSET] += sizeof(struct in_addr);			/*			 * Let ip_intr's mcast routing check handle mcast pkts			 */			forward = !IN_MULTICAST(ntohl(ip->ip_dst.s_addr));			break;		case IPOPT_RR:			if ((off = cp[IPOPT_OFFSET]) < IPOPT_MINOFF) {				code = &cp[IPOPT_OFFSET] - (u_char *)ip;				goto bad;			}			/*			 * If no space remains, ignore.			 */			off--;			/* 0 origin */			if (off > optlen - sizeof(struct in_addr))				break;			bcopy((caddr_t)(&ip->ip_dst), (caddr_t)&input_ipaddr.sin_addr,			    sizeof(input_ipaddr.sin_addr));			/*			 * locate outgoing interface; if we're the destination,			 * use the incoming interface (should be same).			 */			if ((ia = (INA)ifa_ifwithaddr((SA)&input_ipaddr)) == 0 &&			    (ia = ip_rtaddr(input_ipaddr.sin_addr)) == 0) {				type = ICMP_UNREACH;				code = ICMP_UNREACH_HOST;				goto bad;			}			bcopy((caddr_t)&(IA_SIN(ia)->sin_addr),			    (caddr_t)(cp + off), sizeof(struct in_addr));			cp[IPOPT_OFFSET] += sizeof(struct in_addr);			break;		case IPOPT_TS:			code = cp - (u_char *)ip;			ipt = (struct ip_timestamp *)cp;			if (ipt->ipt_len < 5)				goto bad;			if (ipt->ipt_ptr > ipt->ipt_len - sizeof (long)) {				if (++ipt->ipt_oflw == 0)					goto bad;				break;			}			sin = (struct in_addr *)(cp + ipt->ipt_ptr - 1);			switch (ipt->ipt_flg) {			case IPOPT_TS_TSONLY:				break;			case IPOPT_TS_TSANDADDR:				if (ipt->ipt_ptr + sizeof(n_time) +				    sizeof(struct in_addr) > ipt->ipt_len)					goto bad;				input_ipaddr.sin_addr = dst;				ia = (INA)ifaof_ifpforaddr((SA)&input_ipaddr,							    m->m_pkthdr.rcvif);				if (ia == 0)					continue;				bcopy((caddr_t)&IA_SIN(ia)->sin_addr,				    (caddr_t)sin, sizeof(struct in_addr));				ipt->ipt_ptr += sizeof(struct in_addr);				break;			case IPOPT_TS_PRESPEC:				if (ipt->ipt_ptr + sizeof(n_time) +				    sizeof(struct in_addr) > ipt->ipt_len)					goto bad;				bcopy((caddr_t)sin, (caddr_t)&input_ipaddr.sin_addr,				    sizeof(struct in_addr));				if (ifa_ifwithaddr((SA)&input_ipaddr) == 0)					continue;				ipt->ipt_ptr += sizeof(struct in_addr);				break;			default:				goto bad;			}			ntime = iptime();			bcopy((caddr_t)&ntime, (caddr_t)cp + ipt->ipt_ptr - 1,			    sizeof(n_time));			ipt->ipt_ptr += sizeof(n_time);		}	}	if (forward) {		ip_forward(m, 1);		return (1);	}	return (0);bad:	ip->ip_len -= ip->ip_hl << 2;   /* XXX icmp_error adds in hdr length */	if (_icmpErrorHook != NULL)	    (*_icmpErrorHook) (m, type, code, 0, 0); #ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_CRITICAL event */        WV_NET_EVENT_2 (NET_CORE_EVENT, WV_NET_CRITICAL, 18, 9,                         WV_NETEVENT_IPIN_BADOPT, WV_NET_RECV, type, code)#endif  /* INCLUDE_WVNET */#endif#ifdef VIRTUAL_STACK	_ipstat.ips_badoptions++;#else	ipstat.ips_badoptions++;#endif /* VIRTUAL_STACK */	return (1);}/* * Given address of next destination (final or next hop), * return internet address info of interface to be used to get there. */struct in_ifaddr *ip_rtaddr(dst)	 struct in_addr dst;{	register struct sockaddr_in *sin;	sin = (struct sockaddr_in *) &ipforward_rt.ro_dst;	if (ipforward_rt.ro_rt == 0 ||            (ipforward_rt.ro_rt->rt_flags & RTF_UP) == 0 ||            dst.s_addr != sin->sin_addr.s_addr) {		if (ipforward_rt.ro_rt) {			RTFREE(ipforward_rt.ro_rt);			ipforward_rt.ro_rt = 0;		}		sin->sin_family = AF_INET;		sin->sin_len = sizeof(*sin);		sin->sin_addr = dst;		ipforward_rt.ro_rt = rtalloc2 (&ipforward_rt.ro_dst);	}	if (ipforward_rt.ro_rt == 0)		return ((struct in_ifaddr *)0);	return ((struct in_ifaddr *) ipforward_rt.ro_rt->rt_ifa);}#ifdef SRCRT/* * Save incoming source route for use in replies, * to be picked up later by ip_srcroute if the receiver is interested. */voidsave_rte(option, dst)	u_char *option;	struct in_addr dst;{	unsigned olen;	olen = option[IPOPT_OLEN];#ifdef DIAGNOSTIC	if (ipprintfs)		printf("save_rte: olen %d\n", olen);#endif	if (olen > sizeof(ip_srcrt) - (1 + sizeof(dst)))		return;	bcopy((caddr_t)option, (caddr_t)ip_srcrt.srcopt, olen);	ip_nhops = (olen - IPOPT_OFFSET - 1) / sizeof(struct in_addr);	ip_srcrt.dst = dst;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久这里只有精品视频网| 91久久精品一区二区二区| 日韩女优制服丝袜电影| 奇米色一区二区三区四区| 欧美精品成人一区二区三区四区| 亚洲午夜精品久久久久久久久| 欧美电影在线免费观看| 日本色综合中文字幕| 日韩精品在线一区二区| 国产999精品久久久久久绿帽| 国产亲近乱来精品视频| 91一区二区在线| 亚洲综合一二区| 日韩午夜激情av| 国产suv精品一区二区三区| 亚洲欧美中日韩| 欧美午夜在线一二页| 美女尤物国产一区| 国产欧美一区二区精品性色| 97精品国产露脸对白| 亚洲成人一区二区| 久久色成人在线| 91美女福利视频| 天天影视涩香欲综合网| 久久久久久一二三区| av一区二区三区在线| 午夜电影一区二区| 久久影视一区二区| 色婷婷av一区二区三区gif| 日韩精品高清不卡| 欧美激情一区二区三区| 欧美日韩中文字幕一区| 国产一区二区三区免费看| 亚洲精品免费一二三区| 日韩视频一区在线观看| 91天堂素人约啪| 久久99精品久久久久| 亚洲精品免费看| 久久色视频免费观看| 欧美日韩高清一区二区不卡| 国产成a人亚洲精品| 亚洲h动漫在线| 国产精品私人影院| 欧美一区二区三区喷汁尤物| 成人91在线观看| 青青草国产成人av片免费| 亚洲欧美在线观看| 久久香蕉国产线看观看99| 欧美日韩一区视频| www.视频一区| 久久精品72免费观看| 亚洲成人综合视频| 自拍偷拍国产精品| 国产午夜亚洲精品午夜鲁丝片| 678五月天丁香亚洲综合网| 91视频91自| 国产成人亚洲综合a∨婷婷图片| 日韩精品一二三区| 亚洲午夜免费电影| 亚洲女爱视频在线| 国产精品美女久久久久高潮| 久久这里只有精品首页| 日韩一区二区电影在线| 欧美影院一区二区| 91麻豆国产香蕉久久精品| 国产成人综合亚洲网站| 国产在线播精品第三| 毛片av中文字幕一区二区| 亚洲va国产天堂va久久en| 亚洲国产成人porn| 亚洲激情第一区| 亚洲日本va午夜在线电影| 国产精品人成在线观看免费| 国产三级精品视频| 久久久激情视频| 日本一区二区三区四区| 久久久久久久久久久99999| 精品国产一区二区三区不卡| 日韩一区二区麻豆国产| 日韩欧美一区二区在线视频| 宅男在线国产精品| 69久久99精品久久久久婷婷| 337p亚洲精品色噜噜噜| 欧美一区二区播放| 日韩视频免费观看高清在线视频| 这里是久久伊人| 日韩三级视频在线看| 精品理论电影在线观看| 久久久久免费观看| 国产精品女同一区二区三区| 国产精品久久国产精麻豆99网站| 国产精品人人做人人爽人人添| 1024成人网色www| 亚洲人成影院在线观看| 一区二区高清视频在线观看| 五月婷婷欧美视频| 免费在线成人网| 国产又黄又大久久| youjizz国产精品| 欧美日韩综合在线免费观看| 欧美一区二区性放荡片| www国产亚洲精品久久麻豆| 国产欧美一区二区精品婷婷 | 免费成人在线视频观看| 麻豆一区二区三区| 国产电影一区二区三区| 97久久超碰国产精品| 欧美日韩久久久久久| 精品国产91久久久久久久妲己 | 天堂久久一区二区三区| 蜜桃视频第一区免费观看| 国产乱人伦偷精品视频免下载 | 久久先锋影音av鲁色资源| 中文字幕第一页久久| 亚洲一区二区三区四区在线观看 | 久久奇米777| 亚洲三级在线看| 日韩在线观看一区二区| 成人国产精品免费观看动漫| 在线精品视频小说1| 精品国产三级电影在线观看| 国产精品国产自产拍高清av王其 | 日韩黄色片在线观看| 国产 日韩 欧美大片| 欧美日韩在线三区| 国产欧美日韩亚州综合| 亚洲成av人综合在线观看| 粉嫩av一区二区三区在线播放 | 丁香婷婷深情五月亚洲| 欧美唯美清纯偷拍| 亚洲国产成人午夜在线一区| 视频一区视频二区在线观看| 成熟亚洲日本毛茸茸凸凹| 日韩午夜小视频| 樱花影视一区二区| 成人爽a毛片一区二区免费| 欧美一区二区三区性视频| 亚洲蜜臀av乱码久久精品| 国产成人在线看| 日韩一区二区在线免费观看| 一区二区三区四区激情| 国产精品一区二区黑丝| 91精品麻豆日日躁夜夜躁| 亚洲另类一区二区| 成人精品小蝌蚪| 欧美精品一区二区三区很污很色的| 一区二区三区四区高清精品免费观看| 国产成人在线视频免费播放| 日韩视频在线你懂得| 日韩精品三区四区| 欧美三区在线观看| 一区二区三区中文字幕精品精品 | 91色视频在线| 国产精品嫩草99a| 国产精品91一区二区| 日韩欧美亚洲国产另类| 日本欧美一区二区三区乱码| 欧美性淫爽ww久久久久无| 亚洲特黄一级片| 波波电影院一区二区三区| 日本一二三不卡| 国产一区二区福利视频| 精品欧美一区二区在线观看| 免费在线观看精品| 日韩久久免费av| 麻豆国产欧美日韩综合精品二区 | 国产精品中文字幕一区二区三区| 日韩一区二区在线看| 免费欧美高清视频| 日韩午夜电影在线观看| 日本午夜精品视频在线观看| 日韩一级欧美一级| 久久99精品久久久久婷婷| 精品国产乱子伦一区| 国内精品伊人久久久久av影院 | 91在线小视频| 国产精品超碰97尤物18| 97精品国产97久久久久久久久久久久| 最好看的中文字幕久久| 色综合视频一区二区三区高清| 亚洲精品v日韩精品| 欧美亚洲国产bt| 日本一不卡视频| 精品久久久网站| 成人性视频网站| 综合色中文字幕| 欧美日韩国产乱码电影| 久久99精品视频| 国产精品美日韩| 欧美视频一区二区三区在线观看| 午夜激情一区二区| 欧美大片一区二区三区| 国产馆精品极品| 一区二区三国产精华液| 在线观看91精品国产麻豆| 国产馆精品极品| 亚洲精品一卡二卡| 51久久夜色精品国产麻豆| 国内精品国产三级国产a久久| 国产精品成人免费在线|