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

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

?? tables.c

?? vxwork源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* tables.c - routines for managing RIP internal routing table *//* Copyright 1984 - 2002 Wind River Systems, Inc. */#include "copyright_wrs.h"/* * Copyright (c) 1983, 1988, 1993 *	The Regents of the University of California.  All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *	This product includes software developed by the University of *	California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * @(#)tables.c	8.2 (Berkeley) 4/28/95 *//*modification history--------------------01r,22mar02,niq  Merged from Synth view, tor3_x.synth branch, ver 02c01q,24jan02,niq  SPR 72415 - Added support for Route tags01p,15oct01,rae  merge from truestack ver 01w, base 01m (SPRs 70188, 69983,                 65547, etc.)01o,21nov00,spm  fixed creation of internal default route (SPR #62533)01n,10nov00,spm  merged from version 01n of tor3_x branch (code cleanup)01m,16mar99,spm  recovered orphaned code from tor1_0_1.sens1_1 (SPR #25770)01l,29sep98,spm  added support for IP group MIB (SPR #9374); removed unneeded                 routine (SPR #21109).01k,11sep98,spm  moved mutual exclusion semaphore to prevent any collisions                 between RIP tasks (SPR #22350), removed all references to                  bloated trace commands (SPR #22350)01j,01sep98,spm  corrected processing of RIPv2 route updates to support                 version changes (SPR #22158); added support for default                 routes (SPR #22067)01i,26jul98,spm  removed compiler warnings01h,06oct97,gnn  fixed insque/remque casting bug and cleaned up warnings01g,12aug97,gnn  fixed prototypes for mRouteEntryDelete().01f,15may97,gnn  added code to implement route leaking.01e,14apr97,gnn  fixed calls to mRouteEntryAdd to follow Rajesh's changes.01d,07apr97,gnn  cleared up some of the more egregious warnings.                 added MIB-II interfaces and options.01c,24feb97,gnn  added rip version 2 functionality.01b,05dec96,gnn  changed insque/remque to _insque/_remque for compatability.01a,26nov96,gnn  created from BSD4.4 routed*//*DESCRIPTION*//* * Routing Table Management Daemon */#include "vxWorks.h"#include "rip/defs.h"#include "sys/ioctl.h"#include "netinet/in.h"#include "routeLib.h"#include "errno.h"#include "inetLib.h"#include "semLib.h"#include "logLib.h"#include "m2Lib.h" #include "stdlib.h"#include "routeEnhLib.h"#ifdef VIRTUAL_STACK#include "netinet/vsLib.h"#include "netinet/vsRip.h"#endif /* VIRTUAL_STACK *//* defines */#ifdef RTM_ADD#define FIXLEN(s) {if ((s)->sa_len == 0) (s)->sa_len = sizeof *(s);}#else#define FIXLEN(s) { }#endif /* RTM_ADD *//* globals */#ifndef VIRTUAL_STACKIMPORT int routedDebug;IMPORT RIP ripState;#endif /* VIRTUAL_STACK *//* locals */LOCAL struct sockaddr_in inet_default = {#ifdef RTM_ADD        sizeof (inet_default),#endif        AF_INET, INADDR_ANY };/* forward declarations */IMPORT void ripSockaddrPrint (struct sockaddr * pSockAddr);LOCAL void ripInsque (NODE * pNode, NODE * pPrev);LOCAL void ripRemque (NODE * pNode);LOCAL STATUS ripSystemRouteAdd (long dstIp, long gateIp, long mask, int flags);LOCAL STATUS ripSystemRouteDelete (long dstIp, long gateIp, long mask, int flags);void ripRouteMetricSet (struct rt_entry * pRtEntry);/* * Lookup dst in the tables for an exact match. */struct rt_entry *rtlookup (dst)	struct sockaddr *dst;{	register struct rt_entry *rt;	register struct rthash *rh;	register u_int hash;	struct sockaddr target;	struct afhash h;	int doinghost = 1;	if (dst->sa_family >= AF_MAX)		return (0);	(*afswitch[dst->sa_family].af_hash) (dst, &h);	hash = h.afh_hosthash;	rh = &hosthash[hash & ROUTEHASHMASK];        /*          * The equal() comparison within the following loop expects all         * members of the structure except the family, length, and address         * fields to be zero. This condition may not be met when processing a         * RIPv2 packet. In that case, the destination passed to this routine          * accesses a route within the payload of a RIP message, so some         * fields of the overlayed structure will not be zero as expected.         * Duplicate or incorrect routes will be added because matching routes         * are not detected. To avoid this problem, copy the required fields          * from the route destination value to a clean structure.         */        bzero ( (char *)&target, sizeof (struct sockaddr));        target.sa_family = dst->sa_family;        target.sa_len = dst->sa_len;        ((struct sockaddr_in *)&target)->sin_addr.s_addr =                     ((struct sockaddr_in *)dst)->sin_addr.s_addr;        again:	for (rt = rh->rt_forw; rt != (struct rt_entry *)rh; rt = rt->rt_forw) {		if (rt->rt_hash != hash)			continue;		if (equal (&rt->rt_dst, &target))			return (rt);	}	if (doinghost) {		doinghost = 0;		hash = h.afh_nethash;		rh = &nethash[hash & ROUTEHASHMASK];		goto again;	}	return (0);}#ifdef notyet#ifndef VIRTUAL_STACKstruct sockaddr wildcard;	/* zero valued cookie for wildcard searches */#endif#endif/* * Find a route to dst as the kernel would. */struct rt_entry *rtfind (dst)	struct sockaddr *dst;{	register struct rt_entry *rt;	register struct rthash *rh;	register u_int hash;	struct sockaddr target;	struct afhash h;	int af = dst->sa_family;	int doinghost = 1;        int (*match) () = NULL; 	/* Assigned later for network hash search. */	if (af >= AF_MAX)		return (0);	(*afswitch[af].af_hash) (dst, &h);	hash = h.afh_hosthash;	rh = &hosthash[hash & ROUTEHASHMASK];        /*          * The equal() comparison within the following loop expects all         * members of the structure except the family, length, and address         * fields to be zero. This condition may not be met when processing a         * RIPv2 packet. In that case, the destination passed to this routine          * accesses a route within the payload of a RIP message, so some         * fields of the overlayed structure will not be zero as expected,         * and existing host routes would be missed. To avoid this problem,              * copy the required fields from the route destination value to a          * clean structure.         */        bzero ( (char *)&target, sizeof (struct sockaddr));        target.sa_family = dst->sa_family;        target.sa_len = dst->sa_len;        ((struct sockaddr_in *)&target)->sin_addr.s_addr =                     ((struct sockaddr_in *)dst)->sin_addr.s_addr;        again:	for (rt = rh->rt_forw; rt != (struct rt_entry *)rh; rt = rt->rt_forw) {		if (rt->rt_hash != hash)			continue;		if (doinghost) {			if (equal (&rt->rt_dst, &target))				return (rt);		} else {			if (rt->rt_dst.sa_family == af &&			    (*match) (&rt->rt_dst, dst))				return (rt);		}	}	if (doinghost) {		doinghost = 0;		hash = h.afh_nethash;		rh = &nethash[hash & ROUTEHASHMASK];		match = afswitch[af].af_netmatch;		goto again;	}#ifdef notyet	/*	 * Check for wildcard gateway, by convention network 0.	 */	if (dst != &wildcard) {		dst = &wildcard, hash = 0;		goto again;	}#endif	return (0);}struct rt_entry * rtadd    (    struct sockaddr *dst,     struct sockaddr *gate,     int metric,     int state,     struct sockaddr *netmask,     int proto,     int tag,     int from,     struct interface *ifp    )    {    struct afhash h;    register struct rt_entry *rt;    struct rthash *rh;    int af = dst->sa_family, flags;    struct sockaddr_in* pDsin;    struct sockaddr_in* pGsin;    struct sockaddr_in* pNsin;    u_int hash;    struct interface* pIfp;    int ret = ERROR;    if (af >= AF_MAX)        return ((struct rt_entry *)NULL);    (*afswitch[af].af_hash) (dst, &h);    flags = (*afswitch[af].af_rtflags) (dst);    /*     * Subnet flag isn't visible to kernel, move to state.	XXX     */    FIXLEN (dst);    FIXLEN (gate);    if (flags & RTF_SUBNET)        {        state |= RTS_SUBNET;        flags &= ~RTF_SUBNET;        }    if (flags & RTF_HOST)        {        hash = h.afh_hosthash;        rh = &hosthash[hash & ROUTEHASHMASK];	}    else        {        hash = h.afh_nethash;        rh = &nethash[hash & ROUTEHASHMASK];	}    rt = (struct rt_entry *)malloc (sizeof (*rt));    if (rt == 0)        return ((struct rt_entry *)NULL);    rt->inKernel = FALSE;    rt->rt_hash = hash;    rt->rt_dst = *dst;    rt->rt_router = *gate;    rt->rt_timer = 0;    rt->rt_flags = RTF_UP | flags;    rt->rt_state = state | RTS_CHANGED;    rt->rt_proto = proto;    rt->rt_tag = tag;    rt->rt_refcnt = 0;    rt->rt_subnets_cnt = 0;    rt->rt_orgrouter = from;    /*     * A matching interface exists for all standard destinations or     * the RIP session will not begin the add operation, but no     * interface exists for the default route. The rt_ifp field is     * equal to zero in that case.     * Also, we need to search for the gateway address for the non-rip      * route.     */    if (ifp)        rt->rt_ifp = ifp;    else        {        rt->rt_ifp = ripIfWithDstAddr (&rt->rt_dst, &rt->rt_router);        if (rt->rt_ifp == 0)             rt->rt_ifp = ripIfWithNet (&rt->rt_router);        }    if ((state & RTS_INTERFACE) == 0)        {        rt->rt_flags |= RTF_GATEWAY;        flags |= RTF_GATEWAY;        }    rt->rt_metric = metric;    /*      * Set the netmask. The interface's netmask is used if none is included     * in the RIP message. Otherwise, the specified netmask is used, except     * for default routes, which always use a netmask of 0.     */    if (netmask != (struct sockaddr *)NULL &&          ((struct sockaddr_in *)dst)->sin_addr.s_addr)        {        rt->rt_netmask = *netmask;         }    else        {        /* Leave the netmask value as zero if a default route is used. */        bzero ((char *)&rt->rt_netmask, sizeof (rt->rt_netmask));        rt->rt_netmask.sa_family = AF_INET;        rt->rt_netmask.sa_len = 16;        pNsin = (struct sockaddr_in *)&rt->rt_netmask;        if ( ((struct sockaddr_in *)dst)->sin_addr.s_addr)            {            pNsin->sin_addr.s_addr = htonl (rt->rt_ifp->int_subnetmask);            /*              * Learned routes and locally generated interface routes use the             * (possibly classless) subnet mask value. Internally generated              * routes provided to implement border gateway filtering will             * use a class-based netmask in all updates to be understood              * by RIP-2 routers on "distant" hosts not directly connected to              * the destination. Since supernet routes must use the classless              * netmask during border gateway filtering to correctly detect              * matching supernet numbers, they retain that value internally              * while the subnetted routes replace it with the class-based              * value.             */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美激情资源网| 久久久电影一区二区三区| 精品剧情v国产在线观看在线| 国产精品免费久久| 日本vs亚洲vs韩国一区三区二区| 91丨porny丨首页| 26uuu成人网一区二区三区| 亚洲一区二区三区国产| 99久久久久久| 欧美高清一级片在线观看| 美女性感视频久久| 欧美三区免费完整视频在线观看| 国产精品久99| 国产a视频精品免费观看| 日韩欧美第一区| 日韩在线卡一卡二| 欧美亚洲精品一区| 一区二区三区免费看视频| 成a人片亚洲日本久久| 欧美不卡激情三级在线观看| 国产91清纯白嫩初高中在线观看| 欧美日韩一卡二卡三卡| 一区二区三区在线高清| 99视频一区二区| 欧美韩国日本不卡| 国产成人鲁色资源国产91色综 | 国产成人亚洲综合a∨婷婷图片| 欧美精品日韩一区| 亚洲成人av福利| 欧美亚洲日本一区| 亚洲国产综合在线| 5566中文字幕一区二区电影| 亚洲国产精品人人做人人爽| 欧美日韩美女一区二区| 午夜激情一区二区| 51精品国自产在线| 美女视频黄免费的久久| 欧美精品一区二区三区很污很色的| 久久精品国产精品亚洲红杏| 欧美xfplay| 成人黄色小视频在线观看| 中文字幕视频一区| 色婷婷亚洲精品| 天天影视网天天综合色在线播放 | 久久色成人在线| 国产成人精品亚洲777人妖| 国产精品免费视频观看| 91久久精品一区二区三| 日韩精品免费视频人成| 久久女同精品一区二区| 高清成人在线观看| 亚洲综合成人在线| 欧美电视剧在线看免费| 国产.欧美.日韩| 亚洲午夜在线观看视频在线| 日韩欧美黄色影院| 成人黄色综合网站| 亚洲一区中文日韩| 久久综合色综合88| 99久久精品一区| 免费成人在线网站| 国产精品无码永久免费888| 91免费版在线| 老司机一区二区| 亚洲视频一二区| 欧美一级在线观看| 99麻豆久久久国产精品免费优播| 图片区小说区区亚洲影院| 国产日产欧美一区二区视频| 欧美丝袜自拍制服另类| 国产美女精品在线| 午夜不卡av在线| 国产精品久久三区| 91麻豆精品国产自产在线| 成人h精品动漫一区二区三区| 亚洲成人av在线电影| 国产精品视频一区二区三区不卡 | 91蜜桃网址入口| 久久99精品国产麻豆婷婷| 亚洲综合成人网| 国产精品三级久久久久三级| 884aa四虎影成人精品一区| 91影视在线播放| 国模套图日韩精品一区二区| 93久久精品日日躁夜夜躁欧美| 亚洲成年人网站在线观看| 国产精品久久久爽爽爽麻豆色哟哟| 6080国产精品一区二区| 在线免费av一区| eeuss影院一区二区三区| 国产一区美女在线| 久久国产精品第一页| 五月天欧美精品| 亚洲尤物视频在线| 综合久久一区二区三区| 国产亚洲精品免费| 精品久久久久久久人人人人传媒| 欧美伊人精品成人久久综合97 | 欧美二区三区91| 色视频欧美一区二区三区| 国产精品亚洲一区二区三区妖精| 日韩电影在线观看网站| 亚洲国产一区二区在线播放| 亚洲最新视频在线播放| 亚洲欧洲av在线| 日本一区二区动态图| 亚洲国产精品成人综合色在线婷婷| 精品三级av在线| 欧美成人一级视频| 精品久久久久久无| www亚洲一区| 久久欧美一区二区| 欧美国产乱子伦| 中文字幕一区视频| 亚洲女人小视频在线观看| √…a在线天堂一区| 亚洲欧美在线aaa| 亚洲视频一二三| 亚洲国产一区视频| 成人av在线资源网| 色综合久久88色综合天天6| 一本一道综合狠狠老| 91小宝寻花一区二区三区| 色综合色综合色综合| 欧日韩精品视频| 91麻豆精品国产| 精品国产乱码久久久久久图片 | 亚洲va欧美va人人爽| 日韩电影在线一区| 国产乱码精品一区二区三区五月婷| 国产麻豆91精品| 91影视在线播放| 91精品福利在线一区二区三区| 欧美大胆一级视频| 中文字幕在线不卡| 天使萌一区二区三区免费观看| 麻豆成人av在线| 国产精品视频一二三区| 亚洲精品一二三| 婷婷开心久久网| 亚洲成av人片在www色猫咪| www.欧美色图| 久久99九九99精品| 成人精品视频一区二区三区| 91黄色在线观看| 欧美一卡2卡3卡4卡| 日本一区二区三区在线不卡| 亚洲女同一区二区| 精品一二三四区| eeuss鲁片一区二区三区| 国产精品乱码久久久久久| 亚洲一区成人在线| 国产一区二区三区最好精华液| 99久久夜色精品国产网站| 宅男在线国产精品| 亚洲男同性视频| 精品亚洲欧美一区| 欧美日韩一区二区在线视频| 国产偷国产偷精品高清尤物| 亚洲午夜精品在线| 成人动漫一区二区三区| 欧美一级黄色录像| 亚洲裸体xxx| 国产精品1区2区| 欧美精品久久99久久在免费线| 国产精品每日更新在线播放网址| 日韩福利视频网| 欧美三级一区二区| 中文字幕中文字幕在线一区 | 欧美精品一二三| 国产精品入口麻豆原神| 麻豆视频一区二区| 欧美吞精做爰啪啪高潮| 亚洲欧洲日韩在线| 国产成人在线视频网站| 日韩午夜小视频| 亚洲成人免费看| 在线观看亚洲成人| 成人免费视频在线观看| 国产99久久久国产精品| 精品处破学生在线二十三| 免费在线观看视频一区| 欧美视频中文字幕| 亚洲一区二区三区爽爽爽爽爽 | 国内精品视频一区二区三区八戒| 欧美日韩在线免费视频| 一区二区三区国产| 色综合 综合色| 亚洲手机成人高清视频| 成人高清免费在线播放| 久久久久久久久久久电影| 久久99久久99小草精品免视看| 欧美精品丝袜中出| 亚洲国产日韩a在线播放性色| 91国偷自产一区二区使用方法| 成人免费在线播放视频| 91在线精品一区二区三区| 国产精品不卡一区| 99视频超级精品| 亚洲一区视频在线|