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

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

?? ip_input.c

?? vxworks的完整的源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
/* * Retrieve incoming source route for use in replies, * in the same form used by setsockopt. * The first hop is placed before the options, will be removed later. */struct mbuf *ip_srcroute(){	register struct in_addr *p, *q;	register struct mbuf *m;	if (ip_nhops == 0)		return ((struct mbuf *)0);	m= mBufClGet(M_DONTWAIT, MT_SOOPTS, CL_SIZE_128, TRUE);	if (m == 0)		return ((struct mbuf *)0);#define OPTSIZ	(sizeof(ip_srcrt.nop) + sizeof(ip_srcrt.srcopt))	/* length is (nhops+1)*sizeof(addr) + sizeof(nop + srcrt header) */	m->m_len = ip_nhops * sizeof(struct in_addr) + sizeof(struct in_addr) +	    OPTSIZ;#ifdef DIAGNOSTIC	if (ipprintfs)		printf("ip_srcroute: nhops %d mlen %d", ip_nhops, m->m_len);#endif	/*	 * First save first hop for return route	 */	p = &ip_srcrt.route[ip_nhops - 1];	*(mtod(m, struct in_addr *)) = *p--;#ifdef DIAGNOSTIC	if (ipprintfs)		printf(" hops %lx", ntohl(mtod(m, struct in_addr *)->s_addr));#endif	/*	 * Copy option fields and padding (nop) to mbuf.	 */	ip_srcrt.nop = IPOPT_NOP;	ip_srcrt.srcopt[IPOPT_OFFSET] = IPOPT_MINOFF;	bcopy((caddr_t)&ip_srcrt.nop,	    mtod(m, caddr_t) + sizeof(struct in_addr), OPTSIZ);	q = (struct in_addr *)(mtod(m, caddr_t) +	    sizeof(struct in_addr) + OPTSIZ);#undef OPTSIZ	/*	 * Record return path as an IP source route,	 * reversing the path (pointers are now aligned).	 */	while (p >= ip_srcrt.route) {#ifdef DIAGNOSTIC		if (ipprintfs)			printf(" %lx", ntohl(q->s_addr));#endif		*q++ = *p--;	}	/*	 * Last hop goes to final destination.	 */	*q = ip_srcrt.dst;#ifdef DIAGNOSTIC	if (ipprintfs)		printf(" %lx\n", ntohl(q->s_addr));#endif	return (m);}#endif /* SRCRT *//* * Strip out IP options, at higher * level protocol in the kernel. * Second argument is buffer to which options * will be moved, and return value is their length. * XXX should be deleted; last arg currently ignored. */voidip_stripoptions(m, mopt)	register struct mbuf *m;	struct mbuf *mopt;{	register int i;	struct ip *ip = mtod(m, struct ip *);	register caddr_t opts;	int olen;	olen = (ip->ip_hl<<2) - sizeof (struct ip);	opts = (caddr_t)(ip + 1);	i = m->m_len - (sizeof (struct ip) + olen);	bcopy(opts  + olen, opts, (unsigned)i);	m->m_len -= olen;	if (m->m_flags & M_PKTHDR)		m->m_pkthdr.len -= olen;	ip->ip_hl = sizeof(struct ip) >> 2;}u_char inetctlerrmap[PRC_NCMDS] = {	0,		0,		0,		0,	0,		EMSGSIZE,	EHOSTDOWN,	EHOSTUNREACH,	EHOSTUNREACH,	EHOSTUNREACH,	ECONNREFUSED,	ECONNREFUSED,	EMSGSIZE,	EHOSTUNREACH,	0,		0,	0,		0,		0,		0,	ENOPROTOOPT};/* * Forward a packet.  If some error occurs return the sender * an icmp packet.  Note we can't always generate a meaningful * icmp message because icmp doesn't have a large enough repertoire * of codes and types. * * If not forwarding, just drop the packet.  This could be confusing * if (_ipCfgFlags & IP_DO_FORWARDING) was zero but some routing protocol was * advancing us as a gateway to somewhere.  However, we must let the routing * protocol deal with that. * * The srcrt parameter indicates whether the packet is being forwarded * via a source route. */voidip_forward(m, srcrt)	struct mbuf *m;	int srcrt;{	register struct ip *ip = mtod(m, struct ip *);	register struct sockaddr_in *sin;	register struct rtentry *rt;	int error, type = 0, code = 0;	struct mbuf *mcopy;	n_long dest;	struct ifnet *destifp;#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET        u_long srcAddr; /* Source IP address, unavailable after ip_output() */        u_long dstAddr; /* Dest. IP address, unavailable after ip_output() */#endif#endif	dest = 0;#ifdef DIAGNOSTIC	if (ipprintfs)		printf("forward: src %x dst %x ttl %x\n", ip->ip_src,			ip->ip_dst, ip->ip_ttl);#endif	if (m->m_flags & M_BCAST || in_canforward(ip->ip_dst) == 0) {#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_CRITICAL event */    WV_NET_ADDROUT_EVENT_1 (NET_CORE_EVENT, WV_NET_CRITICAL, 19, 10,                             ip->ip_src.s_addr, ip->ip_dst.s_addr,                            WV_NETEVENT_IPFWD_BADADDR, WV_NET_RECV,                            ip->ip_dst.s_addr)#endif  /* INCLUDE_WVNET */#endif		#ifdef VIRTUAL_STACK		_ipstat.ips_cantforward++;#else		ipstat.ips_cantforward++;#endif /* VIRTUAL_STACK */		m_freem(m);		return;	}	HTONS(ip->ip_id);	if (ip->ip_ttl <= IPTTLDEC) {		if (_icmpErrorHook != NULL)                    {                    HTONS(ip->ip_len);                    (*_icmpErrorHook)(m, ICMP_TIMXCEED, ICMP_TIMXCEED_INTRANS,                                      dest, 0);                    }		return;	}	ip->ip_ttl -= IPTTLDEC;	sin = (struct sockaddr_in *)&ipforward_rt.ro_dst;	if ((rt = ipforward_rt.ro_rt) == 0 ||            (rt->rt_flags & RTF_UP) == 0 ||	    ip->ip_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 = ip->ip_dst;		ipforward_rt.ro_rt = rtalloc2 (&ipforward_rt.ro_dst);		if (ipforward_rt.ro_rt == 0) {#ifdef VIRTUAL_STACK			_ipstat.ips_noroute++;#else			ipstat.ips_noroute++;#endif /* VIRTUAL_STACK */			if (_icmpErrorHook != NULL)			    (*_icmpErrorHook)(m, ICMP_UNREACH, 					     ICMP_UNREACH_HOST, dest, 0);			return;		}		rt = ipforward_rt.ro_rt;	}	/*	 * Save at most 64 bytes of the packet in case	 * we need to generate an ICMP message to the src.	 */	mcopy = m_copy(m, 0, min((int)ip->ip_len, 64));	/*	 * If forwarding packet using same interface that it came in on,	 * perhaps should send a redirect to sender to shortcut a hop.	 * Only send redirect if source is sending directly to us,	 * and if packet was not source routed (or has any options).	 * Also, don't send redirect if forwarding using a default route	 * or a route modified by a redirect.	 */#define	satosin(sa)	((struct sockaddr_in *)(sa))	if (rt->rt_ifp == m->m_pkthdr.rcvif &&	    (rt->rt_flags & (RTF_DYNAMIC|RTF_MODIFIED)) == 0 &&	    satosin(rt_key(rt))->sin_addr.s_addr != 0 &&	    (_ipCfgFlags & IP_DO_REDIRECT) && !srcrt) {#define	RTA(rt)	((struct in_ifaddr *)(rt->rt_ifa))		u_long src = ntohl(ip->ip_src.s_addr);		if (RTA(rt) &&		    (src & RTA(rt)->ia_subnetmask) == RTA(rt)->ia_subnet) {		    if (rt->rt_flags & RTF_GATEWAY)			dest = satosin(rt->rt_gateway)->sin_addr.s_addr;		    else			dest = ip->ip_dst.s_addr;		    /* Router requirements says to only send host redirects */		    type = ICMP_REDIRECT;		    code = ICMP_REDIRECT_HOST;#ifdef DIAGNOSTIC		    if (ipprintfs)		        printf("redirect (%d) to %lx\n", code, (u_long)dest);#endif		}	}#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET        /*         * Save the source and destination address from the original packet,         * since they will be unavailable after the ip_output() call returns.         */        srcAddr = ip->ip_src.s_addr;        dstAddr = ip->ip_dst.s_addr;#endif#endif        /*         * Set the M_FORWARD flag to nominate the route for the fast path.         */        m->m_flags |= M_FORWARD;	error = ip_output(m, (struct mbuf *)0, &ipforward_rt, IP_FORWARDING#ifdef DIRECTED_BROADCAST			    | IP_ALLOWBROADCAST#endif                          , 0);#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_NOTICE event */    WV_NET_ADDROUT_EVENT_3 (NET_CORE_EVENT, WV_NET_NOTICE, 11, 15,                            srcAddr, dstAddr,                            WV_NETEVENT_IPFWD_STATUS, WV_NET_SEND,                            error, srcAddr, dstAddr)#endif  /* INCLUDE_WVNET */#endif	if (error)#ifdef VIRTUAL_STACK		_ipstat.ips_cantforward++;#else		ipstat.ips_cantforward++;#endif /* VIRTUAL_STACK */	else {#ifdef VIRTUAL_STACK		_ipstat.ips_forward++;#else		ipstat.ips_forward++;#endif /* VIRTUAL_STACK */		if (type)#ifdef VIRTUAL_STACK			_ipstat.ips_redirectsent++;#else			ipstat.ips_redirectsent++;#endif /* VIRTUAL_STACK */		else {			if (mcopy)				m_freem(mcopy);			return;		}	}	if (mcopy == NULL)		return;	destifp = NULL;	switch (error) {	case 0:				/* forwarded, but need redirect */		/* type, code set above */		break;	case ENETUNREACH:		/* shouldn't happen, checked above */	case EHOSTUNREACH:	case ENETDOWN:	case EHOSTDOWN:	default:		type = ICMP_UNREACH;		code = ICMP_UNREACH_HOST;		break;	case EMSGSIZE:		type = ICMP_UNREACH;		code = ICMP_UNREACH_NEEDFRAG;		if (ipforward_rt.ro_rt)			destifp = ipforward_rt.ro_rt->rt_ifp;#ifdef VIRTUAL_STACK		_ipstat.ips_cantfrag++;#else		ipstat.ips_cantfrag++;#endif /* VIRTUAL_STACK */		break;	case ENOBUFS:		type = ICMP_SOURCEQUENCH;		code = 0;		break;	}	if (_icmpErrorHook != NULL)	    (*_icmpErrorHook)(mcopy, type, code, dest, destifp);}#ifdef SYSCTL_SUPPORTintip_sysctl(name, namelen, oldp, oldlenp, newp, newlen)	int *name;	u_int namelen;	void *oldp;	size_t *oldlenp;	void *newp;	size_t newlen;{/* * XXX - This event cannot currently occur: the ip_sysctl() routine *       is only called by the Unix sysctl command which is not supported *       by VxWorks#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /@ WV_NET_INFO event @/    WV_NET_MARKER_1 (NET_AUX_EVENT, WV_NET_INFO, 9, 19,                      WV_NETEVENT_IPCTRL_START, name[0])#endif  /@ INCLUDE_WVNET @/#endif * XXX - end of unused event */ 	/* All sysctl names at this level are terminal. */	if (namelen != 1)            {/* * XXX - This event cannot currently occur: the ip_sysctl() routine *       is only called by the Unix sysctl command which is not supported *       by VxWorks#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /@ WV_NET_ERROR event @/            WV_NET_MARKER_1 (NET_AUX_EVENT, WV_NET_ERROR, 20, 11,                              WV_NETEVENT_IPCTRL_BADCMDLEN, namelen)#endif  /@ INCLUDE_WVNET @/#endif * XXX - end of unused event */             return (ENOTDIR);            }	switch (name[0]) {	case IPCTL_FORWARDING:		return (sysctl_int(oldp, oldlenp, newp, newlen, &ipforwarding));	case IPCTL_SENDREDIRECTS:		return (sysctl_int(oldp, oldlenp, newp, newlen,			&ipsendredirects));	case IPCTL_DEFTTL:		return (sysctl_int(oldp, oldlenp, newp, newlen, &ip_defttl));#ifdef notyet	case IPCTL_DEFMTU:		return (sysctl_int(oldp, oldlenp, newp, newlen, &ip_mtu));#endif	default:/* * XXX - This event cannot currently occur: the ip_sysctl() routine *       is only called by the Unix sysctl command which is not supported *       by VxWorks#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /@ WV_NET_ERROR event @/            WV_NET_MARKER_1 (NET_AUX_EVENT, WV_NET_ERROR, 21, 12,                              WV_NETEVENT_IPCTRL_BADCMD, name[0])#endif  /@ INCLUDE_WVNET @/#endif * XXX - end of unused event */ 		return (EOPNOTSUPP);	}	/* NOTREACHED */}#endif /* SYSCTL_SUPPORT */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一二三四在线| 成人综合婷婷国产精品久久| 久久99精品国产麻豆婷婷洗澡| 国产美女av一区二区三区| 在线视频一区二区三区| 久久精品视频免费| 日本不卡123| 欧美日韩免费视频| 亚洲乱码中文字幕综合| 国产一区二三区好的| 欧美丰满美乳xxx高潮www| 亚洲美女区一区| www.欧美亚洲| 国产亚洲视频系列| 韩国v欧美v亚洲v日本v| 欧美一区二视频| 亚洲123区在线观看| 91极品视觉盛宴| 亚洲特黄一级片| 91麻豆精东视频| 国产精品成人免费| 成人网页在线观看| 国产清纯在线一区二区www| 国产在线精品一区在线观看麻豆| 91精品午夜视频| 天天综合天天做天天综合| 欧美日韩一区 二区 三区 久久精品| 亚洲精品少妇30p| 99精品久久免费看蜜臀剧情介绍| 国产精品福利一区| 91丨porny丨在线| 亚洲欧美激情插| 欧美视频一区二区| 天堂va蜜桃一区二区三区漫画版| 欧美日韩综合在线| 婷婷久久综合九色国产成人| 91精品国产全国免费观看| 日韩中文字幕区一区有砖一区| 欧美视频日韩视频在线观看| 婷婷中文字幕综合| 日韩欧美综合一区| 国产东北露脸精品视频| 国产精品视频在线看| 91视视频在线观看入口直接观看www| 亚洲欧美日韩国产综合在线 | 精品一区二区三区影院在线午夜| 欧美高清精品3d| 狠狠色丁香婷婷综合| 久久久久国产精品厨房| aaa国产一区| 午夜欧美在线一二页| 日韩欧美一区二区在线视频| 精久久久久久久久久久| 国产精品欧美综合在线| 欧洲精品中文字幕| 男女男精品视频网| 国产人成亚洲第一网站在线播放| 91亚洲精品一区二区乱码| 亚洲一区影音先锋| 欧美电视剧免费全集观看| 成人午夜免费电影| 亚洲国产视频在线| 久久久久久久免费视频了| 99久久99久久免费精品蜜臀| 午夜日韩在线观看| 日韩国产精品久久| 久久婷婷综合激情| 色av成人天堂桃色av| 经典三级在线一区| 一区二区三区欧美| 欧美精品一区二区久久婷婷| 不卡免费追剧大全电视剧网站| 亚洲va天堂va国产va久| 欧美激情一区不卡| 欧美日韩在线免费视频| 不卡一区在线观看| 久草热8精品视频在线观看| 亚洲精品视频观看| 国产欧美日韩卡一| 日韩一区二区电影在线| 91免费小视频| 国产精品影视在线| 日韩激情一区二区| 亚洲另类在线视频| 亚洲国产高清在线| 久久久久久久综合日本| 91精品久久久久久久久99蜜臂| 91丨porny丨蝌蚪视频| 国产精品亚洲一区二区三区在线| 天涯成人国产亚洲精品一区av| 亚洲摸摸操操av| 国产精品麻豆视频| 久久久久久免费网| 欧美成人精品高清在线播放| 欧美日韩国产一级二级| 91行情网站电视在线观看高清版| 国产激情一区二区三区桃花岛亚洲| 午夜精品久久久久影视| 一区二区三区蜜桃| 亚洲色图欧美偷拍| 成人欧美一区二区三区小说| 久久久久久亚洲综合| 日韩视频一区二区| 日韩欧美在线1卡| 欧美一二三区在线| 欧美一区二区久久| 宅男噜噜噜66一区二区66| 欧美视频一区二区三区四区| 在线影视一区二区三区| 色综合天天综合网天天看片| 99久久综合色| 色婷婷国产精品久久包臀 | 蜜桃视频一区二区三区 | 国产一区二区电影| 国产在线不卡视频| 狠狠网亚洲精品| 国产美女av一区二区三区| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 亚洲欧美日韩国产另类专区| 国产精品久久久久久久久动漫| 国产精品丝袜91| 一区二区三区欧美亚洲| 午夜视频久久久久久| 久久精品72免费观看| 久久99精品久久只有精品| 国产一区二区三区四| 盗摄精品av一区二区三区| 成人国产精品免费观看视频| 色综合天天性综合| 欧美视频三区在线播放| 日韩欧美国产1| 欧美激情在线看| 亚洲精品国产一区二区三区四区在线| 亚洲精品日产精品乱码不卡| 亚洲成人资源网| 91网站在线播放| 欧美日韩国产天堂| 久久久久高清精品| 日韩毛片在线免费观看| 亚洲不卡在线观看| 国产麻豆精品久久一二三| 成人免费看片app下载| 欧美伊人精品成人久久综合97 | 色综合天天视频在线观看 | 老司机精品视频线观看86| 丁香天五香天堂综合| 在线免费观看一区| 久久亚洲欧美国产精品乐播| 亚洲色欲色欲www| 美女视频网站黄色亚洲| 99视频精品免费视频| 欧美另类久久久品| 国产女同互慰高潮91漫画| 亚洲曰韩产成在线| 国产精品小仙女| 精品视频免费在线| 国产精品国产精品国产专区不蜜 | 亚洲天堂成人网| 国内一区二区视频| 色呦呦一区二区三区| 欧美一级精品大片| 亚洲狠狠丁香婷婷综合久久久| 激情五月婷婷综合| 欧美三级资源在线| 综合久久国产九一剧情麻豆| 蜜桃av噜噜一区| 在线影院国内精品| 国产精品进线69影院| 国产自产视频一区二区三区| 欧美美女一区二区三区| 专区另类欧美日韩| 国产美女娇喘av呻吟久久| 欧美一区二区三区白人| 亚洲一区二区三区爽爽爽爽爽| 国产精品主播直播| 欧美大片拔萝卜| 婷婷六月综合网| 欧美综合一区二区| 亚洲人吸女人奶水| 成人免费视频视频在线观看免费 | 狂野欧美性猛交blacked| 欧美视频在线播放| 一区二区三区成人| 95精品视频在线| 国产精品日韩精品欧美在线| 国内外成人在线| 日韩精品一区二区三区老鸭窝| 亚洲综合精品久久| 一本大道久久精品懂色aⅴ| 国产精品系列在线| 成人毛片在线观看| 国产人成亚洲第一网站在线播放| 国产精品一区二区免费不卡| 精品日韩欧美在线| 国内成+人亚洲+欧美+综合在线| 亚洲精品一区二区三区福利| 久久精品国产亚洲a| 亚洲精品在线免费播放| 极品少妇一区二区| 国产网站一区二区|