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

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

?? net_ascii.c

?? ucos的tcpip協(xié)議占
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
*                       characters are trapped as invalid, including any leading or trailing characters.
*
*                   (b) (1) Include EXACTLY four decimal values ...
*                       (2) ... separated ...
*                       (3) ... by  EXACTLY three dot characters.
*
*                   (c) Ensure that each decimal value does NOT exceed the maximum octet value (i.e. 255).
*
*                   (d) Ensure that each decimal value's number of decimal digits, including leading zeros,
*                       does NOT exceed the maximum number of digits, NET_ASCII_CHAR_MAX_OCTET_ADDR_IP (3).
*********************************************************************************************************
*/
/*$PAGE*/
NET_IP_ADDR  NetASCII_Str_to_IP (CPU_CHAR  *paddr_ip_ascii,
                                 NET_ERR   *perr)
{
    CPU_CHAR     *pchar_cur;
    CPU_CHAR     *pchar_prev;
    NET_IP_ADDR   addr_ip;
    CPU_INT16U    addr_octet_val;
    CPU_INT32U    addr_nbr_octet;
    CPU_INT08U    addr_nbr_octet_dig;


                                                                        /* --------------- VALIDATE PTR --------------- */
    if (paddr_ip_ascii == (CPU_CHAR *)0) {
       *perr =  NET_ASCII_ERR_NULL_PTR;
        return (NET_IP_ADDR_NONE);
    }



    pchar_cur          = (CPU_CHAR *)paddr_ip_ascii;
    pchar_prev         = (CPU_CHAR *)0;
    addr_ip            =  NET_IP_ADDR_NONE;
    addr_octet_val     =  0x0000;
    addr_nbr_octet     =  0;
    addr_nbr_octet_dig =  0;

    while ((pchar_cur != (CPU_CHAR *)0) &&                              /* Parse ALL non-NULL chars in ASCII str.       */
          (*pchar_cur != (CPU_CHAR  )0)) {

        switch (*pchar_cur) {
            case '0':
            case '1':
            case '2':
            case '3':
            case '4':
            case '5':
            case '6':
            case '7':
            case '8':
            case '9':
                 addr_nbr_octet_dig++;                                  /* If nbr digs > max (see Note #2d), ...        */
                 if (addr_nbr_octet_dig > NET_ASCII_CHAR_MAX_OCTET_ADDR_IP) {
                    *perr =  NET_ASCII_ERR_INVALID_CHAR_LEN;            /* ... rtn err.                                 */
                     return (NET_IP_ADDR_NONE);
                 }

                                                                        /* Convert & merge ASCII char into decimal val. */
                 addr_octet_val *= (CPU_INT16U)10;
                 addr_octet_val += (CPU_INT16U)(*pchar_cur - '0');

                 if (addr_octet_val > NET_ASCII_VAL_MAX_OCTET_ADDR_IP) {/* If octet val > max (see Note #2c), ...       */
                    *perr =  NET_ASCII_ERR_INVALID_CHAR_VAL;            /* ... rtn err.                                 */
                     return (NET_IP_ADDR_NONE);
                 }
                 break;

 
            case '.':
                 if (pchar_prev == (CPU_CHAR *)0) {                     /* If NO prev char     (see Note #2b2), ...     */
                    *perr =  NET_ASCII_ERR_INVALID_CHAR_SEQ;            /* ... rtn err.                                 */
                     return (NET_IP_ADDR_NONE);
                 }

                 if (*pchar_prev == (CPU_CHAR)'.') {                    /* If prev char a dot  (see Note #2b2), ...     */
                     *perr =  NET_ASCII_ERR_INVALID_CHAR_SEQ;           /* ... rtn err.                                 */
                      return (NET_IP_ADDR_NONE);
                 }

                 addr_nbr_octet++;
                 if (addr_nbr_octet >= NET_ASCII_NBR_OCTET_ADDR_IP) {   /* If nbr octets > max (see Note #2b1), ...     */
                    *perr =  NET_ASCII_ERR_INVALID_LEN;                 /* ... rtn err.                                 */
                     return (NET_IP_ADDR_NONE);
                 }

                                                                        /* Merge decimal octet val into IP addr.        */
                 addr_ip            <<=  DEF_OCTET_NBR_BITS;
                 addr_ip             += (CPU_INT08U)addr_octet_val;
                 addr_octet_val       =  0x0000;
                 addr_nbr_octet_dig   =  0;
                 break;


            default:                                                    /* See Note #2a.                                */
                *perr =  NET_ASCII_ERR_INVALID_CHAR;
                 return (NET_IP_ADDR_NONE);                             /* Prevent 'break NOT reachable' warning.       */
        }

        pchar_prev = pchar_cur;
        pchar_cur++;    
    }

/*$PAGE*/
    if (pchar_cur == (CPU_CHAR *)0) {                                   /* If ANY NULL ptr in ASCII str, ..             */
       *perr =  NET_ASCII_ERR_NULL_PTR;                                 /* .. rtn err.                                  */
        return (NET_IP_ADDR_NONE);
    }

    if (*pchar_prev == (CPU_CHAR)'.') {                                 /* If last char a dot (see Note #2b2), ..       */
        *perr =  NET_ASCII_ERR_INVALID_CHAR_SEQ;                        /* .. rtn err.                                  */
         return (NET_IP_ADDR_NONE);
    }

    addr_nbr_octet++;
    if (addr_nbr_octet != NET_ASCII_NBR_OCTET_ADDR_IP) {                /* If != nbr IP addr octets (see Note #2b1), .. */
       *perr =  NET_ASCII_ERR_INVALID_LEN;                              /* .. rtn err.                                  */
        return (NET_IP_ADDR_NONE);
    }

                                                                        /* Merge decimal octet val into final IP addr.  */
    addr_ip <<=  DEF_OCTET_NBR_BITS;
    addr_ip  += (CPU_INT08U)addr_octet_val;

   *perr      =  NET_ASCII_ERR_NONE;

    return (addr_ip);
}


