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

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

?? dhcprelay.c

?? VxWorks下DHCP的源代碼!
?? C
?? 第 1 頁 / 共 2 頁
字號:
** This routine relays a DHCP or BOOTP message to the specified target address.** RETURNS: N/A** ERRNO: N/A** NOMANUAL*/static STATUS forwarding (struct server *srvp){    int i, n;    int sockfd = -1;    int msgsize = DHCPLEN (dhcpMsgIn.udp);    struct sockaddr_in my_addr, serv_addr;    int result;#ifdef DHCPR_DEBUG    char output[INET_ADDR_LEN];#endif    if ((sockfd = socket (AF_INET, SOCK_DGRAM, 0)) < 0) {#ifdef DHCPR_DEBUG        logMsg ("socket() error in forwarding()\n", 0, 0, 0, 0, 0, 0);#endif        return (ERROR);    }    bzero ((char *) &my_addr, sizeof (my_addr));    my_addr.sin_family = AF_INET;    my_addr.sin_addr.s_addr = htonl (INADDR_ANY);    my_addr.sin_port = dhcpc_port;  /* Servers expect client port. */    if (bind (sockfd, (struct sockaddr *) &my_addr, sizeof (my_addr)) < 0) {#ifdef DHCPR_DEBUG        logMsg ("bind() error in forwarding()\n", 0, 0, 0, 0, 0, 0);#endif        close (sockfd);        return (ERROR);    }    dhcprMsgOut.dhcp = dhcpMsgIn.dhcp;    result = setsockopt (sockfd, SOL_SOCKET, SO_SNDBUF, (char *) &msgsize, sizeof (msgsize));    if (result < 0) {#ifdef DHCPR_DEBUG        logMsg ("Warning: can't set send buffer in forwarding().\n", 0, 0, 0, 0, 0, 0);#endif        close (sockfd);        return (ERROR);    }    n = sizeof (serv_addr);    for (i = 0; i < dhcpNumTargets; i++) {        bzero ((char *) &serv_addr, n);        serv_addr.sin_family = AF_INET;        serv_addr.sin_addr.s_addr = srvp->ip.s_addr;        serv_addr.sin_port = dhcps_port;#ifdef DHCPR_DEBUG        inet_ntoa_b (srvp->ip, output);        printf ("Server relay: sending %d bytes to %s.\n", msgsize, output);#endif        sendto (sockfd, (char *) dhcprMsgOut.dhcp, msgsize, 0, (struct sockaddr *) &serv_addr, n);        srvp = srvp->next;    }    close (sockfd);    return (OK);}/********************************************************************************* dhcpClientRelay - send DHCP/BOOTP replies to client** This routine relays a DHCP or BOOTP reply to the client which generated* the initial request. The routine accesses global pointers already set to * indicate the reply. All messages are discarded after the hops field exceeds * 16 to comply with the relay agent behavior specified in RFC 1542. The relay * agent normally discards such messages before this routine is called. They * will only be received by this routine if the user ignores the instructions * in the manual and sets the value of DHCP_MAX_HOPS higher than 16.** RETURNS: N/A** ERRNO: N/A** NOMANUAL*/void dhcpClientRelay (struct if_info *list, int dhcplen, char *pSendBuf /* Transmit buffer for fragmented message. */    ){    int total;    char devName[10];    struct if_info *ifp;    struct sockaddr_in dest;    BOOL bcastFlag;    int msgtype = 0;    char *option = NULL;    struct ifnet *pIf;    STATUS result;#ifdef DHCPR_DEBUG    char srcAddr[INET_ADDR_LEN];    char dstAddr[INET_ADDR_LEN];#endif    if (dhcpMsgIn.dhcp->hops >= 17) /* RFC limits to 16 hops - ignore. */        return;    ifp = list;    while (ifp != NULL) {        if (ifp->ipaddr.s_addr == dhcpMsgIn.dhcp->giaddr.s_addr)            break;        ifp = ifp->next;    }    if (ifp == NULL) {#ifdef DHCPR_DEBUG        inet_ntoa_b (dhcpMsgIn.ip->ip_src, srcAddr);        logMsg ("Warning: DHCP message from server(%s) has no interface.\n",                srcAddr, 0, 0, 0, 0, 0);#endif        return;    }    sprintf (devName, "%s%d", ifp->name, ifp->unit);    pIf = ifunit (devName);    if (pIf == NULL) {#ifdef DHCPR_DEBUG        logMsg ("Warning: couldn't access network interface %s.\n", (int) ifp->name, 0, 0, 0, 0, 0);#endif        return;    }    if ((option = pickup_opt (dhcpMsgIn.dhcp, dhcplen, _DHCP_MSGTYPE_TAG))        != NULL)        msgtype = *OPTBODY (option);    /* There is already space for the IP and UDP headers. */    dhcprMsgOut.dhcp = dhcpMsgIn.dhcp;    dhcprMsgOut.udp = dhcpMsgIn.udp;    dhcprMsgOut.ip = dhcpMsgIn.ip;#ifdef DHCPR_DEBUG    logMsg ("Client relay: Headers found.\n", 0, 0, 0, 0, 0, 0);#endif#ifdef DHCPR_DEBUG    logMsg ("Setting parameters.\n", 0, 0, 0, 0, 0, 0);#endif    bzero ((char *) &dest, sizeof (struct sockaddr_in));    dest.sin_len = sizeof (struct sockaddr_in);    dest.sin_family = AF_INET;    if (ISBRDCST (dhcpMsgIn.dhcp->flags)) {#ifdef DHCPR_DEBUG        logMsg ("Broadcasting reply.\n", 0, 0, 0, 0, 0, 0);#endif        dest.sin_addr.s_addr = dhcprMsgOut.ip->ip_dst.s_addr = 0xffffffff;        dhcprMsgOut.ip->ip_src.s_addr = ifp->ipaddr.s_addr;        bcastFlag = TRUE;    } else {        if (msgtype == DHCPNAK) {            dest.sin_addr.s_addr = dhcprMsgOut.ip->ip_dst.s_addr = 0xffffffff;            bcastFlag = TRUE;        } else {            dhcprMsgOut.ip->ip_dst.s_addr = dhcpMsgIn.dhcp->yiaddr.s_addr;            dest.sin_addr.s_addr = dhcpMsgIn.dhcp->yiaddr.s_addr;            bcastFlag = FALSE;        }        dhcprMsgOut.ip->ip_src.s_addr = ifp->ipaddr.s_addr;#ifdef DHCPR_DEBUG        inet_ntoa_b (dhcprMsgOut.ip->ip_src, srcAddr);        inet_ntoa_b (dhcprMsgOut.ip->ip_dst, dstAddr);        logMsg ("Sending reply from %s to %s.\n", srcAddr, dstAddr, 0, 0, 0, 0);#endif    }    dhcprMsgOut.udp->uh_sport = dhcps_port;    dhcprMsgOut.udp->uh_dport = dhcpc_port;    dhcprMsgOut.udp->uh_ulen = htons (dhcplen + UDPHL);    dhcprMsgOut.udp->uh_sum = get_udpsum (dhcprMsgOut.ip, dhcprMsgOut.udp);    dhcprMsgOut.ip->ip_v = IPVERSION;    dhcprMsgOut.ip->ip_hl = IPHL >> 2;    dhcprMsgOut.ip->ip_tos = 0;    dhcprMsgOut.ip->ip_len = htons (dhcplen + UDPHL + IPHL);    dhcprMsgOut.ip->ip_id = dhcprMsgOut.udp->uh_sum;    dhcprMsgOut.ip->ip_ttl = 0x20;  /* XXX */    dhcprMsgOut.ip->ip_p = IPPROTO_UDP;    total = dhcplen + IPHL + UDPHL;    if (total <= pIf->if_mtu) {        /*         * The message fits within the MTU size of the outgoing interface.         * Send it "in place", altering the UDP and IP headers of the         * original (incoming) message's buffer.         */        dhcprMsgOut.ip->ip_off = 0;        dhcprMsgOut.ip->ip_sum = get_ipsum (dhcprMsgOut.ip);#ifdef DHCPR_DEBUG        logMsg ("Writing %d bytes.\n", total, 0, 0, 0, 0, 0);#endif        result = dhcpsSend (pIf,                            dhcprMsgOut.dhcp->chaddr, dhcprMsgOut.dhcp->hlen,                            &dest, (char *) dhcprMsgOut.ip, total, bcastFlag);#ifdef DHCPR_DEBUG        if (result != OK)            logMsg ("Error %d relaying message to client.\n", errno, 0, 0, 0, 0, 0);#endif    } else {        /*         * The message exceeds the MTU size of the outgoing interface.         * Split it into fragments and send them using the provided         * transmit buffer.         */        char *n, *end, *begin;        begin = (char *) dhcprMsgOut.udp;        end = &begin[total];        total = pIf->if_mtu - IPHL;        for (n = begin; n < end; n += total) {            if ((end - n) >= total) {                dhcprMsgOut.ip->ip_len = htons (pIf->if_mtu);                dhcprMsgOut.ip->ip_off = htons (IP_MF | ((((n - begin) / 8)) & 0x1fff));                dhcprMsgOut.ip->ip_sum = get_ipsum (dhcprMsgOut.ip);                bcopy ((char *) dhcprMsgOut.ip, pSendBuf, IPHL);                bcopy ((char *) n, &pSendBuf[IPHL], total);            } else {                /* Last fragment of message. */                dhcprMsgOut.ip->ip_len = htons (IPHL + end - n);                dhcprMsgOut.ip->ip_off = htons (((n - begin) / 8) & 0x1fff);                dhcprMsgOut.ip->ip_sum = get_ipsum (dhcprMsgOut.ip);                bcopy ((char *) dhcprMsgOut.ip, pSendBuf, IPHL);                bcopy ((char *) n, &pSendBuf[IPHL], end - n);            }            dhcpsSend (pIf,                       dhcprMsgOut.dhcp->chaddr, dhcprMsgOut.dhcp->hlen,                       &dest, pSendBuf, ntohs (dhcprMsgOut.ip->ip_len), bcastFlag);        }        /* Send complete: clean the transmit buffer before later use. */        bzero (pSendBuf, total + IPHL);    }    return;}/********************************************************************************* read_server_db - read IP addresses to receive relayed packets** This routine extracts the IP address entries hard-coded into usrNetwork.c as * dhcpTargetTbl[] and stores them in a circular linked list. Each of these * address entries must be on a different subnet from the calling server* or relay agent. Each entry in the list will receive a copy of every DHCP or* BOOTP message arriving at the client port.** RETURNS: N/A** ERRNO: N/A** NOMANUAL*/voidread_server_db (int dbsize){    char targetIP[sizeof ("255.255.255.255")];    struct server *srvp = NULL;    struct server *lastp = NULL;    int loop;    /* Read IP addresses of target servers or relay agents. */    for (loop = 0; (loop < dbsize) && (pDhcpRelayTargetTbl[loop].pAddress); loop++) {        sprintf (targetIP, "%s", pDhcpRelayTargetTbl[loop].pAddress);        srvp = (struct server *) calloc (1, sizeof (struct server));        if (srvp == NULL) {#ifdef DHCPR_DEBUG            logMsg ("Memory allocation error reading relay target database.\n", 0, 0, 0, 0, 0, 0);#endif            break;        }        srvp->ip.s_addr = inet_addr (targetIP);        if (srvp->ip.s_addr == -1) {#ifdef DHCPR_DEBUG            logMsg ("Conversion error reading relay target database.\n", 0, 0, 0, 0, 0, 0);#endif            free (srvp);            continue;        }        dhcpNumTargets++;        srvp->next = pDhcpTargetList;        if (pDhcpTargetList == NULL)            lastp = srvp;        pDhcpTargetList = srvp;    }    if (lastp == NULL)          /* No target DHCP servers. */        return;    /* Create circular list of DHCP server addresses. */    lastp->next = pDhcpTargetList;#ifdef DHCPR_DEBUG    logMsg ("read %d entries from relay target database", dhcpNumTargets, 0, 0, 0, 0, 0);#endif    return;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产盗摄精品一区二区三区在线| 欧美一卡2卡3卡4卡| 在线观看日韩毛片| 欧美成人video| 依依成人综合视频| 国产一区在线观看视频| 欧美日韩一区中文字幕| 国产精品久久久久桃色tv| 全部av―极品视觉盛宴亚洲| 色天使久久综合网天天| 久久久久久久av麻豆果冻| 天天综合色天天| 一本一道久久a久久精品 | 久久国产夜色精品鲁鲁99| 在线观看网站黄不卡| 国产精品美女久久久久av爽李琼| 看电视剧不卡顿的网站| 欧美日韩你懂得| 亚洲最大的成人av| 91视频精品在这里| 国产精品成人一区二区三区夜夜夜| 国模冰冰炮一区二区| 日韩欧美亚洲国产精品字幕久久久| 亚洲国产精品久久久男人的天堂| 色综合激情五月| 自拍av一区二区三区| 99国产精品久久久久久久久久| 国产亚洲精久久久久久| 国产一本一道久久香蕉| 亚洲精品一区在线观看| 久88久久88久久久| 日韩精品中午字幕| 久草这里只有精品视频| www国产成人免费观看视频 深夜成人网| 日韩高清不卡一区二区| 精品视频999| 午夜a成v人精品| 日韩一区二区影院| 久久99在线观看| 国产精品午夜在线| 91年精品国产| 亚洲国产欧美在线| 在线成人免费观看| 极品少妇一区二区| 中文在线一区二区| 欧美伊人久久久久久久久影院 | 国产成人aaa| 国产精品另类一区| 日本久久一区二区三区| 偷拍与自拍一区| 欧美成人一区二区三区片免费 | 日本不卡视频在线| 久久久综合视频| av成人免费在线| 亚洲在线观看免费| 欧美电影免费观看高清完整版| 极品美女销魂一区二区三区 | 色婷婷综合久久久久中文一区二区| 亚洲精品第一国产综合野| 91精品国产综合久久精品app| 国产在线视视频有精品| 亚洲欧洲在线观看av| 欧美久久久久中文字幕| 国产乱码精品一区二区三区av| 日韩一区欧美小说| 精品精品国产高清一毛片一天堂| 成人国产视频在线观看| 亚洲成av人影院| 久久精品一区四区| 精品视频一区三区九区| 高潮精品一区videoshd| 日韩va欧美va亚洲va久久| 国产精品久久夜| 日韩精品在线看片z| 色狠狠av一区二区三区| 国产一区二区调教| 亚洲成av人片一区二区| 国产精品久久午夜夜伦鲁鲁| 欧美欧美欧美欧美| 99久久久免费精品国产一区二区| 麻豆国产精品777777在线| 亚洲精品视频一区二区| 久久午夜电影网| 4438亚洲最大| 在线免费不卡视频| 94-欧美-setu| 国产成人亚洲综合色影视| 婷婷中文字幕综合| 亚洲狠狠丁香婷婷综合久久久| 久久精品视频一区二区| 91精品国产乱码久久蜜臀| 91色视频在线| www.欧美日韩国产在线| 国内精品久久久久影院色| 日韩电影网1区2区| 一区二区三区视频在线观看| 国产精品人妖ts系列视频| 欧美大片免费久久精品三p| 欧美日本一区二区| 欧美日韩中文字幕一区| 色av成人天堂桃色av| av电影在线观看一区| 不卡的av网站| 成人免费毛片嘿嘿连载视频| 国产黄色91视频| 国产福利视频一区二区三区| 国产尤物一区二区在线| 国产综合色产在线精品| 九九热在线视频观看这里只有精品| 亚洲一区二区三区自拍| 亚洲在线成人精品| 亚洲综合在线第一页| 日韩美女视频一区| 亚洲丝袜自拍清纯另类| 亚洲区小说区图片区qvod| 国产精品成人一区二区艾草| 日韩美女精品在线| 亚洲蜜桃精久久久久久久| 最新高清无码专区| 亚洲综合成人在线视频| 亚洲午夜激情网站| 性做久久久久久免费观看欧美| 亚洲二区在线观看| 亚洲国产日韩在线一区模特| 香蕉久久夜色精品国产使用方法| 亚洲第四色夜色| 日本成人在线看| 久草这里只有精品视频| 成人午夜看片网址| 一本久久精品一区二区| 欧美日韩激情在线| 日韩欧美亚洲另类制服综合在线| 精品国精品自拍自在线| 中文字幕精品一区| 亚洲乱码日产精品bd| 亚洲国产裸拍裸体视频在线观看乱了 | 欧美剧情电影在线观看完整版免费励志电影 | 91浏览器打开| 欧美日韩一区二区三区四区五区| 欧美亚洲一区二区在线| 56国语精品自产拍在线观看| 精品免费国产二区三区| 中文字幕欧美日韩一区| 亚洲精品国产成人久久av盗摄 | 久久新电视剧免费观看| 亚洲欧美偷拍卡通变态| 亚洲成国产人片在线观看| 国产一区二区视频在线| 在线观看视频一区| www激情久久| 亚洲国产精品嫩草影院| 激情欧美一区二区三区在线观看| 99久久久国产精品| 日韩一区二区三区av| 国产精品国产三级国产aⅴ原创 | 日韩欧美在线影院| 国产精品久久久久7777按摩| 调教+趴+乳夹+国产+精品| 成人丝袜视频网| 91精品欧美综合在线观看最新 | 无码av免费一区二区三区试看| 国产在线视频一区二区| 欧美伊人久久大香线蕉综合69 | 久久99久久精品| 色老汉一区二区三区| 久久色在线视频| 日韩二区三区四区| 在线一区二区视频| 久久精品人人做| 天堂蜜桃一区二区三区| 色综合天天综合给合国产| 精品国产第一区二区三区观看体验| 一区二区三区日韩欧美精品| 国产激情91久久精品导航 | 欧美日本一区二区三区四区| 国产精品久久久久久福利一牛影视| 免费在线观看视频一区| 91麻豆精品国产91久久久| 国产精品美日韩| 国产在线一区观看| 日韩丝袜情趣美女图片| 无吗不卡中文字幕| 欧美做爰猛烈大尺度电影无法无天| 欧美激情在线看| 国产精品一线二线三线精华| 日韩欧美国产三级| 奇米色一区二区| 51精品国自产在线| 日本少妇一区二区| 欧美肥妇bbw| 美美哒免费高清在线观看视频一区二区 | 蜜桃av噜噜一区| 3751色影院一区二区三区| 午夜成人在线视频| 欧美美女直播网站| 日韩福利电影在线| 日韩欧美一级精品久久| 午夜电影网一区| 日韩欧美国产wwwww| 久久99精品国产.久久久久久|