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

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

?? ipripng.c

?? 這是最新的vxWorks6.7協議棧下的RIPng(rip over ipv6)實現
?? C
?? 第 1 頁 / 共 5 頁
字號:
            ipripng_send_response(ifcp, &ifcp->ifc_ripsin, 0);        }    /* Request a new update timeout. */    ipripng.rndtmo++;    if (ipripng.rndtmo > (Ip_u32)(ipripng.update_seconds + ipripng.update_deltaseconds))        ipripng.rndtmo = ipripng.update_seconds;    (void)ipcom_tmo_request(&ipripng.update, ipripng_update_timeout, IP_NULL, 1000 * ipripng.rndtmo);    /* Increment the flash instance number. */    ipripng.update_inst++;    /* Cancel flash update since we just had a regular one. */    (void)ipcom_tmo_cancel(&ipripng.flash);    IPRIPNG_UNLOCK();    return 0;}/* *=========================================================================== *                    ipripng_flash_timeout *=========================================================================== * Description:  Transmit a triggered RIPng update containing new and changed *               routes on all interfaces that are non-silent. * Parameters:   tmo   NSTIME timeout structure. * Returns:      . * */IP_STATIC Ip_s32ipripng_flash_timeout(Ipcom_tmo *tmo, void *cookie){    Ip_time_t next_triggertime;    struct ifc *ifcp;    struct Ipripng_rt  *rrt;    if (ripngStopFlag)   return 0;    IPRIPNG_LOCK();    (void)tmo;    (void)cookie;    IPCOM_LOG2(DEBUG2, "+++ flash timeout, %ld interfaces, %ld routes:", ipripng.nifc, ipripng.rt_num);    for (ifcp = ipripng.ifc; ifcp; ifcp = ifcp->ifc_next)        {        if (ifcp->ifc_flags & IP_IFF_UP)            ipripng_send_response(ifcp, &ifcp->ifc_ripsin, RRTF_CHANGED);        }    /* Reset the flag */    for (rrt = ipripng.riprt; rrt; rrt = ((Ipripng_rt *)rrt)->rrt_next)        ((Ipripng_rt *)rrt)->rrt_rflags &= ~RRTF_CHANGED;    /*     * Set the next triggered update to between 1 and 5 seconds away.     */    next_triggertime = ipripng_nexttrigger_time();    (void)ipcom_tmo_request(&ipripng.flash, ipripng_flash_timeout, IP_NULL, 1000 * next_triggertime);    /* Increment the flash instance number. */    ipripng.update_inst++;    IPRIPNG_UNLOCK();    return 0;  /* do not request a new timeout. */}/* *=========================================================================== *                    ipripng_flush *=========================================================================== * Description:   Transmit all RIPng routes in RIPng response packet(s) on a single *                interface. * Parameters:    ifcp   Interface to transmit RIPng response packet(s) on. *                sin6   Destination address. * Returns: * */IP_STATIC voidipripng_flush(struct ifc *ifcp, struct Ip_sockaddr_in6 *sin6){    int i;    int error;    char tmpString[120]; /* Our logger puts in newlines */    char * pstr;    char  buf[IP_INET6_ADDRSTRLEN];    if (ipcom_inet_ntop(IP_AF_INET6, &sin6->sin6_addr, buf, sizeof (buf)) == IP_NULL)        buf[0] = '\0';  /* Won't display garbage */    IPCOM_LOG4(INFO, "Send(%s): info(%d) to %s.%d", ifcp ? ifcp->ifc_name : "?", priv_ripng_nrt, buf[0] ? buf : "?", ip_ntohs(sin6->sin6_port));    if (ipripng.dflag >= 2)        {        priv_ripng_np = ipripng.ripngbuf->rip6_nets;        for (i = 0; i < priv_ripng_nrt; i++, priv_ripng_np++)            {            pstr = tmpString;            if (ipcom_inet_ntop(IP_AF_INET6, &priv_ripng_np->rip6_dest, buf, sizeof (buf)) == IP_NULL)                buf[0] = '\0';  /* So doesn't display garbage */            if (priv_ripng_np->rip6_metric == NEXTHOP_METRIC)                {                if (IP_IN6_IS_ADDR_UNSPECIFIED(&priv_ripng_np->rip6_dest))                    {                    sprintf (pstr, "    NextHop reset");                    pstr = tmpString + strlen (tmpString);                    }                else                    {                    sprintf (pstr, "    NextHop %s", buf);                    pstr = tmpString + strlen (tmpString);                    }                }            else                {                sprintf (pstr, "    %s/%d[%d]", buf, priv_ripng_np->rip6_plen, priv_ripng_np->rip6_metric);                pstr = tmpString + strlen (tmpString);                }            if (priv_ripng_np->rip6_tag)                {                sprintf (pstr, "  tag=0x%04x", ip_ntohs(priv_ripng_np->rip6_tag) & 0xffff);                pstr = tmpString + strlen (tmpString);                }            IPCOM_LOG1(DEBUG, "%s", tmpString);            } /* for */        } /* if */    error = ipripng_sendpacket(sin6, RIPSIZE(priv_ripng_nrt));    if (error == IP_ERRNO_EAFNOSUPPORT)        {        /* Protocol not supported */        if (ipcom_inet_ntop(IP_AF_INET6, &ifcp->ifc_ripsin.sin6_addr, buf, sizeof (buf)) == IP_NULL)            buf[0] = '\0';        IPCOM_LOG2(INFO, "Could not send info to %s on %s", buf[0] ? buf : "?", ifcp ? ifcp->ifc_name : "?");        if (ifcp)            {            IPCOM_LOG1(INFO, "Cleared IFF_UP flag on %s", ifcp->ifc_name);            ifcp->ifc_flags &= ~IP_IFF_UP; /* As if down for AF_INET6 */            }        }    priv_ripng_nrt = 0;    priv_ripng_np = ipripng.ripngbuf->rip6_nets;}/* * Generate RIP6_RESPONSE packets and send them. */IP_STATIC voidipripng_send_response(struct  ifc *ifcp, struct Ip_sockaddr_in6 *sin6, int flag){    Ipripng_rt *rrt;    struct  in6_addr *prevnh, *thisnh;  /* next hop */    int maxrte;    int     tobeadvd;    prevnh = thisnh = IP_NULL;    if (ipripng.qflag)        return;    if (flag & RRTF_CHANGED)        IPCOM_LOG1(INFO, "sending triggered update on: %s", ifcp->ifc_name);    if ((flag & RRTF_SENDANYWAY) == 0 &&        (ipripng.qflag || (ifcp->ifc_flags & IP_IFF_LOOPBACK)))        return;    /* -N: no use */    if (iff_find(ifcp, 'N') != IP_NULL)        return;    /* -T: generate default route only */    if (iff_find(ifcp, 'T') != IP_NULL) {        struct netinfo6 rrt_info[2];        memset(&rrt_info, 0, 2 * sizeof(struct netinfo6));        /* Send the Next Hop RTE first */        rrt_info[0].rip6_dest = ifcp->ifc_mylladdr;        rrt_info[0].rip6_plen = 0;        rrt_info[0].rip6_tag = 0;        rrt_info[0].rip6_metric = NEXTHOP_METRIC;        rrt_info[1].rip6_dest = ip_in6addr_any;        rrt_info[1].rip6_plen = 0;        rrt_info[1].rip6_metric = 1;        rrt_info[1].rip6_metric += ifcp->ifc_metric;        rrt_info[1].rip6_tag = ip_htons(ipripng.routetag & 0xffff);        priv_ripng_np = ipripng.ripngbuf->rip6_nets;        *priv_ripng_np = rrt_info[0];        priv_ripng_np++;        *priv_ripng_np = rrt_info[1];        priv_ripng_nrt = 2;        ipripng_flush(ifcp, sin6);        return;    }    maxrte = (ifcp->ifc_mtu - sizeof(Ipnet_pkt_ip6) -            sizeof(Ipnet_pkt_udp) -            sizeof(struct rip6) + sizeof(struct netinfo6)) /            sizeof(struct netinfo6);    priv_ripng_nrt = 0; priv_ripng_np = ipripng.ripngbuf->rip6_nets; prevnh = IP_NULL;    for (rrt = (Ipripng_rt *)ipripng.riprt; rrt; rrt = (Ipripng_rt *)rrt->rrt_next) {        if (rrt->rrt_rflags & RRTF_NOADVERTISE)            continue;        /* Need to check filter here */        if (out_filter(rrt, ifcp) == 0)                continue;        /* Check split horizon / poison reverse and other conditions */        tobeadvd = tobeadv (rrt, ifcp);        if (tobeadvd == 0)            continue;        /*         * Only considers the routes with flag if specified.         * Also don't send triggered updates if this route is an infinite         * metric (poison reverse).         */        if (flag & RRTF_CHANGED)            {            if (((rrt->rrt_rflags & RRTF_CHANGED) == 0) || (tobeadvd == 2))                continue;            }        /* Calculate Next Hop for this route */        /* We use the actual gateway for the Next Hop for:         *    If the route goes out over the same interface         *    AND the gateway address is specified.         *    AND The gateway address is link-local         *    AND this is not a Poison Reverse route         */        if ((rrt->rrt_index == ifcp->ifc_index) &&            (!IP_IN6_IS_ADDR_UNSPECIFIED(&rrt->rrt_gw)) &&            (IP_IN6_IS_ADDR_LINK_LOCAL(&rrt->rrt_gw)) &&            ((rrt->rrt_flags & RRTF_NH_NOT_LLADDR) == 0) &&            (tobeadvd != 2))            {            thisnh = &rrt->rrt_gw;            }        /* Otherwise we use our own link-local address for the Next Hop */        else            {            thisnh = &ifcp->ifc_mylladdr;            }        /*         * Now check if this was the previous Next Hop or if one has         * ever been sent. If not then we must send a new Next Hop RTE.         */        if ((prevnh == IP_NULL) || !IP_IN6_ARE_ADDR_EQUAL(thisnh, prevnh))            {            /* Flush the packet if we're out of space */            if (priv_ripng_nrt == maxrte - 2)                ipripng_flush(ifcp, sin6);            /* Fill out the Next Hop RTE with the address chosen above */            priv_ripng_np->rip6_dest = *thisnh;            if (IP_IN6_IS_ADDR_LINK_LOCAL(&priv_ripng_np->rip6_dest))                SET_IN6_LINKLOCAL_IFINDEX(priv_ripng_np->rip6_dest, 0);            priv_ripng_np->rip6_plen = 0;            priv_ripng_np->rip6_tag = 0;            priv_ripng_np->rip6_metric = NEXTHOP_METRIC;            prevnh = thisnh;            priv_ripng_np++; priv_ripng_nrt++;            }        /* Put the route to the buffer */        *priv_ripng_np = rrt->rrt_info;        /* Poison Reverse route ? */        if (tobeadvd == 2)            priv_ripng_np->rip6_metric = HOPCNT_INFINITY6;        priv_ripng_np++; priv_ripng_nrt++;        if (priv_ripng_nrt == maxrte) {            ipripng_flush(ifcp, sin6);            prevnh = IP_NULL;        }    }    if (priv_ripng_nrt) /* Send last packet */        ipripng_flush(ifcp, sin6);}/* *=========================================================================== *                    ipripng_process_request *=========================================================================== * Description:   Parse an incoming RIPng request packet and send a response *                if applicable. * Parameters:    ifc   Interface RIPng request arrived on. *                np    RIPng packet output buffer. *                sin6  destination address. * Returns:       IPCOM_SUCCESS or IPCOM_ERR_BAD_PACKET. * */IP_STATIC voidipripng_process_request(struct ifc *ifcp, struct netinfo6 *np, int nn, struct Ip_sockaddr_in6 *sin6){    int i;    Ipripng_rt *rrt;    if (!(nn == 1 && IP_IN6_IS_ADDR_UNSPECIFIED(&np->rip6_dest) &&          np->rip6_plen == 0 && np->rip6_metric == HOPCNT_INFINITY6)) {        /* Specific response, don't split-horizon */        IPCOM_LOG0(INFO, "\tRIPng Process Request");        for (i = 0; i < nn; i++, np++) {            rrt = ipripng_rtlookup(np, IP_NULL);            if (rrt)                np->rip6_metric = rrt->rrt_info.rip6_metric;            else                np->rip6_metric = HOPCNT_INFINITY6;        }        (void)ipripng_sendpacket(sin6, RIPSIZE(nn));        return;    }    /* Whole routing table dump */    /* Used to use RRTF_SENDANYWAY to bypass qflag (listen only)     * but RIPng shouldn't respond to requests either when in listen     * only mode, otherwise other routers will get this router's     * routes even though the user specified listen only.     */    IPCOM_LOG0(INFO, "\tRIPng Request -- whole routing table");    ipripng_send_response(ifcp, sin6, 0);}/* *=========================================================================== *                    ipripng_neighboradd *=========================================================================== * Description:  Add a line from getopt to our linked list of accepted *		 neighbors. * Parameters: * * Returns: * */IP_STATICvoid ipripng_neighboradd (char * optarg){    struct nb_list *    plist = ipripng.nb_list_root;    struct nb_list *    prevp = IP_NULL;    char *              argptr = optarg;    /* Check valid parameters */    if ((argptr == IP_NULL) || (*argptr == '\0'))        IPCOM_LOG0(WARNING, "No neighbors specified");    /* Walk the list to find the last element */    while (plist)        {        prevp = plist;        plist = plist->nb_next;        }    /* Parse the address list ("addr1,addr2") */    while (argptr)        {        char * addr;        addr = argptr;        /* Replace the comma by a NULL for inet_pton() */        if ((argptr = ipcom_strchr (argptr, ',')) != IP_NULL)            *argptr++ = '\0';        /* Create new element for linked list */        plist = (struct nb_list *)ipcom_malloc (sizeof (struct nb_list));        if (plist == IP_NULL)            {            IPCOM_LOG0(ERR, "Error on neighbor list ipcom_malloc");            return;            }        /* Convert to in6_addr and store in element */        if (ipcom_inet_pton(IP_AF_INET6, addr, &plist->nb_addr) != 1)            {            IPCOM_LOG1(ERR, "Bad restricted neighbor address (%s)", addr);            ipcom_free (plist);            return;            }        plist->nb_next = IP_NULL;        /* Put it to the list */        if (prevp == IP_NULL)  /* First one */            ipripng.nb_list_root = plist;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品伦理在线| 国产不卡在线一区| 精品综合久久久久久8888| 成人免费视频视频| 欧美一区二区美女| 亚洲欧美另类小说| 国产成人精品一区二区三区四区| 欧美优质美女网站| 中文字幕免费一区| 国内成人精品2018免费看| 欧美午夜精品久久久久久孕妇| 国产亚洲一区字幕| 男女男精品网站| 欧美私模裸体表演在线观看| 中文字幕第一区二区| 麻豆精品在线视频| 欧美日本免费一区二区三区| 亚洲人吸女人奶水| 9i看片成人免费高清| 久久久欧美精品sm网站| 玖玖九九国产精品| 日韩一区二区三区免费看| 五月天欧美精品| 欧美日韩中文国产| 亚洲国产日韩在线一区模特| 99国产精品久| 亚洲视频一区二区在线观看| 成年人国产精品| 国产精品理伦片| av福利精品导航| 1024成人网| 色综合天天综合网国产成人综合天 | 欧美综合久久久| 国产精品不卡在线| 99这里只有精品| 亚洲精品一二三| 欧美在线观看视频在线| 性感美女极品91精品| 91麻豆精品国产91久久久久久 | 波多野结衣中文一区| 亚洲国产精品高清| jizzjizzjizz欧美| 人人爽香蕉精品| 欧美电影免费提供在线观看| 久久爱另类一区二区小说| 欧美精品一区二区三区久久久 | 久久99久久久久久久久久久| 精品欧美一区二区三区精品久久 | 久久精品一区蜜桃臀影院| 粉嫩av一区二区三区在线播放| 国产人伦精品一区二区| 91在线观看视频| 日韩国产欧美在线观看| www国产亚洲精品久久麻豆| 成人午夜在线播放| 亚洲精品网站在线观看| 7777精品伊人久久久大香线蕉完整版 | 天天综合天天做天天综合| 欧美一区二区三区不卡| 国产99精品国产| 一区二区三区欧美日韩| 日韩午夜精品视频| 成人免费视频app| 亚洲成av人影院| 欧美激情综合在线| 欧美精选午夜久久久乱码6080| 久久99精品国产麻豆婷婷洗澡| 国产精品网站一区| 欧美久久一区二区| 成人福利在线看| 日本不卡的三区四区五区| 国产午夜亚洲精品午夜鲁丝片| 欧美亚一区二区| 成人激情视频网站| 午夜伦理一区二区| 国产精品色哟哟网站| 欧美一卡在线观看| 色综合久久久久| 国产.精品.日韩.另类.中文.在线.播放| 1024国产精品| 欧美韩国日本综合| 精品久久人人做人人爱| 欧美日韩国产大片| 色婷婷av久久久久久久| 高清不卡一区二区在线| 久久精品国产亚洲5555| 艳妇臀荡乳欲伦亚洲一区| 日本一区二区视频在线| 欧美成人福利视频| 88在线观看91蜜桃国自产| 99精品久久只有精品| 极品少妇xxxx偷拍精品少妇| 亚洲成a人v欧美综合天堂 | 91麻豆精品视频| 国产麻豆视频一区| 麻豆久久一区二区| 天天色图综合网| 亚洲永久精品国产| 亚洲欧美偷拍卡通变态| 国产欧美日韩另类一区| 26uuu成人网一区二区三区| 日韩午夜三级在线| 日韩一级黄色大片| 91精品国产高清一区二区三区蜜臀 | 久久在线观看免费| 精品日韩在线一区| 欧美成人国产一区二区| 日韩精品一区二区三区老鸭窝| 91精品国产入口| 欧美一区2区视频在线观看| 91麻豆精品国产91久久久使用方法 | 久久精品一区二区| 久久亚洲影视婷婷| 久久久综合精品| 国产亲近乱来精品视频| 国产视频一区在线播放| 国产人成一区二区三区影院| 久久一区二区三区国产精品| 精品日韩在线一区| 国产丝袜美腿一区二区三区| 国产精品久久看| 亚洲黄色免费电影| 亚洲美女偷拍久久| 亚洲第一主播视频| 蜜臀av性久久久久蜜臀aⅴ四虎| 全国精品久久少妇| 国产一区二区网址| 波多野结衣视频一区| 91在线porny国产在线看| 在线观看成人小视频| 欧美精品xxxxbbbb| 久久人人97超碰com| 亚洲欧美在线观看| 亚洲成人资源在线| 久久99国产精品麻豆| 成人高清在线视频| 欧美性videosxxxxx| 日韩一级黄色片| 国产精品久久久久久久久动漫| 亚洲精品视频自拍| 蜜乳av一区二区| 成人动漫一区二区| 欧美老年两性高潮| 久久精品无码一区二区三区| 一区二区三区91| 国产一区二区三区观看| 99re成人精品视频| 欧美一卡2卡三卡4卡5免费| 国产欧美久久久精品影院| 亚洲午夜视频在线| 国产福利91精品一区| 色屁屁一区二区| 久久精品夜色噜噜亚洲aⅴ| 亚洲一区av在线| 岛国一区二区三区| 欧美一区二区女人| 亚洲欧美日韩国产综合在线| 久久精品国产澳门| 91行情网站电视在线观看高清版| 欧美一级理论性理论a| 中文字幕日韩一区| 国产主播一区二区三区| 欧美揉bbbbb揉bbbbb| 欧美国产视频在线| 另类小说图片综合网| 欧美亚洲一区二区在线| 中文字幕一区二区三区在线播放| 日韩成人av影视| 91久久线看在观草草青青| 久久精品在这里| 韩国精品免费视频| 久久久久九九视频| 日韩和的一区二区| 色女孩综合影院| 欧美国产精品一区| 国产精品亚洲专一区二区三区| 欧美精品久久天天躁| 亚洲猫色日本管| 99热精品国产| 欧美国产国产综合| 国产一区中文字幕| 精品国产制服丝袜高跟| 免费成人av资源网| 日韩三级av在线播放| 亚洲福利一二三区| 欧美亚州韩日在线看免费版国语版 | 伊人色综合久久天天| 成人午夜电影网站| 国产精品色哟哟| 成人av在线播放网址| 日本一区二区三区免费乱视频| 精品一区二区三区免费视频| 欧美一级在线免费| 另类小说综合欧美亚洲| 日韩精品中文字幕在线不卡尤物 | 亚洲欧美日韩国产中文在线| www.日韩av| 亚洲精品成人在线| 91久久精品一区二区| 一区二区三区在线视频免费观看|