/*$PAGE*/
/*
*********************************************************************************************************
*                                        NetASCII_IP_to_Str()
*
* Description : Convert a network protocol IPv4 address in host-order into a dotted-decimal notation ASCII
*                   string.
*
* Argument(s) : addr_ip             IPv4 address.
*
*               paddr_ip_ascii      Pointer to an ASCII character array that will receive the return ASCII 
*                                       string from this function (see Note #2).
*
*               lead_zeros          Prepend leading zeros option  (see Note #3) :
*
*                                       DEF_NO      Do NOT prepend leading zeros to each decimal octet value.
*                                       DEF_YES            Prepend leading zeros to each decimal octet value.
*
*               perr        Pointer to variable that will receive the return error code from this function :
*
*                               NET_ASCII_ERR_NONE                  ASCII string successfully formatted.
*                               NET_ASCII_ERR_NULL_PTR              Argument 'paddr_ip_ascii' passed a
*                                                                       NULL pointer.
*                               NET_ASCII_ERR_INVALID_CHAR_LEN      Invalid ASCII character length.
*
* Return(s)   : none.
*
* Caller(s)   : Application.
*
*               This function is a network protocol suite application interface (API) function & MAY be 
*               called by application function(s).
*
* Note(s)     : (1) RFC #1983 states that "dotted decimal notation ... refers [to] IP addresses of the
*                   form A.B.C.D; where each letter represents, in decimal, one byte of a four byte IP
*                   address".
*
*                   In other words, the dotted-decimal notation separates four decimal octet values by
*                   the dot, or period, character ('.').  Each decimal value represents one octet of 
*                   the IP address starting with the most significant octet in network order.
*
*                       IP Address Examples :
*
*                              DOTTED DECIMAL NOTATION     HEXADECIMAL EQUIVALENT
*
*                                   127.0.0.1           =       0x7F000001
*                                   192.168.1.64        =       0xC0A80140
*                                   255.255.255.0       =       0xFFFFFF00
*                                   ---         -                 --    --
*                                    ^          ^                 ^      ^
*                                    |          |                 |      |
*                                   MSO        LSO               MSO    LSO
*
*                           where
*
*                               MSO             Most  Significant Octet in Dotted Decimal IP Address
*                               LSO             Least Significant Octet in Dotted Decimal IP Address
*
*
*               (2) The size of the ASCII character array that will receive the return ASCII string MUST
*                   be greater than or equal to NET_ASCII_LEN_MAX_ADDR_IP.
*
*               (3) (a) Leading zeros option prepends leading '0's prior to the first non-zero digit
*                       in each decimal octet value.  The number of leading zeros is such that the 
*                       decimal octet's number of decimal digits is equal to the maximum number of 
*                       digits, NET_ASCII_CHAR_MAX_OCTET_ADDR_IP (3).
*
*                   (b) (1) If leading zeros option DISABLED              ...
*                       (2) ... & the decimal value of the octet is zero; ...
*                       (3) ... then one digit of '0' value is formatted.
*
*                           This is NOT a leading zero; but a single decimal digit of '0' value.
*********************************************************************************************************
*/
/*$PAGE*/
void  NetASCII_IP_to_Str (NET_IP_ADDR   addr_ip,
                          CPU_CHAR     *paddr_ip_ascii,
                          CPU_BOOLEAN   lead_zeros,
                          NET_ERR      *perr)
{
    CPU_CHAR    *pchar;
    CPU_INT08U   base_10_val_start;
    CPU_INT08U   base_10_val;
    CPU_INT08U   addr_octet_nbr_shifts;
    CPU_INT08U   addr_octet_val;
    CPU_INT08U   addr_octet_dig_nbr;
    CPU_INT08U   addr_octet_dig_val;
    CPU_INT16U   i;


                                                                        /* --------------- VALIDATE PTR --------------- */
    if (paddr_ip_ascii == (CPU_CHAR *)0) {
       *perr = NET_ASCII_ERR_NULL_PTR;
        return;
    }
                                                                        /* ------------ VALIDATE NBR CHAR ------------- */
#if ((NET_ASCII_CHAR_MAX_OCTET_ADDR_IP < NET_ASCII_CHAR_MIN_OCTET   ) || \
     (NET_ASCII_CHAR_MAX_OCTET_ADDR_IP > NET_ASCII_CHAR_MAX_OCTET_08))
   *paddr_ip_ascii = (CPU_CHAR)0;
   *perr           =  NET_ASCII_ERR_INVALID_CHAR_LEN;
    return;
