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

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

?? dhcpslib.c

?? vxworks的完整的源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
INTERNALThis library provides a wrapper for the WIDE project DHCP code found in thedirectory .../target/src/dhcp, which contains all the messageprocessing functions.  This module uses the Berkeley Packet Filter servicesto intercept incoming DHCP messages and signals their arrival to the WIDEproject code using a shared semaphore.INCLUDE FILES: dhcpsLib.hSEE ALSO: RFC 1541, RFC 1533*//* includes */#include "vxWorks.h"#include "dhcp/copyright_dhcp.h"#include "stdio.h"#include "stdlib.h"#include "netinet/if_ether.h"#include "netinet/in.h"#include "netinet/ip.h"#include "netinet/udp.h"#include "sys/ioctl.h"#include "inetLib.h"#include "end.h"#include "ipProto.h"#include "ioLib.h"             /* close() declaration. */#include "logLib.h"#include "rngLib.h"#include "semLib.h"#include "sockLib.h"#include "taskLib.h"#include "muxLib.h"#include "dhcp/dhcp.h"#include "dhcp/common.h"#include "dhcp/hash.h"#include "dhcp/common_subr.h"#include "dhcpsLib.h"#include "bpfDrv.h"/* defines */#define _DHCPS_MAX_DEVNAME 26 	/* "/bpf/dhcps" + max unit number + vs num *//* globals for both the regular and virtual stacks */#ifndef VIRTUAL_STACK/* globals */DHCPS_RELAY_DESC *      pDhcpsRelaySourceTbl;DHCPS_LEASE_DESC *	pDhcpsLeasePool;long    dhcps_dflt_lease; /* Default for default lease length */long 	dhcps_max_lease;  /* Default maximum lease length */SEM_ID  dhcpsMutexSem;             /* Synchronization for lease entry adds. */FUNCPTR dhcpsLeaseHookRtn = NULL;  /* Accesses storage for lease bindings. */FUNCPTR dhcpsAddressHookRtn = NULL; /* Preserves additional address entries. */int dhcpsMaxSize; 	/* Transmit buffer size & largest supported message. */int dhcpsBufSize; 	/* Size of buffer for BPF devices */IMPORT struct iovec sbufvec[2];            /* send buffer */IMPORT struct msg dhcpsMsgOut;IMPORT struct hash_member *reslist;IMPORT struct hash_member *bindlist;IMPORT struct hash_tbl nmhashtable;IMPORT struct hash_tbl iphashtable;IMPORT struct hash_tbl cidhashtable;IMPORT struct hash_tbl relayhashtable;IMPORT struct hash_tbl paramhashtable;IMPORT char *dhcpsSendBuf;IMPORT char *dhcpsOverflowBuf;IMPORT u_short dhcps_port;IMPORT u_short dhcpc_port;/* locals */struct if_info *dhcpsIntfaceList = NULL;LOCAL BOOL dhcpsInitialized = FALSE;/* Berkeley Packet Filter instructions for catching DHCP messages. */LOCAL struct bpf_insn dhcpfilter[] = DHCPS_FILTER_DEFINE;LOCAL struct bpf_program dhcpread = {    sizeof (dhcpfilter) / sizeof (struct bpf_insn),    dhcpfilter    };#else#include "netinet/vsLib.h"#include "netinet/vsDhcps.h"#endif  /* VIRTUAL_STACK *//* forward declarations */LOCAL STATUS alloc_sbuf (int);void dhcpsCleanup (int);void dhcpsFreeResource (struct dhcp_resource *);IMPORT int resnmcmp();IMPORT int resipcmp();IMPORT int eval_symbol (void *, void *);IMPORT int open_if();IMPORT STATUS read_addrpool_file (void);IMPORT void read_server_db (int);IMPORT int process_entry (struct dhcp_resource *, DHCPS_ENTRY_DESC *);IMPORT void set_default (struct dhcp_resource *);/********************************************************************************* dhcpsInit - set up the DHCP server parameters and data structures** This routine creates the necessary data structures, builds the* server address pool, retrieves any lease or address information from * permanent storage through the user-provided hooks, and initializes the * network interfaces for monitoring.  It is called at system startup if * INCLUDE_DHCPS is defined at the time the VxWorks image is built.** The <maxSize> parameter specifies the maximum length supported for any* DHCP message, including the UDP and IP headers and the largest link* level header for all supported devices. The smallest valid value is* 576 bytes, corresponding to the minimum IP datagram a host must accept.* Larger values will allow the server to handle longer DHCP messages.* * RETURNS: OK, or ERROR if could not initialize.**/STATUS dhcpsInit    (    DHCPS_CFG_PARAMS  *pDhcpsCfg  	   /* configuration parameters */    )    {    struct if_info *pIf = NULL;            /* pointer to interface */    struct ifnet *pCIf = NULL;           /* pointer to current interface */    char bpfDevName [_DHCPS_MAX_DEVNAME];  /* "/bpf/dhcps" + max unit number */#ifdef VIRTUAL_STACK    char temp [_DHCPS_MAX_DEVNAME];#endif /* VIRTUAL_STACK */    int bpfDev;    struct ifreq ifreq;    struct sockaddr_in send_addr;    int loop;    int result;    STATUS status;    if (pDhcpsCfg == (DHCPS_CFG_PARAMS  *)NULL)	return (ERROR);#ifdef VIRTUAL_STACK    if (dhcpsVsInit () == ERROR)        return (ERROR);#endif /* VIRTUAL_STACK */    /* It must return error, if it is already initialized */    if (dhcpsInitialized)        return (ERROR);    if (pDhcpsCfg->dhcpMaxMsgSize < DFLTDHCPLEN + UDPHL + IPHL)        return (ERROR);    if (bpfDrv () == ERROR)        return (ERROR);    dhcpsMaxSize = pDhcpsCfg->dhcpMaxMsgSize;    dhcpsBufSize = pDhcpsCfg->dhcpMaxMsgSize + sizeof (struct bpf_hdr);    dhcps_dflt_lease = pDhcpsCfg->dhcpsDfltLease;    dhcps_max_lease = pDhcpsCfg->dhcpsMaxLease;    dhcpsLeaseHookAdd (pDhcpsCfg->pDhcpsLeaseFunc);    dhcpsAddressHookAdd (pDhcpsCfg->pDhcpsAddrFunc);#ifdef VIRTUAL_STACK    sprintf(temp, "/bpf/vs%d_dhcps", myStackNum );    if (bpfDevCreate (temp, pDhcpsCfg->numDev, dhcpsBufSize) == ERROR)#else    if (bpfDevCreate ("/bpf/dhcps", pDhcpsCfg->numDev, dhcpsBufSize) == ERROR)#endif /* VIRTUAL_STACK */        return (ERROR);    dhcpsMutexSem = semBCreate (SEM_Q_FIFO, SEM_FULL);    if (dhcpsMutexSem == NULL)        return (ERROR);    bzero ( (char *)&ifreq, sizeof (ifreq));     srand (taskIdSelf ());    /* Validate the MTU size. */    for (loop = 0; loop < pDhcpsCfg->numDev; loop++)        {	pCIf = ifunit (pDhcpsCfg->pDhcpsIfTbl[loop].ifName);	if (pCIf == NULL)	    return (ERROR);        if (pCIf->if_mtu == 0)    /* No MTU size given: not attached? */            return (ERROR);        if (pCIf->if_mtu < DHCP_MSG_SIZE)            return (ERROR);        }    /*     * Alter the filter program to check for the correct length values and     * use the specified UDP destination port and maximum hop count.     */      /* IP length must at least equal a DHCP message with 4 option bytes. */    dhcpfilter [6].k = (DFLTDHCPLEN - DFLTOPTLEN + 4) + UDPHL + IPHL;    dhcpfilter [14].k = pDhcpsCfg->dhcpSPort;   /* Use actual destination port in test. */       /* UDP length must at least equal a DHCP message with 4 option bytes. */    dhcpfilter [16].k = (DFLTDHCPLEN - DFLTOPTLEN + 4) + UDPHL;    dhcpfilter [18].k = pDhcpsCfg->dhcpMaxHops;   /* Use real maximum hop count. */    /* Store the interface control information and get each BPF device. */    for (loop = 0; loop < pDhcpsCfg->numDev; loop++)        {	pCIf = ifunit (pDhcpsCfg->pDhcpsIfTbl[loop].ifName);        pIf = (struct if_info *)calloc (1, sizeof (struct if_info));        if (pIf == NULL)             {            logMsg ("Memory allocation error.\n", 0, 0, 0, 0, 0, 0);            dhcpsCleanup (1);             return (ERROR);            }        pIf->buf = (char *)memalign (4, dhcpsBufSize);        if (pIf->buf == NULL)            {            logMsg ("Memory allocation error.\n", 0, 0, 0, 0, 0, 0);            dhcpsCleanup (1);             return (ERROR);            }        bzero (pIf->buf, dhcpsBufSize);#ifdef VIRTUAL_STACK        sprintf (bpfDevName, "/bpf/vs%d_dhcps%d", myStackNum, loop);#else        sprintf (bpfDevName, "/bpf/dhcps%d", loop);#endif /* VIRTUAL_STACK */        bpfDev = open (bpfDevName, 0, 0);        if (bpfDev < 0)            {            logMsg ("BPF device creation error.\n", 0, 0, 0, 0, 0, 0);            dhcpsCleanup (1);            return (ERROR);            }        /* Enable immediate mode for reading messages. */        result = 1;        result = ioctl (bpfDev, BIOCIMMEDIATE, (int)&result);        if (result != 0)            {            logMsg ("BPF device creation error.\n", 0, 0, 0, 0, 0, 0);            dhcpsCleanup (1);            return (ERROR);            }        result = ioctl (bpfDev, BIOCSETF, (int)&dhcpread);        if (result != 0)            {            logMsg ("BPF filter assignment error.\n", 0, 0, 0, 0, 0, 0);            dhcpsCleanup (1);            return (ERROR);            }        sprintf (ifreq.ifr_name, "%s", pDhcpsCfg->pDhcpsIfTbl[loop].ifName );        result = ioctl (bpfDev, BIOCSETIF, (int)&ifreq);        if (result != 0)            {            logMsg ("BPF interface attachment error.\n", 0, 0, 0, 0, 0, 0);            dhcpsCleanup (1);            return (ERROR);            }        pIf->next = dhcpsIntfaceList;        dhcpsIntfaceList = pIf;        /*         * Fill in device name and hardware address using the information         * set when the driver attached to the IP network protocol.         */        sprintf (pIf->name, "%s", pCIf->if_name);        pIf->unit = pCIf->if_unit;        pIf->bpfDev = bpfDev;        if (muxDevExists (pCIf->if_name, pCIf->if_unit) == FALSE)            pIf->htype = ETHER;        else            pIf->htype = dhcpConvert (pCIf->if_type);        pIf->hlen = pCIf->if_addrlen;        bcopy ((char *) ((struct arpcom *)pCIf)->ac_enaddr,               (char *)&pIf->haddr, pIf->hlen);         }    pDhcpsLeasePool = pDhcpsCfg->pDhcpsLeaseTbl;    pDhcpsRelaySourceTbl = pDhcpsCfg->pDhcpsRelayTbl;    pDhcpRelayTargetTbl = pDhcpsCfg->pDhcpsTargetTbl;    /* read address pool databasae */    status = read_addrpool_db (pDhcpsCfg->dhcpsLeaseTblSize);    if (status == ERROR)         {        dhcpsCleanup (2);         return (ERROR);        }    status = read_addrpool_file ();  /* retrieve additional address entries */    if (status == ERROR)        {        dhcpsCleanup (2);         return (ERROR);        }    status = read_bind_db ();        /* read binding database */    if (status == ERROR)        {        dhcpsCleanup (3);        return (ERROR);        }    /* read database of relay agents */     if (pDhcpsCfg->dhcpsRelayTblSize != 0)        read_relay_db (pDhcpsCfg->dhcpsRelayTblSize);    /* read database of DHCP servers */    if (pDhcpsCfg->dhcpTargetTblSize != 0)        read_server_db (pDhcpsCfg->dhcpTargetTblSize);    /* Always use default ports for client and server. */    dhcps_port = htons (pDhcpsCfg->dhcpSPort);    dhcpc_port = htons (pDhcpsCfg->dhcpCPort);    /* Create a normal socket for sending messages across networks. */    dhcpsIntfaceList->fd = socket (AF_INET, SOCK_DGRAM, 0);    if (dhcpsIntfaceList->fd < 0)        {        dhcpsCleanup (4);         return (ERROR);        }    /* Read-only socket: disable receives to prevent buffer exhaustion. */    result = 0;    if (setsockopt (dhcpsIntfaceList->fd, SOL_SOCKET, SO_RCVBUF,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丁香婷婷综合五月| 日韩女优电影在线观看| 亚洲品质自拍视频| 色综合久久中文字幕| 综合欧美一区二区三区| 欧美无人高清视频在线观看| 亚洲成人你懂的| 91久久国产综合久久| 亚洲精品日日夜夜| 欧美亚洲国产一区二区三区| 亚洲高清不卡在线| 欧美一区二区三区精品| 国模无码大尺度一区二区三区| 久久在线观看免费| 国产精品一区二区x88av| 久久在线观看免费| 91福利资源站| 国产曰批免费观看久久久| 亚洲欧洲国产日本综合| 欧美手机在线视频| 激情六月婷婷久久| 一区二区三区在线观看国产| 欧美一区二区不卡视频| 久草在线在线精品观看| 国产精品青草综合久久久久99| 成人av网在线| 青青草国产成人99久久| 中国av一区二区三区| 在线电影院国产精品| 国产成人高清视频| 亚洲小说春色综合另类电影| 日韩女优视频免费观看| 91蜜桃网址入口| 精品一区二区三区视频| 亚洲欧美国产毛片在线| 精品对白一区国产伦| 99久久99久久精品国产片果冻| 日本最新不卡在线| 亚洲精品国产一区二区三区四区在线| 欧美高清你懂得| 91丝袜美女网| 蜜桃在线一区二区三区| 亚洲欧美一区二区视频| 欧美tickle裸体挠脚心vk| 欧美午夜一区二区| 成人伦理片在线| 美女国产一区二区三区| 亚洲图片欧美视频| 中文字幕一区在线观看视频| 精品盗摄一区二区三区| 一本色道久久综合精品竹菊| 激情六月婷婷久久| 男女视频一区二区| 婷婷夜色潮精品综合在线| 综合色中文字幕| 国产欧美一区二区精品婷婷| 欧美一卡2卡三卡4卡5免费| 国产成人免费av在线| 美女尤物国产一区| 丝袜亚洲另类欧美综合| 亚洲亚洲人成综合网络| 国产精品久久久久永久免费观看| 精品动漫一区二区三区在线观看| 精品视频在线免费| 色8久久精品久久久久久蜜| 成人免费av资源| 国产一区二区精品在线观看| 蜜臀久久久久久久| 免费欧美在线视频| 日韩成人免费电影| 日欧美一区二区| 午夜精品免费在线观看| 一区二区在线电影| 亚洲日本一区二区三区| 亚洲视频 欧洲视频| 国产精品麻豆一区二区| 国产精品嫩草影院av蜜臀| 久久综合色鬼综合色| 日韩免费在线观看| 制服视频三区第一页精品| 色综合久久中文综合久久97| 色先锋资源久久综合| 91在线国产观看| 一本一道久久a久久精品综合蜜臀| 成人高清视频免费观看| 国产精品66部| 精品一区二区三区欧美| 久久国产福利国产秒拍| 国产剧情一区在线| 成人午夜免费视频| 在线观看一区二区精品视频| 日本久久一区二区| 欧美高清性hdvideosex| 91精品国产品国语在线不卡| 欧美日韩精品欧美日韩精品一综合| 欧美视频你懂的| 日韩午夜精品视频| 久久精品视频免费| 亚洲精品国久久99热| 天天色天天操综合| 美腿丝袜在线亚洲一区| 国产999精品久久久久久| av综合在线播放| 欧美日韩国产123区| 欧美一区二区三区小说| 中文字幕欧美日韩一区| 亚洲色图20p| 男女男精品视频| 99精品久久久久久| 日韩小视频在线观看专区| 国产精品婷婷午夜在线观看| 日韩美女啊v在线免费观看| 亚洲国产成人91porn| 久久9热精品视频| 91在线视频网址| 日韩一级完整毛片| 自拍av一区二区三区| 日日夜夜一区二区| 国产风韵犹存在线视精品| 欧美亚洲国产一卡| 久久蜜臀精品av| 午夜精品国产更新| 国产成人免费视频网站| 欧美性一二三区| 久久这里只有精品视频网| 一区二区三区中文字幕| 男女男精品网站| 成人免费毛片片v| 欧美日本一区二区在线观看| 久久先锋影音av鲁色资源| 亚洲人成精品久久久久| 韩国三级电影一区二区| 91福利区一区二区三区| 国产欧美日韩在线看| 蜜桃av噜噜一区二区三区小说| 波多野结衣一区二区三区| 欧美va在线播放| 亚洲电影一级片| 色婷婷国产精品久久包臀| 欧美精品一区男女天堂| 五月婷婷欧美视频| 91小视频在线| 精品国产乱码久久久久久久久| 亚洲欧洲精品天堂一级| 日本成人在线网站| 色一情一伦一子一伦一区| 国产亚洲精品福利| 图片区小说区国产精品视频| 色综合一区二区三区| 中文字幕高清一区| 国产一区视频导航| 久久综合久久99| 国模少妇一区二区三区| 欧美一级欧美一级在线播放| 一区二区久久久久久| 99r国产精品| 亚洲欧洲成人精品av97| 国产jizzjizz一区二区| 亚洲精品一区二区三区蜜桃下载| 午夜精品久久久久久久99樱桃| 欧美午夜寂寞影院| 亚洲高清不卡在线观看| 色婷婷av一区二区三区大白胸| 日本一区二区三区四区在线视频| 国产一区二区三区在线看麻豆| 337p亚洲精品色噜噜| 亚洲成人免费观看| 欧美日韩高清在线| 欧美bbbbb| 欧美不卡一区二区三区四区| 美女视频免费一区| 日韩精品一区二区三区四区视频 | 日本一区二区三区视频视频| 国产麻豆视频一区二区| 欧美精品一区二| 国产大陆精品国产| 中文字幕精品在线不卡| 99麻豆久久久国产精品免费| 日本一区二区视频在线| 国产激情一区二区三区| 久久一日本道色综合| 粉嫩av一区二区三区在线播放| 中文字幕乱码亚洲精品一区| 91网上在线视频| 午夜欧美在线一二页| 日韩欧美资源站| 国产精品一区二区x88av| 中文字幕在线不卡国产视频| 在线看日本不卡| 免费人成黄页网站在线一区二区| 欧美不卡一区二区| proumb性欧美在线观看| 一区二区三区四区在线免费观看 | 91网站视频在线观看| 一区二区在线观看免费视频播放| 欧美日韩一区二区三区四区五区| 偷偷要91色婷婷| 国产日韩精品视频一区| 99精品在线观看视频| 亚洲一区在线电影|