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

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

?? route.c

?? vxwork源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
		if ( ((ROUTE_ENTRY*)rt)->primaryRouteFlag == FALSE)		    routeEntryFree ((ROUTE_ENTRY*)rt, FALSE);                else		    Free ((ROUTE_ENTRY*)rt);#else                Free (rt);#endif /* ROUTER_STACK */	}}/* * Force a routing table entry to the specified * destination to go through the given gateway. * Normally called as a result of a routing redirect * message from the network layer. * * N.B.: must be called at splnet * */intrtredirect(dst, gateway, netmask, flags, src, rtp)	struct sockaddr *dst, *gateway, *netmask, *src;	int flags;	struct rtentry **rtp;{	register struct rtentry *rt;	int error = 0;	short *stat = 0;	struct rt_addrinfo info;	struct ifaddr *ifa;	/* verify the gateway is directly reachable */	if ((ifa = ifa_ifwithnet(gateway)) == 0) {		error = ENETUNREACH;		goto out;	}	rt = rtalloc1(dst, 0);	/*	 * If the redirect isn't from our current router for this dst,	 * it's either old or wrong.  If it redirects us to ourselves,	 * we have a routing loop, perhaps as a result of an interface	 * going down recently.	 */#define	equal(a1, a2) (bcmp((caddr_t)(a1), (caddr_t)(a2), (a1)->sa_len) == 0)	if (!(flags & RTF_DONE) && rt &&	     (!equal(src, rt->rt_gateway) || rt->rt_ifa != ifa))		error = EINVAL;	else if (ifa_ifwithaddr(gateway))		error = EHOSTUNREACH;	if (error)		goto done;	/*	 * Create a new entry if we just got back a wildcard entry	 * or the the lookup failed.  This is necessary for hosts	 * which use routing redirects generated by smart gateways	 * to dynamically build the routing tables.	 */	if ((rt == 0) || (rt_mask(rt) && rt_mask(rt)->sa_len < 2))		goto create;	/*	 * Don't listen to the redirect if it's	 * for a route to an interface. 	 */	if (rt->rt_flags & RTF_GATEWAY) {		if (((rt->rt_flags & RTF_HOST) == 0) && (flags & RTF_HOST)) {			/*			 * Changing from route to net => route to host.			 * Create new route, rather than smashing route to net.			 */		create:			flags |=  RTF_GATEWAY | RTF_DYNAMIC;                        /*                         * Create the new route entry using the default                         * weight. Do not report the change since the                         * later hook generates both types of messages.                         */                        error = rtrequestAddEqui (dst, netmask, gateway, flags,                                                  M2_ipRouteProto_icmp, 0,                                                  FALSE, FALSE, NULL);			/* error = rtrequest((int)RTM_ADD, dst, gateway,				    netmask, flags,				    (struct rtentry **)0);                        */			stat = &rtstat.rts_dynamic;		} else {			/*			 * Smash the current notion of the gateway to			 * this destination.  Should check about netmask!!!			 */			if (!(error = rt_setgate (rt, rt_key(rt), gateway)))			    {			    rt->rt_flags |= RTF_MODIFIED;			    flags |= RTF_MODIFIED;			    stat = &rtstat.rts_newgateway;			    rt->rt_mod = tickGet(); 	    /* last modified */			    rtmodified++; 			    }		}	} else		error = EHOSTUNREACH;done:	if (rt) {		if (rtp && !error)			*rtp = rt;		else			rtfree(rt);	}out:	if (error)            {#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_CRITICAL event */            WV_NET_MARKER_2 (NET_AUX_EVENT, WV_NET_CRITICAL, 27, 6,                             WV_NETEVENT_RTRESET_BADDEST,                             error,                              ((struct sockaddr_in *)gateway)->sin_addr.s_addr)#endif  /* INCLUDE_WVNET */#endif            rtstat.rts_badredirect++;            }	else if (stat != NULL)		(*stat)++;	bzero((caddr_t)&info, sizeof(info));	info.rti_info[RTAX_DST] = dst;	info.rti_info[RTAX_GATEWAY] = gateway;	info.rti_info[RTAX_NETMASK] = netmask;	info.rti_info[RTAX_AUTHOR] = src;        if (rtMissMsgHook)            (*rtMissMsgHook) (RTM_REDIRECT, &info, flags, error);#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_VERBOSE event */        WV_NET_MARKER_4 (NET_AUX_EVENT, WV_NET_VERBOSE, 34, 14,                         WV_NETEVENT_RTRESET_STATUS,                         error,                          ((struct sockaddr_in *)dst)->sin_addr.s_addr,                          ((struct sockaddr_in *)gateway)->sin_addr.s_addr,                          ((struct sockaddr_in *)netmask)->sin_addr.s_addr)#endif  /* INCLUDE_WVNET */#endif	return (error); }/** Routing table ioctl interface.** WRS MODS support for this function is being for backward compatibility.* This function has be moved else where because the routing code has * nothing to do with internet specific addresses since routing is independent* of the sockaddress family.*/intrtioctl(req, data)	int req;	caddr_t data;{	struct ortentry * pORE = NULL;	struct sockaddr netMask;	struct sockaddr * pNetMask = &netMask; 	register u_long i; 	register u_long net;	register struct in_ifaddr *ia;#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_INFO event */    WV_NET_MARKER_1 (NET_AUX_EVENT, WV_NET_INFO, 20, 12,                     WV_NETEVENT_RTIOCTL_START, req)#endif  /* INCLUDE_WVNET */#endif        if (req != SIOCADDRT && req != SIOCDELRT)            {#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_ERROR event */            WV_NET_MARKER_1 (NET_AUX_EVENT, WV_NET_ERROR, 37, 8,                             WV_NETEVENT_RTIOCTL_BADREQ, req)#endif  /* INCLUDE_WVNET */#endif            return (EINVAL);            }	pORE = (struct ortentry *)data;	/* BSD4.3 to BSD4.4 conversion */	if (req == SIOCADDRT)	    req = RTM_ADD;	else	    req = RTM_DELETE;	/* 	 * Set the netmask to the netmask of the interface address.	 * This has to be removed if provision is made with routeAdd	 * to add the network mask. 	 */	bzero ((caddr_t)&netMask, sizeof (struct sockaddr));	/* check for default gateway address */	if (((struct sockaddr_in *)(&pORE->rt_dst))->sin_addr.s_addr 	    != INADDR_ANY )	    {	    i = ntohl(((struct sockaddr_in*)&pORE->rt_dst)->sin_addr.s_addr);			    pNetMask->sa_family = AF_INET; 	    pNetMask->sa_len    = 8;	    if (IN_CLASSA(i))		{		((struct sockaddr_in *)pNetMask)->sin_addr.s_addr = 		    htonl(IN_CLASSA_NET);		net = i & IN_CLASSA_NET;		}	    else if (IN_CLASSB(i))		{		((struct sockaddr_in *)pNetMask)->sin_addr.s_addr = 		    htonl(IN_CLASSB_NET);		net = i & IN_CLASSB_NET;		}	    else if (IN_CLASSC(i))		{		((struct sockaddr_in *)pNetMask)->sin_addr.s_addr = 		    htonl(IN_CLASSC_NET);		net = i & IN_CLASSC_NET;		}	    else		{		((struct sockaddr_in *)pNetMask)->sin_addr.s_addr = 		    htonl(IN_CLASSD_NET);		net = i & IN_CLASSD_NET;		}	    /*	     * Check whether network is a subnet;	     * if so, return subnet number.	     */#ifdef VIRTUAL_STACK	    for (ia = _in_ifaddr; ia; ia = ia->ia_next)#else	    for (ia = in_ifaddr; ia; ia = ia->ia_next)#endif /* VIRTUAL_STACK */		if (net == ia->ia_net)		    ((struct sockaddr_in *)pNetMask)->sin_addr.s_addr =			htonl(ia->ia_subnetmask); 	    in_socktrim ((struct sockaddr_in *)pNetMask); 	    }       pORE->rt_flags |= RTF_GATEWAY;       if(pORE->rt_flags & RTF_HOST)	   pNetMask=0; #ifdef DEBUG       logMsg("rtIoctl:before rtrequestAddEqui/DelEqui\n",0,0,0,0,0,0);#endif        /*         * Add the requested route using the default weight value or delete         * the matching entry. In either case, report the change using both         * routing socket messages and direct callbacks.         */       if(req==RTM_ADD)	   return (rtrequestAddEqui (&pORE->rt_dst, pNetMask,                                     &pORE->rt_gateway, pORE->rt_flags,                                     M2_ipRouteProto_other, 0,                                     TRUE, TRUE, NULL));       else	   return (rtrequestDelEqui (&pORE->rt_dst, pNetMask,                                     &pORE->rt_gateway, pORE->rt_flags,                                     M2_ipRouteProto_other, TRUE, TRUE, NULL));}#define ROUNDUP(a) (a>0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))int rt_fixdelete (struct radix_node *, void *);static int rt_fixchange (struct radix_node *, void *);intrtrequest(req, dst, gateway, netmask, flags, ret_nrt)	int req, flags;	struct sockaddr *dst, *gateway, *netmask;	struct rtentry **ret_nrt;{	int s = splnet(); int error = 0;	register struct rtentry *rt;	register struct radix_node *rn;	register struct radix_node_head *rnh;	struct ifaddr *ifa;	struct sockaddr *ndst;#define senderr(x) { error = x ; goto bad; }	if ((rnh = rt_tables[dst->sa_family]) == 0)		senderr(ESRCH);	if (flags & RTF_HOST)            {            netmask = 0;	    }        if (netmask)	    {	    TOS_SET (netmask, 0x1f);  /* set the 5 bits in the mask corresponding					 to the TOS bits */	    }	switch (req) {	case RTM_DELETE:		if ((rn = rnh->rnh_deladdr(dst, netmask, rnh)) == 0)			senderr(ESRCH);		if (rn->rn_flags & (RNF_ACTIVE | RNF_ROOT))                    {#ifdef WV_INSTRUMENTATION#ifdef INCLUDE_WVNET    /* WV_NET_EMERGENCY event */                    WV_NET_MARKER_0 (NET_AUX_EVENT, WV_NET_EMERGENCY, 22, 2,                                     WV_NETEVENT_RTREQ_PANIC)#endif  /* INCLUDE_WVNET */#endif                    panic ("rtrequest delete");                    }		rt = (struct rtentry *)rn;                /*                 * Search the appropriate subtree to remove any children                 * (created for path MTU results). This cleanup must occur                 * before clearing the RTF_UP flag or the system might                 * release the current node's memory prematurely if the                 * search deletes the last reference.                 */                if (dst->sa_family == AF_INET &&                    (rt->rt_flags & RTF_CLONING) && netmask)                    {                    rn_walksubtree (rnh, dst, netmask, rt_fixdelete, rt);                    }		rt->rt_flags &= ~RTF_UP;		if (rt->rt_gwroute) {			rt = rt->rt_gwroute; RTFREE(rt);			(rt = (struct rtentry *)rn)->rt_gwroute = 0;		}		if ((ifa = rt->rt_ifa) && ifa->ifa_rtrequest)			ifa->ifa_rtrequest(RTM_DELETE, rt, SA(0));		rttrash++;		if (ret_nrt)			*ret_nrt = rt;		else if (rt->rt_refcnt <= 0) {			rt->rt_refcnt++;			rtfree(rt);		}		rtmodified++;		break;	case RTM_RESOLVE:		if (ret_nrt == 0 || (rt = *ret_nrt) == 0)                        {#ifdef DEBUG                        logMsg("rtrequest: RTM_RESOLVE, EINVAL error\n",0,0,0,0,0,0);#endif			senderr(EINVAL);                        }		ifa = rt->rt_ifa;		flags = rt->rt_flags & ~RTF_CLONING;		gateway = rt->rt_gateway;		if ((netmask = rt->rt_genmask) == 0)			{			flags |= RTF_HOST;			}		goto makeroute;	case RTM_ADD:		if ((ifa = ifa_ifwithroute(flags, dst, gateway)) == 0)			senderr(ENETUNREACH);	makeroute:		R_Malloc(rt, struct rtentry *, sizeof(ROUTE_ENTRY));		if (rt == 0)			senderr(ENOBUFS);		Bzero(rt, sizeof (ROUTE_ENTRY));		rt->rt_flags = RTF_UP | flags;		if (rt_setgate(rt, dst, gateway)) {			Free(rt);			senderr(ENOBUFS);		}		ndst = rt_key(rt);		if (netmask) {			rt_maskedcopy(dst, ndst, netmask);		} else			Bcopy(dst, ndst, dst->sa_len);            /* Set IP routes to create children (for path MTU results). */            if (ndst->sa_family == AF_INET &&                !IN_MULTICAST                    (ntohl ( ((struct sockaddr_in *)ndst)->sin_addr.s_addr)) &&                ! (rt->rt_flags & RTF_HOST))                {                if (((struct sockaddr_in *)netmask)->sin_addr.s_addr                          != 0xffffffff)                    {                    rt->rt_flags |= RTF_CLONING;                    }                }		rn = rnh->rnh_addaddr((caddr_t)ndst, (caddr_t)netmask,					rnh, rt->rt_nodes);		/* update proto field of rt entry, in the gateway sockaddr */		if ((req == RTM_ADD) && (gateway->sa_family == AF_INET))		    RT_PROTO_SET (ndst, RT_PROTO_GET (dst));                if (rn == 0 && (rt->rt_flags & RTF_HOST))                    {                    /* Replace matching (cloned) entry if possible. */                    rn = routeSwap (rnh, rt, ndst, netmask);                    }		if (rn == 0) {			if (rt->rt_gwroute)				rtfree(rt->rt_gwroute);			Free(rt_key(rt));			Free(rt);			senderr(EEXIST);		}		ifa->ifa_refcnt++;		rt->rt_ifa = ifa;		rt->rt_ifp = ifa->ifa_ifp;		if (req == RTM_RESOLVE)                    {                    rt->rt_rmx = (*ret_nrt)->rt_rmx; /* copy metrics */                    rt->rt_parent = (*ret_nrt);   /* record source route */                    (*ret_nrt)->rt_refcnt++;                    rt->rt_flags |= RTF_CLONED;                                        /*                     * Mark the cloned route as a representative route                     * so that when it is deleted, Fastpath is called with                     * ROUTE_REP_DEL operation and the entry gets removed                     * from the Fastpath cache                     */                     ((ROUTE_ENTRY*)rt)->primaryRouteFlag = TRUE;                    }                if (rt->rt_ifp->if_type == IFT_PMP)                    {                    /*                     * Point-to-multipoint devices do not use a common                     * MTU value for all destinations or perform address                     * resolution, so cloning the interface route to store                     * that information is not necessary.                     */                    rt->rt_flags &= ~RTF_CLONING;                    }                /* Assign initial path MTU estimate, if enabled for route. */                if (!rt->rt_rmx.rmx_mtu && !(rt->rt_rmx.rmx_locks & RTV_MTU)                    && rt->rt_ifp)                    rt->rt_rmx.rmx_mtu = rt->rt_ifp->if_mtu;		if (ifa->ifa_rtrequest)			ifa->ifa_rtrequest(req, rt, SA(ret_nrt ? *ret_nrt : 0));                if (ndst->sa_family == AF_INET)                    {                    /*                     * Remove any cloned routes which a new                     * network route overrides.                     */                    if (!(rt->rt_flags & RTF_HOST) && rt_mask (rt) != 0)                        {                        rn_walksubtree (rnh, ndst, netmask, rt_fixchange, rt);                        }                    }		if (ret_nrt) {			*ret_nrt = rt;			rt->rt_refcnt++;		}		rt->rt_mod = tickGet(); 	/* last modified */		rtmodified++;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品中文字幕一区二区三区| 国产激情视频一区二区三区欧美 | 自拍av一区二区三区| 精品sm在线观看| 欧美成人精品1314www| 日韩一区二区三区四区| 欧美一区二区三区四区在线观看| 欧美日韩精品二区第二页| 欧美日韩在线免费视频| 欧美日韩高清一区| 91精品国产入口在线| 日韩欧美中文一区二区| 日韩女优视频免费观看| 久久这里只有精品首页| 久久综合九色欧美综合狠狠| 久久综合中文字幕| 国产精品网站在线播放| 亚洲男同性恋视频| 亚洲午夜电影在线| 日韩电影网1区2区| 久久99久久99| 国产v日产∨综合v精品视频| 成人小视频在线| 日本韩国欧美三级| 91成人免费在线视频| 欧美一区中文字幕| 久久综合久久综合亚洲| 亚洲天堂中文字幕| 午夜欧美在线一二页| 美女一区二区三区| 成人性生交大片免费看中文| 色88888久久久久久影院按摩| 欧美色区777第一页| 欧美mv和日韩mv国产网站| 国产三级三级三级精品8ⅰ区| 国产精品久久久一区麻豆最新章节| 一区二区在线免费观看| 日韩电影在线观看网站| 国产成人精品aa毛片| 91福利视频久久久久| 欧美成人伊人久久综合网| 国产精品久久久久久久蜜臀| 午夜成人免费视频| 国产经典欧美精品| 91精品国产综合久久香蕉麻豆| 久久亚洲一区二区三区四区| 亚洲日本乱码在线观看| 免费成人在线播放| 97精品视频在线观看自产线路二| 欧美日本国产视频| 亚洲国产精华液网站w| 亚洲午夜一区二区| 国产超碰在线一区| 欧美日韩成人一区二区| 国产精品动漫网站| 免费黄网站欧美| 91在线丨porny丨国产| 日韩片之四级片| 亚洲综合激情网| 懂色av一区二区三区免费看| 欧美精品色综合| 最近中文字幕一区二区三区| 久久精品国内一区二区三区| 91在线视频免费91| 久久伊人蜜桃av一区二区| 亚洲无人区一区| www.综合网.com| 精品国产伦一区二区三区观看体验| 亚洲精品国产成人久久av盗摄| 国内外成人在线| 51午夜精品国产| 亚洲一线二线三线久久久| 国产精品综合网| 91精品视频网| 亚洲国产毛片aaaaa无费看| av欧美精品.com| 久久久久久免费| 麻豆国产欧美日韩综合精品二区| 一本色道久久综合亚洲91| 久久久精品蜜桃| 国产一区在线视频| 欧美一级理论性理论a| 亚洲一级在线观看| 91麻豆免费视频| 国产精品伦理在线| 国产成人免费在线观看不卡| 日韩美女视频在线| 日本美女视频一区二区| 欧美视频一区二区在线观看| 亚洲免费看黄网站| 91视频免费观看| 国产区在线观看成人精品| 国产乱码精品一区二区三区av | 一本久道中文字幕精品亚洲嫩| 国产视频在线观看一区二区三区| 日韩av电影免费观看高清完整版| 欧美三级日韩三级| 亚洲一区av在线| 精品污污网站免费看| 亚洲国产视频a| 欧美日韩电影在线| 午夜欧美在线一二页| 欧美日韩国产精品成人| 亚洲成人你懂的| 欧美日韩国产高清一区二区三区| 亚洲在线一区二区三区| 日本韩国精品在线| 亚洲一二三四久久| 欧美日韩一区国产| 午夜精品久久久久久久久久| 欧美另类videos死尸| 三级久久三级久久| 91麻豆精品国产自产在线观看一区 | 99这里只有久久精品视频| 国产精品剧情在线亚洲| 91免费观看国产| 亚洲国产日韩一级| 欧美精品三级日韩久久| 蜜乳av一区二区三区| 精品免费日韩av| 大桥未久av一区二区三区中文| 中文字幕中文字幕一区| 在线一区二区三区四区五区 | 九一久久久久久| 国产欧美一区二区三区在线看蜜臀 | 成人在线视频一区二区| 中文字幕av一区二区三区高| 99国产一区二区三精品乱码| 亚洲日本在线观看| 欧美高清视频一二三区 | 一本大道av伊人久久综合| 亚洲一二三四在线| 337p粉嫩大胆色噜噜噜噜亚洲| 国产suv精品一区二区6| 亚洲男同性恋视频| 欧美成人一区二区三区片免费 | 国产成人免费视频精品含羞草妖精| 国产精品成人免费精品自在线观看| 欧美四级电影网| 国产又粗又猛又爽又黄91精品| 国产精品动漫网站| 日韩一二三区视频| 粉嫩高潮美女一区二区三区| 亚洲精品日韩专区silk| 日韩欧美成人激情| 91亚洲资源网| 老司机精品视频线观看86 | 久久99精品久久久久久| 亚洲欧洲www| 欧美一级欧美三级| www.欧美.com| 欧美aaaaaa午夜精品| 国产精品短视频| 欧美电影精品一区二区| 91片在线免费观看| 久久精品国产网站| 亚洲精品欧美二区三区中文字幕| 欧美成人性战久久| 在线观看免费一区| 成人免费视频免费观看| 日韩电影在线一区| 亚洲精选视频免费看| 精品国免费一区二区三区| 日本国产一区二区| 成人网男人的天堂| 久久国产精品免费| 亚洲国产一区在线观看| 中文字幕日韩一区| 26uuu亚洲| 91精品国产综合久久久蜜臀粉嫩 | 91女神在线视频| 国产精品18久久久久久久网站| 亚洲不卡av一区二区三区| 中文一区一区三区高中清不卡| 欧美一区二区三区免费| 在线影院国内精品| 99久久精品一区二区| 国产在线精品一区二区| 日韩精品亚洲一区| 亚洲一区影音先锋| **性色生活片久久毛片| 国产欧美一二三区| 精品国产凹凸成av人导航| 欧美日韩三级视频| 色婷婷综合久久久中文一区二区 | 久久九九久久九九| 日韩免费高清视频| 日韩一级黄色大片| 欧美一区二区三区啪啪| 欧美视频在线一区二区三区 | 日韩欧美国产精品| 欧美精品亚洲二区| 欧美日韩国产色站一区二区三区| 91久色porny | 蜜桃久久久久久久| 热久久国产精品| 奇米888四色在线精品| 日韩高清国产一区在线| 日韩高清一区二区| 毛片一区二区三区|