亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
欧美一区二区不卡视频| 日本亚洲最大的色成网站www| 免费成人在线观看视频| 欧美视频一区二区在线观看| 日韩亚洲欧美成人一区| 亚洲一二三区视频在线观看| 欧美在线你懂得| 亚洲综合免费观看高清在线观看| 91麻豆精品秘密| 亚洲欧美日韩久久精品| 91啦中文在线观看| 亚洲美女偷拍久久| 色狠狠一区二区三区香蕉| 亚洲欧美一区二区视频| 99久久99久久久精品齐齐| 亚洲欧美一区二区视频| 日本道免费精品一区二区三区| 一区二区三区丝袜| 欧美图区在线视频| 调教+趴+乳夹+国产+精品| 91精品国产色综合久久久蜜香臀| 天堂影院一区二区| 91精品国产综合久久香蕉麻豆| 日韩国产欧美在线观看| 日韩视频中午一区| 国产美女一区二区| 国产精品毛片大码女人| 色综合天天在线| 亚洲成va人在线观看| 日韩精品中文字幕在线一区| 国产高清亚洲一区| 亚洲欧美自拍偷拍| 欧美日韩免费在线视频| 日韩精品五月天| 久久久精品影视| 91美女在线看| 男女男精品视频| 国产偷国产偷亚洲高清人白洁 | 亚洲自拍偷拍欧美| 欧美日韩一级视频| 韩国在线一区二区| 亚洲天天做日日做天天谢日日欢| 欧美日韩国产小视频| 裸体一区二区三区| 国产精品成人一区二区三区夜夜夜| 91美女片黄在线观看91美女| 蜜臀精品久久久久久蜜臀| 欧美国产综合色视频| 色综合天天综合网天天狠天天| 日韩精品福利网| 中文av字幕一区| 这里只有精品免费| 97se亚洲国产综合自在线| 偷拍与自拍一区| 日本一区二区久久| 欧美一级日韩不卡播放免费| 播五月开心婷婷综合| 午夜久久久久久| 亚洲天堂精品在线观看| 日韩欧美国产不卡| 欧美综合在线视频| 高清不卡一区二区在线| 亚洲香肠在线观看| 中文字幕字幕中文在线中不卡视频| 欧美一区二区三区系列电影| 91极品视觉盛宴| 国产福利一区二区三区| 蜜臀久久久久久久| 国产精品麻豆99久久久久久| 欧美精品一区二区三区四区| 欧美在线一二三| 风流少妇一区二区| 亚洲黄色性网站| 欧美一区二区三区播放老司机| 欧美亚洲国产怡红院影院| 国产sm精品调教视频网站| 美女视频第一区二区三区免费观看网站| 亚洲青青青在线视频| 国产亚洲成年网址在线观看| 91精品国产美女浴室洗澡无遮挡| 91网址在线看| 国产精品白丝jk黑袜喷水| 日韩电影在线一区| 亚洲aaa精品| 亚洲自拍偷拍麻豆| 亚洲一区二区欧美激情| 亚洲免费观看高清完整版在线观看熊 | 亚洲色图视频网站| 国产精品入口麻豆九色| 久久久www成人免费毛片麻豆 | 日韩国产在线一| 亚洲成av人影院| 亚洲伊人色欲综合网| 亚洲品质自拍视频| 亚洲欧美另类在线| 中文字幕一区二区三区av| 国产欧美日韩综合精品一区二区| 欧美xxxxx裸体时装秀| 欧美一级片免费看| 日韩欧美国产电影| 精品99999| 久久综合九色综合97_久久久| 日韩精品专区在线影院观看| 精品国产伦一区二区三区观看体验| 欧美一级精品在线| 777午夜精品免费视频| 这里只有精品电影| 精品国产乱码久久久久久牛牛| 日韩写真欧美这视频| 欧美大片在线观看一区| 久久久噜噜噜久久人人看| 欧美国产综合色视频| 中文字幕欧美日本乱码一线二线 | 日本伊人精品一区二区三区观看方式| 亚洲午夜免费视频| 石原莉奈在线亚洲三区| 亚洲国产精品人人做人人爽| 亚洲免费在线视频一区 二区| 亚洲一卡二卡三卡四卡无卡久久| 亚洲国产日韩av| 免费观看日韩av| 国产精品一区二区在线观看不卡| 成人网在线播放| 欧美色电影在线| 欧美大度的电影原声| 国产日韩欧美精品综合| 亚洲人成网站在线| 日欧美一区二区| 国产成人精品影视| 日本高清视频一区二区| 欧美一二三区在线| 国产婷婷色一区二区三区四区| 国产精品不卡一区二区三区| 天天综合网 天天综合色| 国产精品影视在线| 欧美在线观看一区| 精品国产一区二区三区忘忧草| 中文字幕一区二区三区乱码在线 | 91精品国产91久久综合桃花| 精品乱码亚洲一区二区不卡| 亚洲丝袜美腿综合| 精品一区二区在线看| 日本道免费精品一区二区三区| 欧美成人a在线| 一个色综合av| 国产一区二区三区观看| 成人国产精品免费| 91影院在线免费观看| 精品欧美乱码久久久久久 | 日本不卡一区二区| 国产成人av一区二区三区在线 | 一区二区三区精品视频| 国产一区在线不卡| 欧美日本国产视频| 亚洲伦理在线精品| 国产真实乱子伦精品视频| 91成人免费电影| 中文在线资源观看网站视频免费不卡 | 激情综合色播五月| 欧美日韩日本视频| 亚洲欧洲成人自拍| 国产毛片精品视频| 欧美一区二区女人| 亚洲综合色视频| 成人免费视频caoporn| 精品国产露脸精彩对白| 天堂va蜜桃一区二区三区漫画版| 99国产精品视频免费观看| 精品久久久三级丝袜| 日韩中文字幕1| 欧美日韩一区二区电影| 18欧美乱大交hd1984| 成人午夜在线免费| 日韩免费视频一区| 亚洲综合自拍偷拍| 91在线视频播放地址| 欧美一二三在线| 日精品一区二区三区| 在线亚洲精品福利网址导航| 精品国产3级a| 日韩激情一区二区| 欧美日韩综合在线| 亚洲免费在线播放| 北岛玲一区二区三区四区| 91精品欧美综合在线观看最新| 中文字幕一区二| 国产成人av电影在线播放| 欧美xxx久久| 看电影不卡的网站| 欧美电视剧免费观看| 免费在线观看一区| 欧美亚洲尤物久久| 蜜臀av性久久久久蜜臀aⅴ| 日韩午夜小视频| 久久国产精品色| 国产亚洲精久久久久久| 高潮精品一区videoshd| 国产精品久久久久aaaa| 一本色道久久综合亚洲91| 亚洲乱码国产乱码精品精可以看|