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

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

?? ipripng_daemon.c

?? 這是最新的vxWorks6.7協議棧下的RIPng(rip over ipv6)實現
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * Copyright 2006 Wind River Systems, Inc. * * The right to copy, distribute, modify or otherwise make use * of this software may be licensed only pursuant to the terms * of an applicable Wind River license agreement. *//*modification history--------------------01c,24jan07,tlu  Fix gnu compile warning01b,17nov06,tlu  Define the stack size for the RIPng task and reset daemon_started 		 to IP_FALSE at function ripngStop()01a,12jun06,tlu  Initial creation*//* **************************************************************************** * 1                    DESCRIPTION **************************************************************************** *//* **************************************************************************** * 2                    CONFIGURATION **************************************************************************** *//* **************************************************************************** * 3                    INCLUDE FILES **************************************************************************** */#define IPCOM_USE_CLIB_PROTO#include <ipcom_type.h>#include <ipcom_cstyle.h>#include <ipcom_clib.h>#include <ipcom_err.h>#include <ipcom_os.h>#include <ipcom_sock.h>#include <ipcom_sock2.h>#include <ipcom_inet.h>#include <ipcom_syslog.h>#include <ipcom_ipd.h>#include <ipcom_errno.h>#include <ipnet_config.h>#include <ipnet.h>#include <ipnet_cmd.h>#include <ipnet_h.h>#include <ipnet_ip6.h>#include "ipripng.h"#include "ipripng_constant.h"/* **************************************************************************** * 4                    DEFINES **************************************************************************** */#ifndef IPNET#error IPRIPNG_REQUIRES_IPNET#endif#define IPNET_IF_LOOPBACK_INDEX    1       /* The index of the loopback interface */#define RIPTASKSTACK    20000		   /* RIPng task stack size *//* **************************************************************************** * 5                    TYPES **************************************************************************** *//* **************************************************************************** * 6                    EXTERN PROTOTYPES **************************************************************************** *//* **************************************************************************** * 7                    LOCAL PROTOTYPES **************************************************************************** */IP_STATIC Ip_err ipripng_write(Ip_fd udp_fd, void *cookie, Ip_u32 ipaddr_n, Ipcom_sock_addr *dest, void *buf, Ip_size_t len);IP_STATIC Ip_err ipripng_add_route_rtsock(Ipripng_rt *rrt, const struct in6_addr *gw, struct ifc *ifcp);IP_STATIC Ip_err ipripng_delete_route_rtsock(struct netinfo6 *np, const struct in6_addr *gw, Ip_bool proto_set);IPCOM_PROCESS(ipripngd);IP_PUBLIC Ip_err ipripng_create(void);/* **************************************************************************** * 8                    DATA **************************************************************************** */IP_STATIC Ip_bool daemon_started = IP_FALSE;IP_PUBLIC Ip_bool ripngStopFlag;IP_PUBLIC char ripng_cmdString[IPRIPNG_MAXARGS + 2];IP_STATIC int priv_ripng_seq;#if IPRIP_SYSLOG_PRIORITY >= IPCOM_LOG_DEBUG2IP_STATIC Ipnet_cmd_int_str_map iprip_rtm_map[] ={    { IPNET_RTM_ADD,       "ADD" },    { IPNET_RTM_DELETE,    "DELETE" },    { IPNET_RTM_CHANGE,    "CHANGE" },    { IPNET_RTM_GET,       "GET" },    { IPNET_RTM_LOOSING,   "LOOSING" },    { IPNET_RTM_REDIRECT,  "REDIRECT" },    { IPNET_RTM_MISS,      "MISS" },    { IPNET_RTM_LOCK,      "LOCK" },    { IPNET_RTM_RESOLVE,   "RESOLVE" },    { IPNET_RTM_NEWADDR,   "NEWADDR" },    { IPNET_RTM_DELADDR,   "DELADDR" },    { IPNET_RTM_IFINFO,    "IFINFO" },    { -1, IP_NULL }};IP_STATIC Ipnet_cmd_int_str_map iprip_rta_map[] ={    { IPNET_RTAX_DST,      "DST" },    { IPNET_RTAX_GATEWAY,  "GATEWAY" },    { IPNET_RTAX_NETMASK,  "NETMASK" },    { IPNET_RTAX_GENMASK,  "GENMASK" },    { IPNET_RTAX_IFP,      "IFP" },    { IPNET_RTAX_IFA,      "IFA" },    { IPNET_RTAX_AUTHOR,   "AUTHOR" },    { IPNET_RTAX_BRD,      "BRD" },    { -1, IP_NULL }};#endif/* **************************************************************************** * 9                    LOCAL FUNCTIONS **************************************************************************** *//* *=========================================================================== *                         ipripng_rtsock_add *=========================================================================== * Description: * Parameters: * Returns: * */IP_STATIC Ip_erripripng_rtsock_add(Ipripng_rt *rrt, const struct in6_addr *gw, struct ifc *ifcp){    struct  netinfo6 *np;    Ip_u8   buffer[IP_BUFSIZ], buf1[IP_INET6_ADDRSTRLEN], buf2[IP_INET6_ADDRSTRLEN];    struct  Ipnet_rt_msghdr   *rtm;    struct  Ip_sockaddr_in6    *sin;    int len;    char    buf3[IP_INET6_ADDRSTRLEN];    Ip_fd ripng_rtsock;    np = &rrt->rrt_info;    if (ipcom_inet_ntop(IP_AF_INET6, (void *)gw, (char *)buf1, sizeof(buf1)) == IP_NULL)        buf1[0] = '\0'; /* So doesn't display garbage */    if (ipcom_inet_ntop(IP_AF_INET6, (void *)&ifcp->ifc_mylladdr, (char *)buf2, sizeof(buf2)) == IP_NULL)        buf2[0] = '\0'; /* So doesn't display garbage */    if (ipcom_inet_ntop(IP_AF_INET6, &(np->rip6_dest), buf3, sizeof (buf3)) == IP_NULL)        buf3[0] = '\0'; /* So doesn't display garbage */    IPCOM_LOG5(INFO, "ADD: %s/%d gw %s [%d] ifa %s",         buf3, np->rip6_plen, buf1,        np->rip6_metric - 1, buf2);    if (ipripng_nflag())        return 0;    memset(buffer, 0, sizeof(buffer));    rtm = (struct Ipnet_rt_msghdr *)buffer;    rtm->rtm_type = IPNET_RTM_ADD;    rtm->rtm_version = IPNET_RTM_VERSION;    rtm->rtm_seq = ++priv_ripng_seq;    rtm->rtm_pid = ipcom_getpid();    rtm->rtm_flags = rrt->rrt_flags;    if ((rtm->rtm_flags & IPNET_RTF_HOST) == 0)        rtm->rtm_addrs = IPNET_RTA_DST | IPNET_RTA_GATEWAY | IPNET_RTA_NETMASK;    else        rtm->rtm_addrs = IPNET_RTA_DST | IPNET_RTA_GATEWAY;    rtm->rtm_rmx.rmx_hopcount = np->rip6_metric - 1;    rtm->rtm_inits = IPNET_RTV_HOPCOUNT;    sin = (struct Ip_sockaddr_in6 *)&buffer[sizeof(struct Ipnet_rt_msghdr)];    /* Destination */    sin->sin6_len = sizeof(struct Ip_sockaddr_in6);    sin->sin6_family = IP_AF_INET6;    sin->sin6_addr = np->rip6_dest;    RT_PROTO_SET (sin, M2_ipRouteProto_rip);    TOS_SET (sin, 0);    sin = (struct Ip_sockaddr_in6 *)((char *)sin + ROUNDUP(sin->sin6_len));    /* Gateway */    sin->sin6_len = sizeof(struct Ip_sockaddr_in6);    sin->sin6_family = IP_AF_INET6;    sin->sin6_addr = *gw;    sin = (struct Ip_sockaddr_in6 *)((char *)sin + ROUNDUP(sin->sin6_len));    if ((rtm->rtm_flags & IPNET_RTF_HOST) == 0)        {        /* Netmask */        sin->sin6_len = sizeof(struct Ip_sockaddr_in6);        sin->sin6_family = IP_AF_INET6;        sin->sin6_addr = *(plen2mask(np->rip6_plen));        sin = (struct Ip_sockaddr_in6 *)((char *)sin + ROUNDUP(sin->sin6_len));        }    len = (char *)sin - (char *)buffer;    rtm->rtm_msglen = len;    ripng_rtsock = ipripng_rtsocket();    if (ipcom_socketwrite(ripng_rtsock, (char *)buffer, len) > 0)        return IPCOM_SUCCESS;    if (ipcom_errno == IP_ERRNO_EEXIST) {        IPCOM_LOG3(WARNING, "ADD: Route already exists %s/%d gw %s",            buf3, np->rip6_plen, buf1);    } else {        IPCOM_LOG1(WARNING, "Can not write to ripng_rtsock (addroute): %s",            ipcom_strerror(ipcom_errno));    }    return IPCOM_ERR_FAILED;}/* *=========================================================================== *                         ipripng_rtsock_del *=========================================================================== * Description: * Parameters: * Returns: * */IP_STATIC Ip_erripripng_rtsock_del(struct netinfo6 *np, const struct in6_addr *gw, Ip_bool proto_set){    Ip_u8  buf[IP_BUFSIZ], buf2[IP_INET6_ADDRSTRLEN];    struct  Ipnet_rt_msghdr   *rtm;    struct  Ip_sockaddr_in6    *sin;    int len;    char    buf3[IP_INET6_ADDRSTRLEN];    Ip_fd ripng_rtsock;    if (ipcom_inet_ntop(IP_AF_INET6, (void *)gw, (char *)buf2, sizeof(buf2)) == IP_NULL)        buf2[0] = '\0'; /* So doesn't display garbage */    if (ipcom_inet_ntop(IP_AF_INET6, &np->rip6_dest, buf3, sizeof (buf3)) == IP_NULL)        buf3[0] = '\0'; /* So doesn't display garbage */    IPCOM_LOG3(INFO, "DEL: %s/%d gw %s", buf3,        np->rip6_plen, buf2);    if (ipripng_nflag())        return 0;    memset(buf, 0, sizeof(buf));    rtm = (struct Ipnet_rt_msghdr *)buf;    rtm->rtm_type = IPNET_RTM_DELETE;    rtm->rtm_version = IPNET_RTM_VERSION;    rtm->rtm_seq = ++priv_ripng_seq;    rtm->rtm_pid = ipcom_getpid();    rtm->rtm_flags = IPNET_RTF_UP | IPNET_RTF_GATEWAY;    if (np->rip6_plen == sizeof(struct in6_addr) * 8)        {        rtm->rtm_flags |= IPNET_RTF_HOST;        rtm->rtm_addrs = IPNET_RTA_DST | IPNET_RTA_GATEWAY;        }    else        rtm->rtm_addrs = IPNET_RTA_DST | IPNET_RTA_GATEWAY | IPNET_RTA_NETMASK;    sin = (struct Ip_sockaddr_in6 *)&buf[sizeof(struct Ipnet_rt_msghdr)];    /* Destination */    sin->sin6_len = sizeof(struct Ip_sockaddr_in6);    sin->sin6_family = IP_AF_INET6;    sin->sin6_addr = np->rip6_dest;    if (proto_set)        {        RT_PROTO_SET (sin, M2_ipRouteProto_rip);        TOS_SET (sin, 0);        }    sin = (struct Ip_sockaddr_in6 *)((char *)sin + ROUNDUP(sin->sin6_len));    /* Gateway */    sin->sin6_len = sizeof(struct Ip_sockaddr_in6);    sin->sin6_family = IP_AF_INET6;    sin->sin6_addr = *gw;    sin = (struct Ip_sockaddr_in6 *)((char *)sin + ROUNDUP(sin->sin6_len));    if ((rtm->rtm_flags & IPNET_RTF_HOST) == 0)        {        /* Netmask */        sin->sin6_len = sizeof(struct Ip_sockaddr_in6);        sin->sin6_family = IP_AF_INET6;        sin->sin6_addr = *(plen2mask(np->rip6_plen));        sin = (struct Ip_sockaddr_in6 *)((char *)sin + ROUNDUP(sin->sin6_len));        }    len = (char *)sin - (char *)buf;    rtm->rtm_msglen = len;    ripng_rtsock = ipripng_rtsocket();    if (ipcom_socketwrite(ripng_rtsock, (char *)buf, len) >= 0)        return IPCOM_SUCCESS;    if (ipcom_errno == IP_ERRNO_ESRCH) {        IPCOM_LOG3(WARNING, "RTDEL: Route does not exist: %s/%d gw %s",            buf3, np->rip6_plen, buf2);    } else {        IPCOM_LOG1(WARNING, "Can not write to ripng_rtsock (delroute): %s",            ipcom_strerror(ipcom_errno));    }    return IPCOM_ERR_FAILED;}/* *=========================================================================== *                         iprip_add_route_rtsock *=========================================================================== * Description: * Parameters: * Returns: * */IP_STATIC Ip_erripripng_add_route_rtsock(Ipripng_rt *rrt, const struct in6_addr *gw, struct ifc *ifcp){    return ipripng_rtsock_add(rrt, gw, ifcp);}/* *=========================================================================== *                         ipripng_delete_route_rtsock *=========================================================================== * Description: * Parameters: * Returns: * */IP_STATIC Ip_erripripng_delete_route_rtsock(struct netinfo6 *np, const struct in6_addr *gw, Ip_bool proto_set){    return ipripng_rtsock_del(np, gw, proto_set);}/* *=========================================================================== *                    ipripng_write *=========================================================================== * Description: * Parameters: * Returns: * */IP_STATIC Ip_erripripng_write(Ip_fd udp_fd, void *cookie, Ip_u32 ipaddr_n, Ipcom_sock_addr *dest, void *buf, Ip_size_t len){    (void)cookie;    /* success. */    return 0;}/* *=========================================================================== *                    ipripngd *=========================================================================== * Description: RIPng daemon * Parameters: * Returns: * */IPCOM_PROCESS(ipripngd){    Ip_err ret;    Ipripng_open conf;    struct  ifc *ifcp;    Ip_bool ipripng_init_ok = IP_FALSE;    Ip_bool ipripng_open_ok = IP_FALSE;    Ip_u32 num, max;    Ip_fd udp_fd = IP_INVALID_SOCKET;    Ip_fd rt_fd = IP_INVALID_SOCKET;    Ip_fd_set  read_set, fds;    Ip_fd  ipd_fd = IP_INVALID_SOCKET;    struct Ip_timeval tv, *ptv = IP_NULL;    ipcom_proc_init();    IPCOM_LOG0(INFO, "ipripngd :: starting");    daemon_started = IP_TRUE;    ripngStopFlag = IP_FALSE;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
奇米四色…亚洲| 亚洲一区二区高清| 日韩免费观看高清完整版| 91蜜桃免费观看视频| aaa欧美色吧激情视频| av影院午夜一区| 色天天综合色天天久久| 91网站黄www| 欧美亚洲国产一区二区三区va| 91麻豆国产精品久久| 色婷婷久久久综合中文字幕| 欧洲另类一二三四区| 欧美午夜精品久久久久久超碰 | 欧美一级日韩不卡播放免费| 5月丁香婷婷综合| 精品国产一区久久| 欧美国产一区二区| 国产精品久久午夜| 亚洲成a人在线观看| 日本成人在线电影网| 国产精品综合在线视频| k8久久久一区二区三区| 色偷偷88欧美精品久久久| 精品污污网站免费看| 精品精品国产高清一毛片一天堂| 久久视频一区二区| 亚洲卡通欧美制服中文| 奇米在线7777在线精品| 国产成人免费网站| 在线观看精品一区| 精品乱人伦小说| 亚洲欧美福利一区二区| 麻豆91精品视频| 99视频在线精品| 日韩欧美一级在线播放| 国产精品免费免费| 日韩不卡手机在线v区| 国产一区二区影院| 欧美午夜电影一区| 欧美激情一二三区| 久久爱www久久做| 日本韩国欧美一区二区三区| 欧美精品一区二区三区视频| 亚洲精品v日韩精品| 韩国欧美一区二区| 欧美日韩成人综合天天影院| 国产女人aaa级久久久级| 日韩1区2区3区| 色婷婷激情综合| 欧美国产综合色视频| 蜜桃一区二区三区在线观看| 一本久道中文字幕精品亚洲嫩| 欧美va亚洲va香蕉在线| 亚洲成人在线网站| 93久久精品日日躁夜夜躁欧美| 日韩免费视频一区二区| 亚洲成人综合视频| 91在线视频免费观看| 国产欧美一区二区精品久导航| 日本va欧美va瓶| 欧美日韩精品一区二区三区蜜桃 | 欧美成人三级在线| 无码av中文一区二区三区桃花岛| 菠萝蜜视频在线观看一区| 国产亚洲精久久久久久| 精品亚洲国产成人av制服丝袜| 欧美亚洲动漫精品| 亚洲小说春色综合另类电影| 色婷婷久久久亚洲一区二区三区| 综合色天天鬼久久鬼色| 不卡视频在线观看| 中文字幕中文在线不卡住| 国产不卡视频在线观看| 国产偷国产偷精品高清尤物| 国产大陆精品国产| 久久久不卡网国产精品一区| 精品伊人久久久久7777人| 精品国产免费视频| 激情欧美一区二区三区在线观看| 欧美一区二区在线看| 精品一二线国产| 国产日韩欧美麻豆| 成人sese在线| 亚洲精品一二三| 欧美精品日韩一本| 免费看日韩精品| 久久久一区二区三区捆绑**| 国产精品夜夜嗨| 亚洲婷婷国产精品电影人久久| 91丝袜美腿高跟国产极品老师 | 国内精品在线播放| 中文字幕精品一区二区三区精品 | 日韩成人一级片| 精品少妇一区二区三区视频免付费 | 国产精品美女久久福利网站| av亚洲精华国产精华精| 一二三四区精品视频| 欧美日韩国产影片| 狠狠色丁香婷婷综合| 国产女人18水真多18精品一级做| av一二三不卡影片| 石原莉奈一区二区三区在线观看| 欧美一区二区视频免费观看| 国产精品18久久久久久久网站| 国产精品高潮呻吟| 欧美精品乱码久久久久久按摩| 国产最新精品免费| 亚洲欧美另类久久久精品2019| 91精品欧美一区二区三区综合在| 国产乱码精品1区2区3区| 亚洲美女屁股眼交3| 欧美一区二区视频观看视频| 国产91精品入口| 亚洲成av人片一区二区| 欧美白人最猛性xxxxx69交| 欧美日韩一区二区三区四区| 五月婷婷综合网| 久久久美女艺术照精彩视频福利播放| 成人精品视频一区二区三区| 亚洲成人高清在线| 国产精品热久久久久夜色精品三区| 欧美丝袜丝交足nylons图片| 国产成人自拍网| 视频一区欧美精品| 亚洲欧美日韩小说| 久久久久久久久久久电影| 欧美日韩aaaaaa| 成人高清伦理免费影院在线观看| 日韩激情一二三区| 亚洲欧美偷拍卡通变态| 久久先锋影音av鲁色资源| 欧美日本高清视频在线观看| 不卡一区中文字幕| 国产精选一区二区三区| 日韩av一区二区三区| 亚洲一区二区视频在线观看| 国产精品你懂的| 久久精品人人做人人爽人人| 日韩精品一区二区三区三区免费| 91久久香蕉国产日韩欧美9色| 成熟亚洲日本毛茸茸凸凹| 精品一区二区免费在线观看| 日韩成人一级片| 日韩国产欧美在线播放| 亚洲成人第一页| 亚洲综合精品自拍| 亚洲欧美日本在线| 亚洲色图欧美偷拍| 国产精品亲子伦对白| 欧美高清在线一区二区| 国产日韩欧美一区二区三区乱码| 久久你懂得1024| 久久精品夜色噜噜亚洲a∨| 欧美v国产在线一区二区三区| 欧美一区二区三区成人| 欧美高清视频不卡网| 欧美精品色一区二区三区| 91.com在线观看| 日韩欧美国产综合在线一区二区三区| 欧美日韩一区小说| 51精品秘密在线观看| 日韩一区二区中文字幕| 欧美成人综合网站| 国产欧美在线观看一区| 国产精品网站在线观看| 亚洲人成网站色在线观看| 一区二区三区不卡视频| 亚洲成人免费视| 美国精品在线观看| 国产成人精品免费视频网站| www.在线成人| 91福利社在线观看| 欧美一区二区在线看| 久久嫩草精品久久久久| 国产精品国产自产拍高清av| 自拍偷拍亚洲欧美日韩| 亚洲成在人线免费| 九九视频精品免费| 波多野结衣在线一区| 在线亚洲一区观看| 日韩精品一区二区三区视频在线观看| 国产偷国产偷精品高清尤物 | 91国内精品野花午夜精品| 欧美久久一二区| 欧美韩国日本一区| 日韩激情视频在线观看| 成人免费视频视频| 欧美日韩免费视频| 久久亚洲一区二区三区四区| 亚洲美女淫视频| 国产一区二区三区在线观看精品| eeuss影院一区二区三区| 538在线一区二区精品国产| 国产日韩欧美精品综合| 天堂va蜜桃一区二区三区 | 欧美日韩视频专区在线播放| 久久精品亚洲精品国产欧美kt∨ | 在线免费精品视频| 久久午夜国产精品| 日韩vs国产vs欧美|