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

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

?? dhcpslib.c

?? vxworks的完整的源代碼
?? C
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
    if (pTarget->policy_filter.addr2 != NULL)        free (pTarget->policy_filter.addr2);    if (pTarget->static_route.addr1 != NULL)        free (pTarget->static_route.addr1);    if (pTarget->static_route.addr2 != NULL)        free (pTarget->static_route.addr2);    free (pTarget);    return;    }/********************************************************************************* dhcpsLeaseEntryAdd - add another entry to the address pool** This routine allows the user to add new entries to the address pool without* rebuilding the VxWorks image.  The routine requires a unique entry name of up* to eight characters, starting and ending IP addresses, and a colon-separated * list of parameters.  Possible values for the parameters are listed in the * reference entry for dhcpsLib.  The parameters also determine the type of * lease, which the server uses to determine priority when assigning lease * addresses.  For examples of the possible lease types, see the reference * entry for dhcpsLib.** RETURNS: OK if entry read successfully, or ERROR otherwise.** ERRNO: N/A*/STATUS dhcpsLeaseEntryAdd    (    char *	pName, 		/* name of lease entry */    char *	pStartIp, 	/* first IP address to assign */    char * 	pEndIp, 	/* last IP address in assignment range */    char *	pParams 	/* formatted string of lease parameters */    )    {    struct dhcp_resource *pResData = NULL;    DHCPS_ENTRY_DESC	entryData;    struct hash_member *pListElem = NULL;    int result;    char tmp [10];  /* sizeof ("tblc=dlft") for host requirements defaults. */    char entryName [BASE_NAME + 1];   /* User-given name for address range. */    char newName [MAX_NAME + 1];    /* Unique name for each entry in range. */    char newAddress [INET_ADDR_LEN];    struct in_addr nextAddr;    int len;    char *pTmp;    u_long start = 0;    u_long end = 0;    u_long loop;    u_long limit;    /* Ignore bad values for range. */    if (pStartIp != NULL && pEndIp == NULL)        return (ERROR);    if (pStartIp == NULL && pEndIp != NULL)        return (ERROR);    /* If no address specified, just process parameters once. */    if (pStartIp == NULL && pEndIp == NULL)        {        start = 0;        end = 0;        }    else        {        start = inet_addr (pStartIp);        end = inet_addr (pEndIp);        if (start == ERROR || end == ERROR)            return (ERROR);        }    entryData.pName = newName;    entryData.pAddress = newAddress;    entryData.pParams = pParams;    len = strlen (pName);    if (len > BASE_NAME)        {        bcopy (pName, entryName, BASE_NAME);        entryName [BASE_NAME] = '\0';        }    else        {        bcopy (pName, entryName, len);        entryName [len] = '\0';        }    limit = ntohl (end);    for (loop = ntohl (start); loop <= limit; loop++)        {        pResData = (struct dhcp_resource *)calloc (1,                                                 sizeof (struct dhcp_resource));        if (pResData == NULL)            {            return (ERROR);            }        /* Generate a unique name by appending IP address value. */        sprintf (entryData.pName, "%s%lx", entryName, loop);        /* Assign current IP address in range. */        nextAddr.s_addr = htonl (loop);        inet_ntoa_b (nextAddr, entryData.pAddress);        /* Critical section with message processing routines. */         semTake (dhcpsMutexSem, WAIT_FOREVER);         if (process_entry (pResData, &entryData) < 0)            {            semGive (dhcpsMutexSem);            dhcpsFreeResource (pResData);            return (ERROR);            }        /*          * Add Host Requirements defaults to resource entry. Do not add         * to entries containing client-specific or class-specific          * parameters.          */        if (ISCLR (pResData->valid, S_PARAM_ID) &&            ISCLR (pResData->valid, S_CLASS_ID))            {            sprintf (tmp, "%s", "tblc=dflt");            pTmp = tmp;            eval_symbol (&pTmp, pResData);            }        /* Set default values for entry, if not already assigned. */        if (ISSET (pResData->valid, S_IP_ADDR))            set_default (pResData);        /*         * Append entries to lease descriptor list. Exclude entries which         * specify additional client- or class-specific parameters.         */        if (ISCLR (pResData->valid, S_PARAM_ID) &&             ISCLR (pResData->valid, S_CLASS_ID))            {            pListElem = reslist;            while (pListElem->next != NULL)                pListElem = pListElem->next;                pListElem->next =                 (struct hash_member *)calloc (1, sizeof (struct hash_member));            if (pListElem->next == NULL)                {                semGive (dhcpsMutexSem);                dhcpsFreeResource (pResData);                return (ERROR);                }            pListElem = pListElem->next;            pListElem->next = NULL;            pListElem->data = (void *)pResData;            /* Add entryname to appropriate hash table. */            result = hash_ins (&nmhashtable, pResData->entryname,                                strlen (pResData->entryname), resnmcmp,                                pResData->entryname, pResData);            if (result < 0)                {                semGive (dhcpsMutexSem);                return (ERROR);                }            if (ISSET (pResData->valid, S_IP_ADDR))                if (hash_ins (&iphashtable, (char *)&pResData->ip_addr.s_addr,                              sizeof (u_long), resipcmp, &pResData->ip_addr,                               pResData) < 0)                    {                    semGive (dhcpsMutexSem);                    return (ERROR);                    }            }        semGive (dhcpsMutexSem);        }    /* Save entry in permanent storage, if hook is provided. */    if (dhcpsAddressHookRtn != NULL)        (* dhcpsAddressHookRtn) (DHCPS_STORAGE_WRITE, pName,                                 pStartIp, pEndIp, pParams);    return (OK);    }/******************************************************************************** * dhcpsLeaseHookAdd - assign a permanent lease storage hook for the server* * This routine allows the server to access some form of permanent storage* that it can use to store current lease information across restarts.  The * only argument to dhcpsLeaseHookAdd() is a pointer to a storage routine * with the following interface: * .CS*     STATUS dhcpsStorageHook (int op, char *buffer, int datalen);* .CE* The first parameter of the storage routine specifies one of the following * operations: * *     DHCPS_STORAGE_START*     DHCPS_STORAGE_READ*     DHCPS_STORAGE_WRITE*     DHCPS_STORAGE_STOP*     DHCPS_STORAGE_CLEAR* * In response to START, the storage routine should prepare to return data or * overwrite data provided by earlier WRITEs.  For a WRITE the storage routine * must save the contents of the buffer to permanent storage.  For a READ, the * storage routine should copy data previously stored into the provided buffer * as a NULL-terminated string in FIFO order.  For a CLEAR, the storage routine * should discard currently stored data.  After a CLEAR, the READ operation* must return ERROR until additional data is stored.  For a STOP, the storage * routine must handle cleanup.  After a STOP, READ and WRITE operations must* return error until a START is received.  Each of these operations must * return OK if successful, or ERROR otherwise.* * Before the server is initialized, VxWorks automatically calls * dhcpsLeaseHookAdd(), passing in the routine name defined by DHCPS_LEASE_HOOK.* * RETURNS: OK, or ERROR if routine is NULL.* * ERRNO: N/A*/STATUS dhcpsLeaseHookAdd    (    FUNCPTR pCacheHookRtn 	/* routine to store/retrieve lease records */    )    {    if (pCacheHookRtn != NULL)        {        dhcpsLeaseHookRtn = pCacheHookRtn;        return (OK);        }    return (ERROR);    }/********************************************************************************* dhcpsAddressHookAdd - assign a permanent address storage hook for the server** This routine allows the server to access some form of permanent storage* to preserve additional address entries across restarts.  This routine is* not required, but leases using unsaved addresses are not renewed.  The * only argument provided is the name of a function with the following interface:* .CS*     STATUS dhcpsAddressStorageHook (int op,*                                     char *name, char *start, char *end, *                                     char *params);* .CE* The first parameter of this storage routine specifies one of the following * operations: **     DHCPS_STORAGE_START*     DHCPS_STORAGE_READ*     DHCPS_STORAGE_WRITE*     DHCPS_STORAGE_STOP ** In response to a START, the storage routine should prepare to return* data or overwrite data provided by earlier WRITE operations.  For a * WRITE, the storage routine must save the contents of the four buffers * to permanent storage.  Those buffers contain the NULL-terminated * strings received by the dhcpsLeaseEntryAdd() routine.  For a READ, the* storage routine should copy previously stored data (as NULL-terminated * strings) into the provided buffers in the order received by earlier WRITE* operations.  For a STOP, the storage routine should do any necessary cleanup. * After a STOP, the storage routine should return an ERROR for all operations * except START.  However, the STOP operation does not normally occur since* the server only deliberately exits following an unrecoverable error.  This* storage routine must not rely on that operation to handle READ, WRITE, or* new START attempts.* * The storage routine should return OK if successful, ERROR otherwise.** Note that, unlike the lease storage routine, there is no CLEAR operation.** Before the server is initialized, VxWorks calls this routine automatically * passing in the function named in DHCPS_ADDRESS_HOOK.** RETURNS: OK, or ERROR if function pointer is NULL.** ERRNO: N/A*/STATUS dhcpsAddressHookAdd    (    FUNCPTR pCacheHookRtn 	/* routine to store/retrieve lease entries */    )    {    /*      * The hook routine is deliberately assigned before testing for NULL     * so that this routine can be used to delete an existing address hook.     * In that case, the user would just ignore the return value of ERROR.     */    dhcpsAddressHookRtn = pCacheHookRtn;    if (pCacheHookRtn == NULL)        return (ERROR);    return (OK);    }/********************************************************************************* alloc_sbuf - create message transmission buffers** This routine creates two transmission buffers for storing outgoing DHCP* messages.  The first buffer has a fixed size equal to that of a standard * DHCP message as defined in the RFC.  The second buffer contains the* remaining number of bytes needed to send the largest supported message.* That buffer is only used if additional space for DHCP options is needed* and if the requesting client accepts larger DHCP messages.  The two buffers* are stored in a global "buffer vector" structure and are also accessible* through individual global variables.* * RETURNS: N/A* * ERRNO: N/A** NOMANUAL*/LOCAL STATUS alloc_sbuf    (    int 	maxSize 	/* largest supported message size, in bytes */    )    {    char *pSendBuf;    int sbufsize;    /*     * Allocate transmission buffer using aligned memory to provide      * IP header alignment needed by Sun BSP's.      */    sbufsize = IPHL + UDPHL + DFLTDHCPLEN;    pSendBuf = (char *)memalign (4, maxSize);    if (pSendBuf == NULL)        return (-1);    dhcpsSendBuf = pSendBuf;    /* Buffer for default DHCP message. */    bzero (dhcpsSendBuf, sbufsize);    sbufvec[0].iov_len = IPHL + UDPHL + DFLTDHCPLEN;    sbufvec[0].iov_base = dhcpsSendBuf;    dhcpsMsgOut.ip = (struct ip *)dhcpsSendBuf;    dhcpsMsgOut.udp = (struct udphdr *)&dhcpsSendBuf [IPHL];    dhcpsMsgOut.dhcp = (struct dhcp *)&dhcpsSendBuf [IPHL + UDPHL];    dhcpsOverflowBuf = &pSendBuf [sbufsize];  /* Buffer for larger messages */    sbufvec[1].iov_base = dhcpsOverflowBuf;    sbufvec[1].iov_len = 0;   /* Contains length of bytes in use, not size. */    return (OK);    }

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产福利| 久久99精品国产.久久久久久| 丝袜国产日韩另类美女| 国产高清精品久久久久| 欧美日韩久久久久久| 国产精品无遮挡| 国产主播一区二区三区| 欧美精品视频www在线观看| 亚洲日本在线天堂| 成人av网站大全| 国产精品国产a| 成人免费av资源| 中文字幕免费不卡| 成人免费观看视频| 国产精品乱码人人做人人爱| 国产成人免费视| 国产欧美精品国产国产专区| 国产露脸91国语对白| 精品福利一区二区三区免费视频| 蜜臀av性久久久久av蜜臀妖精| 日韩一区二区三区四区 | 免费欧美在线视频| 制服丝袜亚洲精品中文字幕| 蜜桃视频免费观看一区| 国产蜜臀av在线一区二区三区| 色呦呦国产精品| 久久精品国产99久久6| 国产精品久久久久久久岛一牛影视| 色成年激情久久综合| 日韩成人免费电影| 精品少妇一区二区| 成人手机电影网| 日本视频免费一区| 国产亚洲精品免费| 精品理论电影在线观看| 91麻豆swag| 国产伦精品一区二区三区视频青涩| 亚洲色图制服诱惑| 欧洲生活片亚洲生活在线观看| 亚洲国产成人porn| 国产精品久久久久三级| 欧美理论电影在线| 91蝌蚪porny九色| 国产一区二区三区黄视频| 亚洲国产aⅴ天堂久久| 中文字幕av一区二区三区免费看| 欧美日韩精品欧美日韩精品一综合| 国产一区在线不卡| 日韩vs国产vs欧美| 一区二区在线观看视频在线观看| 国产日韩欧美电影| 久久免费视频一区| 欧美一区二区三区在| 一本大道久久精品懂色aⅴ| 久草精品在线观看| 日韩精品免费专区| 五月天一区二区三区| 午夜不卡在线视频| 亚洲444eee在线观看| 亚洲欧洲一区二区在线播放| 久久这里只有精品首页| 欧美一区二区三区四区在线观看 | 婷婷开心激情综合| 亚洲视频狠狠干| 欧美国产综合色视频| 久久精品日韩一区二区三区| 欧美精品一区二区不卡| 日韩免费高清视频| 欧美α欧美αv大片| 制服丝袜亚洲网站| 91精品国产入口| 国产欧美日本一区视频| 伊人一区二区三区| 亚洲成a人片综合在线| 蜜桃视频第一区免费观看| 丰满岳乱妇一区二区三区| 欧美三区在线视频| 久久精品一区蜜桃臀影院| 一区二区三区精品| 国产精品自拍网站| 欧美日韩精品一区二区天天拍小说| 欧美成人乱码一区二区三区| 亚洲女性喷水在线观看一区| 久久国产福利国产秒拍| 色呦呦网站一区| 中文字幕av资源一区| 国产午夜精品一区二区| 欧美一级在线视频| 国产亚洲女人久久久久毛片| 国产三级一区二区| 日韩精品一二三区| 成人一区在线看| 一本到不卡免费一区二区| 日韩三级伦理片妻子的秘密按摩| 久久亚洲一区二区三区四区| 亚洲影院在线观看| av一区二区三区| 久久毛片高清国产| 五月天激情综合| 色综合久久88色综合天天6| 欧美精品一区二区久久婷婷 | 日韩午夜激情免费电影| 亚洲品质自拍视频网站| 久久99热这里只有精品| 欧美性xxxxxxxx| 亚洲欧洲另类国产综合| 国产一区二区精品在线观看| 一本久道久久综合中文字幕| 久久综合九色综合97婷婷女人 | 国产99久久久国产精品免费看 | 色综合av在线| 欧美刺激午夜性久久久久久久| 亚洲一本大道在线| 99综合电影在线视频| 国产亚洲人成网站| 国产一区不卡精品| 欧美另类高清zo欧美| 亚洲欧美视频一区| 91伊人久久大香线蕉| 国产精品婷婷午夜在线观看| 狠狠色2019综合网| 日韩精品自拍偷拍| 国产精品一区二区x88av| 精品欧美一区二区三区精品久久 | 亚洲一区二区三区中文字幕在线| 国产精品一区二区在线观看不卡| 欧美激情一区二区三区不卡| 99久久婷婷国产综合精品 | 蜜桃在线一区二区三区| jlzzjlzz欧美大全| 国产精品中文字幕欧美| 日韩一级二级三级精品视频| 国产丶欧美丶日本不卡视频| 一区二区三区欧美激情| 久久一日本道色综合| 色女孩综合影院| 亚洲制服丝袜av| 欧美精品一区二区三区四区| 国产成人在线免费| 亚洲最大成人综合| 欧美久久婷婷综合色| 国产在线播放一区| 亚洲人成7777| 精品国产成人系列| 色综合天天综合色综合av| 蜜臀av性久久久久蜜臀aⅴ四虎| 日本高清免费不卡视频| 国产另类ts人妖一区二区| 丝袜美腿亚洲综合| 亚洲国产日韩a在线播放| 国产精品美女久久久久久2018| 26uuu久久综合| www激情久久| 久久综合色婷婷| 2017欧美狠狠色| 久久久美女艺术照精彩视频福利播放| 51精品久久久久久久蜜臀| 色又黄又爽网站www久久| 国产91对白在线观看九色| 狠狠色丁香九九婷婷综合五月| 亚洲成人资源网| 亚洲永久免费av| 亚洲乱码一区二区三区在线观看| 久久免费偷拍视频| 久久免费精品国产久精品久久久久| 欧美一区二区私人影院日本| 欧美视频中文一区二区三区在线观看| 波多野结衣中文一区| 成人做爰69片免费看网站| 国产高清视频一区| 成人一区在线看| eeuss鲁片一区二区三区在线看| 懂色一区二区三区免费观看| 成人性视频免费网站| 成人av免费在线观看| 91原创在线视频| 91国产精品成人| 日韩一级成人av| 久久精品夜夜夜夜久久| 亚洲欧洲另类国产综合| 一级女性全黄久久生活片免费| 亚洲一区二区成人在线观看| 亚洲国产日韩av| 美女视频黄 久久| 成人禁用看黄a在线| 在线观看亚洲a| 欧美一个色资源| 中文字幕精品一区二区三区精品| 国产精品三级在线观看| 亚洲麻豆国产自偷在线| 免费成人深夜小野草| 成人综合婷婷国产精品久久蜜臀| 色综合久久综合网97色综合| 欧美性受xxxx黑人xyx性爽| 欧美大片顶级少妇| 一区二区三区91| 国产在线精品一区二区不卡了| 99riav久久精品riav| 欧美一区二区三区四区视频 | 欧美成人综合网站|