#endif


    pchar = paddr_ip_ascii;


    base_10_val_start = 1;    
    for (i = 1; i < NET_ASCII_CHAR_MAX_OCTET_ADDR_IP; i++) {            /* Calc starting dig val.                       */
        base_10_val_start *= 10;
    }


    for (i = NET_ASCII_NBR_OCTET_ADDR_IP; i > 0; i--) {                 /* Parse ALL addr octets.                       */
                                                                        /* Calc  cur addr octet val.                    */
        addr_octet_nbr_shifts = (i - 1) * DEF_OCTET_NBR_BITS;
        addr_octet_val        = (CPU_INT08U)((addr_ip >> addr_octet_nbr_shifts) & DEF_OCTET_MASK);

        base_10_val           =  base_10_val_start;
        while (base_10_val > 0) {                                       /* Parse ALL octet digs.                        */
            addr_octet_dig_nbr = addr_octet_val / base_10_val;

            if ((addr_octet_dig_nbr >  0) ||                            /* If octet dig val > 0,                     .. */
                (base_10_val        == 1) ||                            /* .. OR on least-significant octet dig,     .. */
                (lead_zeros == DEF_YES)) {                              /* .. OR lead zeros opt ENABLED (see Note #3),  */
                                                                        /* .. calc & insert octet val ASCII dig.        */
                 addr_octet_dig_val = (CPU_INT08U)(addr_octet_dig_nbr % 10 );
                *pchar++            = (CPU_CHAR  )(addr_octet_dig_val + '0');
            }

            base_10_val /= 10;                                          /* Shift to next least-significant octet dig.   */
        }

        if (i > 1) {                                                    /* If NOT on last octet, append a dot char.     */
           *pchar++ = '.';
        }
    }

   *pchar = (CPU_CHAR)0;                                                /* Append NULL char.                            */

   *perr  =  NET_ASCII_ERR_NONE;
}
	 	 			 		    	 				 	    	 	 	 		    	     	 	 	 		 	  	  	  	     	 	      	   		 	 	 	   		   			 	     			  			 		   	 			       	  	 		  	 	  	 		 		   		  	  			 	  	 		 	 	 			 	 		 		 	 		 	   		 	 	 	   		     			  			 		  	 		 	  			 	 	 	 	  		  	   		   	   	 				 		 			 			  			 		   		 		 				 		 	    		   	  		 

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99日本精品| 亚洲黄色性网站| 免费在线观看精品| 欧美精品v国产精品v日韩精品 | 欧美一区二区三区视频| 五月婷婷综合激情| 欧美精品三级在线观看| 日本最新不卡在线| 精品国产乱码久久久久久夜甘婷婷 | 91美女在线观看| 一个色在线综合| 欧美日韩专区在线| 日韩电影在线观看网站| 欧美成人vps| 国产99精品在线观看| 亚洲视频在线观看三级| 在线观看网站黄不卡| 天天影视色香欲综合网老头| 日韩视频一区二区三区| 国产成人av一区二区三区在线观看| 国产精品妹子av| 欧美色精品天天在线观看视频| 日韩不卡免费视频| 欧美精品一区二区久久婷婷| 成人免费视频视频在线观看免费| 亚洲精品乱码久久久久久黑人| 欧美亚洲国产一区在线观看网站 | 亚洲激情欧美激情| 欧美一区午夜精品| 国产精品一区二区在线看| 亚洲精品综合在线| 日韩一区二区免费电影| 成人高清av在线| 亚洲va国产va欧美va观看| 欧美tk—视频vk| av在线不卡免费看| 日本美女一区二区| 国产精品国产三级国产普通话蜜臀| 在线免费观看日本一区| 久久99这里只有精品| 日韩一区有码在线| 欧美一二三四在线| 91国产视频在线观看| 麻豆91免费观看| 国产精品天干天干在观线| 欧美日韩高清不卡| av一区二区久久| 水野朝阳av一区二区三区| 国产精品久线观看视频| 91精品国产美女浴室洗澡无遮挡| 成人精品免费网站| 麻豆精品国产91久久久久久| 国产精品久久久久久久岛一牛影视| 欧美群妇大交群中文字幕| 成人精品在线视频观看| 蜜臀久久99精品久久久久宅男| 中文字幕一区二区三区乱码在线| 欧美α欧美αv大片| 欧美日韩色综合| 成人av资源在线| 久久精品av麻豆的观看方式| 亚洲精品综合在线| 国产精品人人做人人爽人人添| 91精品国产一区二区三区香蕉| 91亚洲精品乱码久久久久久蜜桃| 国内精品视频666| 日本网站在线观看一区二区三区| 亚洲黄色小说网站| 国产精品久久三| 久久久精品欧美丰满| 欧美大片日本大片免费观看| 欧美日韩成人高清| 欧美体内she精高潮| 91在线云播放| 成人福利视频在线看| 国产麻豆精品95视频| 久久精品国产精品青草| 爽好久久久欧美精品| 亚洲第一搞黄网站| 一区二区三区免费| 亚洲综合在线五月| 日韩毛片视频在线看| 国产精品乱码人人做人人爱 | 国产精品对白交换视频| 久久久一区二区三区| 精品成人私密视频| 久久婷婷国产综合国色天香| 91精品国产乱码| 欧美一级高清大全免费观看| 777a∨成人精品桃花网| 欧美日韩国产经典色站一区二区三区| 一本到三区不卡视频| 日本精品视频一区二区三区| 色综合天天狠狠| 色www精品视频在线观看| 91丨九色丨国产丨porny| 亚洲最大成人网4388xx| 日韩一区二区在线看| 欧美日韩一区二区三区不卡| 在线精品亚洲一区二区不卡| 91福利社在线观看| 欧美日韩在线播| 欧美福利电影网| 91精品国产麻豆国产自产在线| 日韩一区二区在线看| 亚洲精品一线二线三线| 国产欧美日韩久久| 国产精品久久久久久久久搜平片 | 亚洲国产精品v| 日韩毛片一二三区| 亚洲国产精品精华液网站| 亚洲成av人片在线观看| 久久疯狂做爰流白浆xx| 国产在线观看一区二区| 成人精品gif动图一区| 欧美亚洲精品一区| 日韩一区二区免费在线观看| 国产午夜精品美女毛片视频| 国产精品久久久久久亚洲伦| 有坂深雪av一区二区精品| 日韩电影在线一区二区三区| 国产在线播放一区二区三区| va亚洲va日韩不卡在线观看| 91黄色激情网站| 精品国产一区二区在线观看| 国产精品免费aⅴ片在线观看| 亚洲一区二区免费视频| 捆绑紧缚一区二区三区视频| 成人av在线网站| 欧美精选一区二区| 国产欧美日韩一区二区三区在线观看| 亚洲免费高清视频在线| 老色鬼精品视频在线观看播放| 成年人网站91| 日韩欧美视频在线| 国产精品久久久久一区二区三区共| 亚洲成av人片一区二区三区| 国产精品一区二区x88av| 色香色香欲天天天影视综合网| 欧美一区二区精美| 亚洲美腿欧美偷拍| 国产乱码字幕精品高清av| 欧美三级视频在线| 久久综合九色综合久久久精品综合| 亚洲一区二区三区在线| 国产成人在线视频网站| 91麻豆精品国产91久久久 | 亚洲欧美日韩小说| 国产一区二区三区美女| 欧美午夜精品电影| 国产精品美女久久久久久久久久久| 美女尤物国产一区| 欧美日韩一区久久| 国产精品美女久久久久久久网站| 蜜臀av性久久久久蜜臀aⅴ四虎| 97成人超碰视| 欧美激情一区二区在线| 久久99久久精品| 欧美老肥妇做.爰bbww| 18欧美乱大交hd1984| 国产精品一卡二卡在线观看| 欧美日本一区二区三区| 亚洲精品国产精品乱码不99 | 国产成人亚洲精品狼色在线| 91麻豆精品国产自产在线观看一区 | 成人性视频免费网站| 精品久久一区二区| 人禽交欧美网站| 欧美日韩一区二区三区高清| 亚洲免费三区一区二区| av网站一区二区三区| 久久嫩草精品久久久久| 强制捆绑调教一区二区| 欧美视频自拍偷拍| 亚洲国产欧美在线| 日本道在线观看一区二区| 国产精品无圣光一区二区| 国产精品亚洲专一区二区三区| 欧美电视剧在线看免费| 美女视频黄久久| 宅男在线国产精品| 免费精品99久久国产综合精品| 欧美美女喷水视频| 日本视频一区二区三区| 日韩欧美一二区| 久久精品国产亚洲高清剧情介绍| 91精品国产色综合久久不卡电影| 天天色图综合网| 欧美一区欧美二区| 全部av―极品视觉盛宴亚洲| 日韩欧美在线不卡| 日韩国产高清在线| 日韩欧美一级二级三级| 狠狠久久亚洲欧美| 国产三级精品在线| 成人av资源在线观看| 一区二区三区色| 欧美日韩亚洲综合在线| 青青草一区二区三区| 精品免费视频一区二区|