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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ipripng.c

?? 這是最新的vxWorks6.7協(xié)議棧下的RIPng(rip over ipv6)實(shí)現(xiàn)
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
IP_STATIC voidipripng_rtfree(Ipripng_rt *rt, Ip_bool proto_set){    ip_assert(rt != IP_NULL);    if (IP_BIT_ISSET(rt->rrt_rflags, RRTF_STACKROUTE)) {        ip_assert(ipripng.delete_route != IP_NULL);        if (ipripng.delete_route(&(rt->rrt_info), &(rt->rrt_gw), proto_set) != IPCOM_SUCCESS)        {/*            IPCOM_LOG2(WARNING, "ipripng_rtfree() :: failed to delete stack route %s, errno %d",                       ipripng_routeinfo(rt),                       ipcom_errno);*/        }    }    ipcom_free(rt);}/* *=========================================================================== *                    ipripng_rtinsert *=========================================================================== * Description:   Insert a RIP route, report to the TCP/IP stack *                and schedule a RIP triggered update, i.e. flash. * Parameters:    rt    RIP route entry. * Returns:       IPCOM_SUCESS or error code. * */IP_STATIC Ip_erripripng_rtinsert(Ipripng_rt *rt, struct ifc *ifcp){    Ip_err  retval;    ip_assert(rt != IP_NULL);    if (NOT IP_BIT_ISSET(rt->rrt_rflags, RRTF_INTERFACE + RRTF_RIPNGLEARNED + RRTF_AGGREGATE))    {        /* Add the route with the TCP/IP stack. */        if (ipripng.add_route(rt, &(rt->rrt_gw), ifcp) == IPCOM_SUCCESS)            IP_BIT_SET(rt->rrt_rflags, RRTF_STACKROUTE);        else        {            IPCOM_LOG2(WARNING, "iprip_rtinsert() :: failed to add stack route %s, errno %d",                       ipripng_routeinfo(rt),                       ipcom_errno);            return IPCOM_ERR_FAILED;        }    }    /* Insert route. */    rt->hdr.key  = &rt->rrt_info.rip6_dest;    rt->hdr.mask = rt->keymask;    retval = ipcom_route_add(ipripng.rtab, &rt->hdr);    ip_assert(retval == IPCOM_SUCCESS);    ipcom_list_insert_last(&ipripng.rt_head, &rt->rt_list);    ipripng.rt_num++;    /* New or updated route, flash it. */    ipripng_rtflash(rt);    return retval;}/* *=========================================================================== *                    ipripng_rtremove *=========================================================================== * Description:   Remove a route. * Parameters:    rt    RIPng route entry. * Returns:       IPCOM_SUCESS or error code. * */IP_STATIC voidipripng_rtremove(Ipripng_rt *rt){    Ip_err  retval;    ip_assert(rt != IP_NULL);    ipcom_list_remove(&rt->rt_list);    retval = ipcom_route_remove(ipripng.rtab, &rt->hdr);    ip_assert(retval == IPCOM_SUCCESS);    (void)retval;    ipripng.rt_num--;    ip_assert(ipripng.rt_num >= 0);}/* *=========================================================================== *                    ipripng_rtlookup *=========================================================================== * Description: * Parameters: * Returns: * */IP_STATIC Ipripng_rt *ipripng_rtlookup(struct  netinfo6 *np, Ipripng_rt **prev_rrt){        struct Ipripng_rt   *rrt;        if (prev_rrt)                *prev_rrt = IP_NULL;        for (rrt = ipripng.riprt; rrt; rrt = ((Ipripng_rt *)rrt)->rrt_next) {                if (((Ipripng_rt *)rrt)->rrt_info.rip6_plen == np->rip6_plen &&                    IP_IN6_ARE_ADDR_EQUAL(&((Ipripng_rt *)rrt)->rrt_info.rip6_dest,                                       &np->rip6_dest))                        return (Ipripng_rt *)rrt;                if (prev_rrt)                        *prev_rrt = (Ipripng_rt *)rrt;        }        if (prev_rrt)                *prev_rrt = IP_NULL;        return IP_NULL;}/* *=========================================================================== *                    ipripng_rtnotify *=========================================================================== * Description: Callback that is used each time the status of the route *              table changes. * Parameters:  rtab - The route table that has changed. *              entry - The entry in the route table that was affected. *              code - Code that describes the event. * Returns: * */IP_STATIC voidipripng_rtnotify(Ipcom_route *rtab, Ipcom_route_entry *entry, int code){    (void)rtab;    (void)entry;    if (code == IPCOM_ROUTE_CODE_DUPLICATE)    {        IP_PANIC();    }}/* *=========================================================================== *                    ipripng_rtflash *=========================================================================== * Description:   Trigger a flash update with this route included. Ignore *                scheduling a new flash if there is one already scheduled. * Parameters:    re    RIPng route entry. * Returns:       . * */IP_STATIC voidipripng_rtflash(Ipripng_rt *rt){    ip_assert(rt != IP_NULL);    /* Schedule a flash with thir route included. */    rt->update_inst = ipripng.update_inst;/*    IPCOM_LOG4(DEBUG2, "    ++ route flash: %s/%s -> %s - %s.",               ipcom_inet_ntop(IP_AF_INET, &rt->ipaddr_n, iprip.str, sizeof(iprip.str)),               ipcom_inet_ntop(IP_AF_INET, &rt->mask_n,   iprip.str2, sizeof(iprip.str2)),               ipcom_inet_ntop(IP_AF_INET, &rt->router_n, iprip.str3, sizeof(iprip.str3)),               IPCOM_TMO_PENDING(&iprip.flash) ? "ignored" : "triggered");*/    if (NOT IPCOM_TMO_PENDING(&ipripng.flash))    {        (void)ipcom_tmo_request(&ipripng.flash, ipripng_flash_timeout, IP_NULL, 1000 * ipripng.flash_seconds);    }}/* *=========================================================================== *                    ipripng_sendpacket *=========================================================================== * Description:   Transmit a RIPng packet to address sin6. * Parameters:    sin6     Address to transmit a RIPng packet to. *                len      The length of the packet. * Returns: * */IP_STATIC intipripng_sendpacket(struct  Ip_sockaddr_in6 *sin6, int len){    struct Ip_msghdr m;    struct Ip_cmsghdr *cm;    struct Ip_iovec iov[2];    Ip_u8 cmsgbuf[256];    struct Ip_in6_pktinfo *pi;    int idx;    struct Ip_sockaddr_in6 sin6copy;    /* do not overwrite the given sin6 */    sin6copy = *sin6;    sin6 = &sin6copy;    if (IP_IN6_IS_ADDR_LINK_LOCAL(&sin6->sin6_addr)     || IP_IN6_IS_ADDR_MULTICAST(&sin6->sin6_addr)) {        /* XXX: do not mix the interface index and link index */        idx = IN6_LINKLOCAL_IFINDEX(sin6->sin6_addr);        SET_IN6_LINKLOCAL_IFINDEX(sin6->sin6_addr, 0);        sin6->sin6_scope_id = idx;    } else        idx = 0;    if (ipripng.dflag)        ipcom_printf("ipripng_sendpacket, to format the packet\n");    m.msg_name = (char *)sin6;    m.msg_namelen = sizeof(*sin6);    iov[0].iov_base = (char *)ipripng.ripngbuf;    iov[0].iov_len = len;    m.msg_iov = iov;    m.msg_iovlen = 1;    m.msg_flags = 0;    if (!idx) {        m.msg_control = IP_NULL;        m.msg_controllen = 0;    } else {        memset(cmsgbuf, 0, sizeof(cmsgbuf));        cm = (struct Ip_cmsghdr *)cmsgbuf;        m.msg_control = (char *)cm;        m.msg_controllen = IP_CMSG_SPACE(sizeof(struct Ip_in6_pktinfo));        cm->cmsg_len = IP_CMSG_LEN(sizeof(struct Ip_in6_pktinfo));        cm->cmsg_level = IP_IPPROTO_IPV6;        cm->cmsg_type = IP_IPV6_PKTINFO;        pi = (struct Ip_in6_pktinfo *)IP_CMSG_DATA(cm);        memset(&pi->ipi6_addr, 0, sizeof(pi->ipi6_addr)); /*::*/        pi->ipi6_ifindex = idx;    }    if (ipripng.dflag)        ipcom_printf("ipripng_sendpacket, to call ipcom_sendmsg\n");    if ((ipcom_sendmsg(ipripng.udp_fd, &m, 0 /*MSG_DONTROUTE*/)) < 0)        {        IPCOM_LOG1(INFO, "sendmsg: %d", ipcom_errno);        return ipcom_errno;        }    return 0;}/* *=========================================================================== *                    ipripng_sendrequest *=========================================================================== * Description:   Send a RIPng request for all routes on this interface. * Parameters:    ifcp   Interface to send RIPng request on. * Returns: * */IP_GLOBAL voidipripng_sendrequest(struct ifc *ifcp){    struct netinfo6 *np;    int error;    char  buf[IP_INET6_ADDRSTRLEN];    char  buf2[IP_BUFSIZ];    if (ipripng.dflag)        ipcom_printf("Calling ipripng_sendrequest, %s\n", ifcp->ifc_name);    if (ifcp->ifc_flags & IP_IFF_LOOPBACK)        return;    ipripng.ripngbuf->rip6_cmd = RIP6_REQUEST;    np = ipripng.ripngbuf->rip6_nets;    memset(np, 0, sizeof(struct netinfo6));    np->rip6_metric = HOPCNT_INFINITY6;    if (ipcom_inet_ntop(IP_AF_INET6, &ifcp->ifc_ripsin.sin6_addr, buf, sizeof (buf))        == IP_NULL)        buf[0] = '\0';  /* So doesn't display garbage */    IPCOM_LOG2(INFO, "Send rtdump Request to %s (%s)",        ifcp->ifc_name, buf);    if (ipripng.dflag)	ipcom_printf("Send rtdump Request to %s (%s)", ifcp->ifc_name, buf);    error = ipripng_sendpacket(&ifcp->ifc_ripsin, RIPSIZE(1));    if (error == IP_ERRNO_EAFNOSUPPORT) {        /* Protocol not supported */        IPCOM_LOG3(INFO, "%s: Could not send rtdump Request to %s (%s): "            "set IFF_UP to 0", buf2,            ifcp->ifc_name, buf);        ifcp->ifc_flags &= ~IP_IFF_UP; /* As if down for AF_INET6 */    }    ipripng.ripngbuf->rip6_cmd = RIP6_RESPONSE;}/* *=========================================================================== *                    ipripng_update_timeout *=========================================================================== * Description:   Age all RIPng routes and send a regular RIPng update on all RIPng *                interfaces that should transmit. * Parameters:    tmo   NSTIME timeout structure. * Returns:       . * */IP_STATIC Ip_s32ipripng_update_timeout(Ipcom_tmo *tmo, void *cookie){    struct  ifc *ifcp;    Ipripng_rt *rrt, *rrt_prev, *rrt_next;    Ip_time_t  t_lifetime, t_holddown;    if (ripngStopFlag)   return 0;    IPRIPNG_LOCK();    (void)tmo;    (void)cookie;    IPCOM_LOG2(DEBUG2, "+++ update timeout, %ld interfaces, %ld routes:", ipripng.nifc, ipripng.rt_num);    /* age the RIPng routes */    rrt_prev = 0;    t_lifetime = time_offset(IP_NULL) - RIP_LIFETIME;    t_holddown = t_lifetime - RIP_HOLDDOWN;    for (rrt = (Ipripng_rt *)ipripng.riprt; rrt; rrt = rrt_next)        {        rrt_next = (Ipripng_rt *)rrt->rrt_next;        if (rrt->rrt_t == 0)            {            rrt_prev = rrt;            continue;            }        if (rrt->rrt_t < t_holddown)            {            if (rrt_prev)                {                rrt_prev->rrt_next = rrt->rrt_next;                }            else                {                ipripng.riprt = rrt->rrt_next;                }            /*             * Only delete the route if it wasn't already deleted.             * This happens if the user deleted the routes in the kernel             * and RIPng learned of the deleted route via the routing socket.             * It ages the route with metric 16, but after the timeout             * there is of course no need to delete it in the kernel.             */            if ((rrt->rrt_rflags & RRTF_DELETED) == 0)                {                if ((rrt->rrt_rflags & RRTF_RIPNGLEARNED) == 0)                    {                    /*                     * Don't delete static routes unless we've been                     * asked to age them. Normally static routes have                     * their rtt set to 0 unless the ripng_age flag is                     * set, but even in that case, if the interface goes                     * down, we ahe them so that we can advertise an                     * INFINITE metric for them. When we are finished                     * advertising them, we want to delete them from RIPng's                     * internal table but not from the system route table.                     */                    if ((rrt->rrt_flags & IPNET_RTF_STATIC) == 0 ||                        ipripng.aflag != 0)                        {                        IPCOM_LOG0(INFO, "Warning: Ageing a route not learned by RIPng");                        /* delroute() shouldn't use PROTO_SET */                        ipripng.delete_route(&rrt->rrt_info, &rrt->rrt_gw, IP_FALSE);                        }                    }                else                    {                    ipripng.delete_route(&rrt->rrt_info, &rrt->rrt_gw, IP_TRUE);                    }                }            ipcom_free(rrt);            continue;            }            if (rrt->rrt_t < t_lifetime)                {                rrt->rrt_info.rip6_metric = HOPCNT_INFINITY6;                }            rrt_prev = rrt;        }    /* Supply updates */    for (ifcp = ipripng.ifc; ifcp; ifcp = ifcp->ifc_next)        {        if ((ifcp->ifc_index > 0) && (ifcp->ifc_flags & IP_IFF_UP))

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成av人片在www色猫咪| 日本成人中文字幕在线视频| 中文无字幕一区二区三区| 亚洲欧美日韩国产成人精品影院| 亚瑟在线精品视频| 美国毛片一区二区| 一本大道久久a久久综合婷婷| 欧美午夜在线观看| 成人免费一区二区三区视频 | 日韩一区二区中文字幕| 中文字幕一区二区视频| 精品午夜久久福利影院| 欧美久久久久久久久中文字幕| 亚洲视频精选在线| 高清不卡在线观看av| 精品少妇一区二区三区日产乱码| 亚洲第一成人在线| 欧美在线观看视频一区二区三区 | 国产成人免费av在线| 日韩一级二级三级精品视频| 亚洲国产一二三| 日本二三区不卡| 日韩毛片高清在线播放| www.爱久久.com| 国产精品理伦片| av在线这里只有精品| 国产精品三级视频| av资源网一区| 亚洲男人的天堂av| 在线欧美一区二区| 一区二区三区高清不卡| 91久久线看在观草草青青| 亚洲日本免费电影| 91麻豆福利精品推荐| 亚洲少妇屁股交4| 99精品久久99久久久久| 成人欧美一区二区三区小说| 91丝袜美女网| 亚洲一区日韩精品中文字幕| 欧美在线观看你懂的| 午夜视频一区在线观看| 欧美一区二区视频在线观看2020| 日韩国产精品91| 精品欧美一区二区三区精品久久| 国产在线视频一区二区三区| 久久免费的精品国产v∧| 粉嫩aⅴ一区二区三区四区| 国产精品三级视频| 在线免费精品视频| 蜜桃av一区二区在线观看| 精品99一区二区| www.欧美精品一二区| 一区二区三区中文字幕电影| 欧美日本乱大交xxxxx| 极品瑜伽女神91| 成人免费在线观看入口| 欧美精品久久一区| 国产一区二区三区免费观看| 中文字幕一区二区三区四区| 欧美日韩国产另类不卡| 国产乱子伦一区二区三区国色天香| 国产精品视频观看| 欧美精品免费视频| 国产一区三区三区| 综合网在线视频| 8v天堂国产在线一区二区| 日本不卡一区二区三区| 国产视频一区二区在线| 日本二三区不卡| 国产精品自在在线| 午夜欧美在线一二页| 国产网站一区二区| 91麻豆精品国产91久久久使用方法| 国产一区二区不卡在线| 亚洲成精国产精品女| 国产婷婷色一区二区三区在线| 欧美无砖砖区免费| 国产成都精品91一区二区三| 亚洲aaa精品| 国产精品妹子av| 欧美大片在线观看| 欧美图区在线视频| eeuss国产一区二区三区| 久久精品国产亚洲a| 亚洲影视在线播放| 中文字幕色av一区二区三区| 日韩免费一区二区| 欧美色图第一页| 91热门视频在线观看| 国产精品资源在线看| 蜜臀av国产精品久久久久| 亚洲免费毛片网站| 国产精品久久精品日日| 久久美女高清视频| 日韩欧美一区二区视频| 欧美三级乱人伦电影| 国产mv日韩mv欧美| 国产精品12区| 久久99国产精品久久99果冻传媒| 亚洲1区2区3区视频| 伊人性伊人情综合网| 1024成人网色www| 中文字幕国产一区| 欧美激情中文字幕| 欧美国产在线观看| 日本一区二区三区免费乱视频 | 日韩一区二区电影在线| 欧美综合亚洲图片综合区| 91亚洲永久精品| 成人的网站免费观看| 成人丝袜18视频在线观看| 国产精品 欧美精品| 成人免费视频免费观看| 懂色av中文字幕一区二区三区| 国产精品66部| 高清在线不卡av| 成人av网站大全| 色又黄又爽网站www久久| 一本色道亚洲精品aⅴ| 91高清视频在线| 91国产成人在线| 欧美久久久久久久久久| 日韩网站在线看片你懂的| 欧美r级在线观看| 日本一区二区三区dvd视频在线| 久久久蜜桃精品| 亚洲色图视频免费播放| 一级做a爱片久久| 婷婷久久综合九色综合伊人色| 日韩精品一二三四| 国产一区视频导航| av资源网一区| 在线播放欧美女士性生活| 欧美va亚洲va在线观看蝴蝶网| 久久亚洲综合色一区二区三区 | 色又黄又爽网站www久久| 欧美日韩在线播| 欧美成人bangbros| 国产精品成人免费精品自在线观看 | 国产精品伦一区| 亚洲va欧美va国产va天堂影院| 午夜av一区二区三区| 国内久久精品视频| 91丨国产丨九色丨pron| 4438x成人网最大色成网站| 久久你懂得1024| 亚洲一区二区欧美| 国模无码大尺度一区二区三区| 国产69精品久久久久毛片| 在线精品亚洲一区二区不卡| 精品日产卡一卡二卡麻豆| 国产精品国产三级国产专播品爱网| 一二三区精品视频| 国产精品一区久久久久| 欧美午夜理伦三级在线观看| 久久综合久久99| 香蕉影视欧美成人| 成人国产在线观看| 日韩精品一区二区三区视频在线观看| 欧美国产日韩a欧美在线观看| 午夜激情久久久| 99这里只有久久精品视频| 日韩欧美成人一区二区| 曰韩精品一区二区| 丁香婷婷综合色啪| 91精品综合久久久久久| 亚洲美女在线一区| 国产乱子轮精品视频| 欧美一区二区三区视频| 一二三四社区欧美黄| 成人av小说网| 久久久久久麻豆| 久久精品国产一区二区| 欧美日韩成人激情| 亚洲人成在线播放网站岛国 | 午夜精品久久久| eeuss国产一区二区三区| 久久先锋影音av鲁色资源网| 亚洲夂夂婷婷色拍ww47| 成人黄色av网站在线| 欧美日韩一区二区在线视频| 亚洲三级免费电影| 精品在线一区二区| 7777精品伊人久久久大香线蕉| 亚洲人成网站精品片在线观看| 国产一区二区调教| 欧美精品一区二区三区一线天视频| 亚洲在线免费播放| 99r国产精品| 国产精品高清亚洲| 成人h版在线观看| 欧美国产精品劲爆| 国产一区二区三区在线看麻豆| 欧美一区二区播放| 青青草91视频| 日韩区在线观看| 理论电影国产精品| 精品日韩一区二区三区| 麻豆freexxxx性91精品| 欧美一区二区三区播放老司机|