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

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

?? routecommonlib.c

?? vxwork源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* routeCommonLib.c - route interface shared code library *//* Copyright 1984 - 2002 Wind River Systems, Inc. *//*modification history--------------------01f,09may02,niq  Moved routeAgeSet and routeMetric from routeEntryLib.c01e,18mar02,vvv  fixed rtrequestAddEqui to set errno and return correct		 value in case of error (SPR #74250)01d,06mar02,vvv  set protocol id in route for host stack (SPR #73148)01c,06aug01,spm  fixed netmask value for internal host-specific routes01b,01aug01,spm  cleanup: removed unused prototype01a,31jul01,spm  extracted from version 03s of routeEntryLib.c module*//*DESCRIPTIONThis library contains the shared functions which both the host and routerversions of the network stack use internally to add and delete route entries.The router stack product creates expanded versions of these routines whichcreate and send the internal callback messages for registered users. Thatproduct also sends routing socket messages (if appropriate) when adding orremoving routes.None of the routines in this library are published or available to customers.INTERNALVarious network libraries use these add and delete routines to insert andremove route entries. The interfaces mimic the original rtrequest() entrypoint from the BSD code, with some additions for features of the routerstack product.NOMANUAL*//* includes */#include "vxWorks.h"#include "routeEnhLib.h"/* forward declarations */#ifdef ROUTER_STACKIMPORT STATUS _routeEntryAdd (ROUTE_DESC *, ROUTE_ENTRY **);IMPORT STATUS _routeEntryDel (ROUTE_DESC *, ROUTE_ENTRY **);IMPORT void routeCallBackSend (int, void *);IMPORT STATUS routeSocketMessageSend (int, ROUTE_DESC *);#endif /* ROUTER_STACK *//********************************************************************************* rtrequestAddEqui - internal common entry point for route creation** This routine replaces all references to the internal rtrequest() routine* which the network stack used to generate routes when necessary. That* routine allowed the stack to create internal routes for the local * interfaces (with the rtinit() routine) and to create routes in response* to ICMP redirect messages. It also handled the add operation of routing* sockets.** All the previous published interfaces for creating static routes now use* this routine as well. If available, it uses the router stack features to* create a visible route or a duplicate entry as appropriate. Otherwise,* it simply creates the initial route entry, or fails if that entry* already exists.** The router stack features use the <weight> parameter to determine the* location of the new entry relative to any existing duplicate routes. If* that weight is the minimum value, the new route will replace the current* visible route, if any. The router stack also uses the <socketFlag> and* <notifyFlag> parameters to determine which types of reports to send.* The host stack variant does not use any of these parameters.** When used within the routing socket output processing, the <socketFlag> is* FALSE since that code generates the socket messages independently.** When the routing table changes because an interface address is added or* removed, both the <socketFlag> and <notifyFlag> parameters are FALSE * since the network stack calls the address update hook which generates both* message types.** In all other cases, both parameters are TRUE since the published routines* for adding and deleting static routes must generate the routing socket* messages and the callback notifications.** RETURNS: OK on success, ERROR on failure** NOMANUAL*/STATUS rtrequestAddEqui    (    struct sockaddr * pDstAddr,	/* destination address for route */    struct sockaddr* pNetMask,  /* trimmed netmask, or 0 for host route */    struct sockaddr* pGateway,  /* gateway address for new route */    short flags, 		/* RTF_HOST and RTF_GATEWAY if needed */    short protoId, 		/* source of routing entry, from m2Lib.h */    UCHAR weight, 		/* administrative weight */    BOOL notifyFlag,        /* TRUE: send callback message */    BOOL socketFlag,        /* TRUE: send socket message */    ROUTE_ENTRY** ppRouteEntry 	/* direct access to new route for caller */    )    {#ifdef ROUTER_STACK                          /* original version */    STATUS result;    struct sockaddr dstAddr;    struct sockaddr gateway;    ROUTE_DESC routeDesc;    bzero((char*)&routeDesc,sizeof(ROUTE_DESC));    bcopy ( (char *)pDstAddr, (char *)&dstAddr, sizeof (struct sockaddr));    bcopy ( (char *)pGateway, (char *)&gateway, sizeof (struct sockaddr));#ifdef DEBUG    logMsg("rtrequestAddEqui:starting\n",0,0,0,0,0,0);#endif    /*     * Setup the descriptor so the original arguments are not modified.     * The add operation changes the descriptor contents to create the     * update messages.     */    routeDesc.pDstAddr = &dstAddr;    routeDesc.pNetmask = pNetMask;    routeDesc.pGateway = &gateway;    routeDesc.flags = flags;    routeDesc.protoId = protoId;    if (weight == 0)        routeDesc.weight = 100;   /* XXX: configure default value */    else        routeDesc.weight = weight;    /*     * Use the correct netmask for a host specific route. The rtinit()     * routine supplies the interface's mask instead of this value.     */    if (flags & RTF_HOST)        routeDesc.pNetmask = 0;    /*     * Create the route entry. If successful, the descriptor contains     * the actual destination address of the route (with the netmask applied)     * and the corresponding interface, as well as a flag setting which     * indicates whether the new route is a duplicate entry. The gateway     * address is not changed until after the routine completes.     */    result = _routeEntryAdd (&routeDesc, ppRouteEntry);    if (result == ERROR)        return (result);    /* Announce the new route to any registered users, if appropriate. */    if (notifyFlag)        routeCallBackSend (ROUTE_ADD, &routeDesc);    /*     * Save the routing protocol's identifier in the gateway address     * for any routing socket message.     */    RT_PROTO_SET(&gateway, protoId);    /*     * Transmit a routing socket message. This operation might occur     * within the add routine if it is limited to representative nodes     * which the routing sockets are currently able to modify.     */    if (socketFlag)    /* Transmit routing socket message? */        {        routeSocketMessageSend (RTM_ADD, &routeDesc);        }    /* XXX: should it return ERROR if a message isn't sent? */    return (OK);#else                                   /* Host version */    struct sockaddr dstAddr;    int    status;    bcopy ((char *) pDstAddr, (char *) &dstAddr, sizeof (struct sockaddr));    RT_PROTO_SET (&dstAddr, protoId);    if ((status = rtrequest ((int)RTM_ADD, &dstAddr, pGateway, pNetMask, flags,                             (struct rtentry **) ppRouteEntry)) != OK)        {	errno = status;	return (ERROR);	}    return (OK);#endif ROUTER_STACK    }/********************************************************************************* rtrequestDelEqui - internal common entry point for route deletion** This routine replaces all references to the internal rtrequest() routine* which the network stack used to remove routes when necessary. That* routine allowed the stack to delete internal routes for the local * interfaces (with the rtinit() routine) when an address changed.* It also handled the delete operation of routing sockets.** All the previous published interfaces for deleting static routes now* use this routine as well. If available, it uses the router stack features* to delete the visible route or a duplicate entry as appropriate. Otherwise,* it simply removes the initial route entry, or fails if that entry does* not exist.** The router stack features use the <socketFlag> and <notifyFlag> parameters* to determine which types of reports to send. The host stack variant does* not use either of those parameters.** When used within the routing socket output processing, the <socketFlag> is* FALSE since that code generates the socket messages independently.** When the routing table changes because an interface address is added or* removed, both the <socketFlag> and <notifyFlag> parameters are FALSE* since the network stack calls the address update hook which generates both* message types.** In all other cases, both parameters are TRUE since the published routines* for adding and deleting static routes must generate the routing socket* messages and the callback notifications.** RETURNS: OK on success, ERROR on failure** NOMANUAL*/STATUS rtrequestDelEqui    (    struct sockaddr* pDstAddr, 	/* destination address for route */    struct sockaddr* pNetMask, 	/* trimmed netmask, or 0 for host route */    struct sockaddr* pGateway, 	/* gateway address for route, 0 for any */    short flags, 		/* RTF_HOST or RTF_GATEWAY, if appropriate */    short protoId, 		/* source of specific route, 0 for any */    BOOL notifyFlag,        /* TRUE: send callback message */    BOOL socketFlag,        /* TRUE: send socket message */    ROUTE_ENTRY** ppRouteEntry 	/* direct access to (detached) route entry */    )    {#ifdef ROUTER_STACK                          /* original version */    STATUS result;    struct sockaddr dstAddr;    struct sockaddr gateway;    ROUTE_DESC routeDesc;    /*     * Setup the descriptor so the original arguments are not modified.     * The delete operation changes the descriptor contents to create the     * update messages.     */    bzero ( (char*)&routeDesc, sizeof (ROUTE_DESC));    bcopy ( (char *)pDstAddr, (char *)&dstAddr, sizeof (struct sockaddr));

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美不卡激情三级在线观看| 久久久影视传媒| 国产在线麻豆精品观看| 亚洲国产激情av| 久久久久亚洲综合| 久久亚洲精华国产精华液 | 99精品国产91久久久久久| 一区二区三区小说| 日韩亚洲欧美高清| 色综合天天综合狠狠| 国产成人av网站| 激情综合色丁香一区二区| 人人精品人人爱| 日一区二区三区| 亚洲国产精品综合小说图片区| 亚洲日本乱码在线观看| 国产精品免费久久久久| 国产午夜精品一区二区三区视频| 精品福利在线导航| 日韩三区在线观看| 日韩欧美国产系列| 在线不卡一区二区| 国产乱国产乱300精品| 亚洲国产精品久久一线不卡| 久久嫩草精品久久久精品| 精品成人一区二区| 国产欧美一区二区精品秋霞影院 | 国产精品天干天干在观线| 欧美成人猛片aaaaaaa| 欧美三级日本三级少妇99| 欧美亚洲禁片免费| 欧美性大战久久久久久久蜜臀| 91麻豆高清视频| 在线视频你懂得一区二区三区| 欧美天堂一区二区三区| 国产成人在线视频网站| 大尺度一区二区| 国产午夜精品一区二区三区嫩草| 精品国产露脸精彩对白| 欧美一二三在线| 国产色产综合产在线视频| 精品国产91亚洲一区二区三区婷婷| 久久综合国产精品| 欧美不卡在线视频| 欧美视频中文一区二区三区在线观看| 欧美伦理电影网| 久久亚洲精品国产精品紫薇| 亚洲视频精选在线| 亚洲一区二区美女| 免费日本视频一区| 成人在线综合网站| 精品视频123区在线观看| 欧美一区二区精品在线| 久久精品在线免费观看| 日韩视频在线永久播放| 中文一区二区在线观看| 亚洲电影视频在线| 国产成人av影院| 7777精品伊人久久久大香线蕉经典版下载| 日韩欧美精品三级| 国产片一区二区| 亚洲色图色小说| 国产一区激情在线| 91在线视频播放地址| 欧美中文字幕不卡| 欧美国产综合一区二区| 日韩av电影免费观看高清完整版在线观看| 国产在线国偷精品产拍免费yy| 91国产福利在线| 中文字幕av一区二区三区| 日韩av不卡一区二区| 色综合视频一区二区三区高清| 成人av在线播放网址| 精品精品国产高清a毛片牛牛| 亚洲黄色免费电影| 成人av网站在线观看| 日韩精品一区国产麻豆| 亚洲高清不卡在线观看| 精品综合久久久久久8888| 风间由美中文字幕在线看视频国产欧美| 久久精品国产亚洲5555| 色菇凉天天综合网| 18欧美乱大交hd1984| 美女尤物国产一区| 欧美久久久久免费| 亚洲国产wwwccc36天堂| 99精品视频一区二区三区| 亚洲精品一区二区三区四区高清| 丝袜美腿高跟呻吟高潮一区| 一本一道综合狠狠老| 亚洲欧洲日韩综合一区二区| 国产成人综合网站| 久久午夜色播影院免费高清| 日本亚洲电影天堂| 欧美一区二区三区日韩| 丝瓜av网站精品一区二区| 粉嫩嫩av羞羞动漫久久久| 2024国产精品视频| 国产精品一区二区三区四区| 欧美高清视频在线高清观看mv色露露十八| 综合久久综合久久| 色婷婷综合激情| 亚洲一区二区欧美| 91免费看片在线观看| 久久久久99精品国产片| 成人免费毛片片v| 综合久久国产九一剧情麻豆| 99久久精品99国产精品| 亚洲精品免费视频| 欧美日韩国产综合一区二区 | 91在线观看美女| 欧美激情一区二区三区全黄| 福利一区在线观看| 日本一区二区三区视频视频| 成人小视频在线| 国产精品超碰97尤物18| 色综合久久久久久久久久久| 26uuu国产日韩综合| 国产精品18久久久久久vr| 国产欧美日韩综合| 在线观看日韩av先锋影音电影院| 亚洲成人自拍偷拍| 精品久久久久久无| 精品一区二区影视| 国产精品三级视频| 日韩综合一区二区| 欧美猛男男办公室激情| 久久综合九色综合久久久精品综合| 97久久超碰国产精品电影| 欧美精品高清视频| 国产一区二区美女| 亚洲特黄一级片| 欧美人xxxx| 韩国v欧美v亚洲v日本v| 亚洲综合色在线| 欧美巨大另类极品videosbest| 日韩电影一二三区| 国产精品久久久久影院老司| 91精品国产欧美一区二区18| 国产成人精品aa毛片| 91原创在线视频| 日韩久久一区二区| 日韩国产精品大片| 欧美激情在线观看视频免费| 欧美老年两性高潮| 成人黄色大片在线观看| 视频精品一区二区| 欧美岛国在线观看| 欧美人体做爰大胆视频| 成人h精品动漫一区二区三区| 另类中文字幕网| 亚洲精品乱码久久久久久日本蜜臀| 亚洲精品一区二区三区99| 欧美羞羞免费网站| 色激情天天射综合网| 精品一区二区三区久久| 欧美在线你懂得| 中文字幕一区免费在线观看| 精品久久一区二区三区| 精品理论电影在线观看| 精品成a人在线观看| 久久久www成人免费毛片麻豆| 久久天天做天天爱综合色| 国产亚洲精品超碰| 中文无字幕一区二区三区| 国产精品国产三级国产有无不卡 | 日韩一卡二卡三卡| 日韩一区二区三区电影在线观看| 日韩一级在线观看| 久久精品一区八戒影视| 国产精品色呦呦| 亚洲一区中文日韩| 美腿丝袜亚洲一区| 国产精品一二一区| 91亚洲精品久久久蜜桃网站| 在线观看视频欧美| 日韩一区二区在线观看| 国产精品天干天干在线综合| 亚洲另类中文字| 日本一不卡视频| 高清国产一区二区| 欧美精品久久99| 欧美国产日韩a欧美在线观看| 亚洲人123区| 久久精品久久久精品美女| 成人国产精品免费网站| 欧美精品一级二级三级| 久久久久久久精| 亚洲地区一二三色| 国产ts人妖一区二区| 欧美日本一道本在线视频| 国产亚洲污的网站| 图片区小说区国产精品视频| 国产成人丝袜美腿| 欧美剧情电影在线观看完整版免费励志电影| 亚洲日本欧美天堂| 成人av在线网站| 久久精品视频一区二区三区| 欧美日韩精品一区二区三区蜜桃 | 欧美激情一区在线观看|