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

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

?? net_icmp.c

?? ucos的tcpip協議占
?? C
?? 第 1 頁 / 共 5 頁
字號:
        default:
             NetICMP_TxPktDiscard(pmsg_err, perr);
             return;                                            /* Prevent 'break NOT reachable' compiler warning.      */
    }


   *perr = NET_ICMP_ERR_NONE;
}


/*$PAGE*/
/*
*********************************************************************************************************
*                                         NetICMP_TxMsgReq()
*
* Description : (1) Transmit ICMP Request Message :
*
*                   (a) Validate ICMP Request Message :
*
*                       (1) Validate the following arguments :
*
*                           (A) Type
*                           (B) Code
*
*                       (2) Validation of the following arguments deferred to NetIP_Tx() :
*
*                           (A) Type of Service (TOS)               See RFC #1349, Section 5.1
*                           (B) Time-to-Live    (TTL)
*                           (C) Destination Address
*                           (D) IP flags
*                           (E) IP options
*
*                       (3) Validation ignores the following arguments :
*
*                           (A) Data
*                           (B) Data length
*
*                   (b) Get buffer for ICMP Request Message :
*
*                       (1) Calculate      ICMP Request Message buffer size
*                       (2) Copy data into ICMP Request Message
*                       (3) Initialize     ICMP Request Message buffer controls
*
*                   (c) Prepare ICMP Request Message :
*
*                       (1) Type                                    See Note #1cA
*                       (2) Code                                    See Note #1cA
*                       (3) Identification (ID)
*                       (4) Sequence Number
*                       (5) Data
*                       (6) Timestamps
*
*                           (A) See 'net_icmp.h  ICMP MESSAGE TYPES & CODES  Notes #2 & #3' for supported ICMP
*                               message types & codes.
*
*                           (B) Timestamp Request Message
*
*                               (1) "The Originate Timestamp is the time the sender last touched the message
*                                    before sending it" (RFC #792, Section 'Timestamp or Timestamp Reply Message :
*                                    Description').
*
*                   (d) Transmit ICMP Request Message
*
*                   (e) Free     ICMP Request Message buffer
*
*                   (f) Update transmit statistics
*
*                   (g) Return   ICMP Request Message Identification & Sequence Number
*                         OR
*                       NULL id & sequence number structure, on failure
*
*
*$PAGE*
* Argument(s) : type        ICMP Request Message type (see Note #1cA) :
*
*                               NET_ICMP_MSG_TYPE_ECHO_REQ
*                               NET_ICMP_MSG_TYPE_TS_REQ
*                               NET_ICMP_MSG_TYPE_ADDR_MASK_REQ
*
*               code        ICMP Request Message code (see Note #1cA).
*
*               id          ICMP Request Message id (see 'net_os.c  NetOS_ICMP_TxMsgReq()  Note #3b').
*
*               TOS         Specific TOS to transmit IP packet
*                               (see 'net_ip.h  IP HEADER TYPE OF SERVICE (TOS) DEFINES').
*
*               TTL         Specific TTL to transmit IP packet (see 'net_ip.h  IP HEADER DEFINES').
*
*               addr_dest   Destination IP address.
*
*               flags       Flags to select transmit options; bit-field flags logically OR'd :
*
*                               NET_IP_FLAG_NONE                No transmit flags selected.
*                               NET_IP_FLAG_TX_DONT_FRAG        Set IP 'Don't Frag' flag.
*
*               popts       Pointer to one or more IP options configuration data structures :
*
*                               NULL                            NO IP transmit options configuration.
*                               NET_IP_OPT_CFG_ROUTE_TS         Route &/or Internet Timestamp options configuration.
*                               NET_IP_OPT_CFG_SECURITY         Security options configuration
*                                                                   (see 'net_ip.h  Note #1f').
*
*               perr        Pointer to variable that will receive the return error code from this function :
*
*                               NET_ICMP_ERR_NONE               ICMP Request Message successfully transmitted.
*                               NET_ERR_INIT_INCOMPLETE         Network initialization NOT complete.
*
*                                                               ---- RETURNED BY NetICMP_TxPktDiscard() : ----
*                               NET_ERR_TX                      Transmit error; packet discarded.
*
* Return(s)   : ICMP Request Message's Identification (ID) & Sequence Numbers, if NO errors.
*
*               NULL                   Identification (ID) & Sequence Numbers, otherwise.
*
* Caller(s)   : NetOS_ICMP_TxMsgReq().
*
*               This function is an INTERNAL network protocol suite function & SHOULD NOT be called by 
*               application function(s).
*
* Note(s)     : (2) NetICMP_TxMsgReq() blocked until network initialization completes; perform NO action.
*
*               (3) NetICMP_TxMsgReq() is the internal ICMP handler for ICMP Request Messages.  Its
*                   global declaration is required since NetOS_ICMP_TxMsgReq() calls the handler function 
*                   from the OS port file (see also 'net_os.c  NetOS_ICMP_TxMsgReq()  Note #1').
*
*               (4) Default case already invalidated in NetICMP_TxMsgReqValidate().  However, the default 
*                   case is included as an extra precaution in case 'type' is incorrectly modified.
*
*               (5) Assumes network buffer's protocol header size is large enough to accomodate ICMP header
*                   size (see 'net_buf.h  NETWORK BUFFER INDEX & SIZE DEFINES  Note #1').
*
*               (6) Some buffer controls were previously initialized in NetBuf_Get() when the buffer
*                   was allocated earlier in this function.  These buffer controls do NOT need to be
*                   re-initialized but are shown for completeness.
*
*               (7) (a) ICMP message Check-Sum MUST be calculated AFTER the entire ICMP message has been
*                       prepared.  In addition, ALL multi-octet words are converted from host-order to 
*                       network-order since "the sum of 16-bit integers can be computed in either byte 
*                       order" [RFC #1071, Section 2.(B)].
*
*                   (b) ICMP message Check-Sum field MUST be cleared to '0' BEFORE the ICMP message
*                       Check-Sum is calculated (see RFC #792, Sections 'Echo or Echo Reply Message :
*                       Checksum', 'Timestamp or Timestamp Reply Message : Checksum'; & RFC #950,
*                       Appendix I 'Address Mask ICMP', Section 'ICMP Fields : Checksum').
*
*                   (c) The ICMP message Check-Sum field is returned in network-order & MUST NOT be re-
*                       converted back to host-order (see 'net_util.c  NetUtil_16BitOnesCplChkSumHdrCalc()
*                       Note #3b' & 'net_util.c  NetUtil_16BitOnesCplChkSumDataCalc()  Note #4b').
*
*               (8) Network buffer already freed by lower layer; only increment error counter.
*********************************************************************************************************
*/
/*$PAGE*/
NET_ICMP_REQ_ID_SEQ  NetICMP_TxMsgReq (CPU_INT08U    type,
                                       CPU_INT08U    code,
                                       CPU_INT16U    id,
                                       NET_IP_TOS    TOS,
                                       NET_IP_TTL    TTL,
                                       NET_IP_ADDR   addr_dest,
                                       CPU_INT16U    flags,
                                       void         *popts,
                                       void         *p_data,
                                       CPU_INT16U    data_len,
                                       NET_ERR      *perr)
{
#if (CPU_CFG_CRITICAL_METHOD == CPU_CRITICAL_METHOD_STATUS_LOCAL)
    CPU_SR                   cpu_sr;
#endif
    NET_ICMP_REQ_ID_SEQ      id_seq;
    CPU_INT16U               msg_size_hdr;
    CPU_INT16U               msg_size_data;
    CPU_INT16U               msg_size_tot;
    CPU_INT16U               msg_seq_nbr;
    CPU_INT16U               msg_ix;
    CPU_INT16U               msg_ix_data;
    CPU_INT16U               msg_chk_sum;
    NET_TS                   ts;
    NET_BUF                 *pmsg_req;
    NET_BUF_HDR             *pmsg_req_hdr;
    NET_ICMP_HDR_ECHO       *picmp_hdr_echo;
    NET_ICMP_HDR_TS         *picmp_hdr_ts;
    NET_ICMP_HDR_ADDR_MASK  *picmp_hdr_addr;
    NET_ERR                  err;

                                                                /* Prepare err rtn val.                                 */
    id_seq.ID     = 0;
    id_seq.SeqNbr = 0;


#if (NET_ERR_CFG_ARG_CHK_EXT_EN == DEF_ENABLED)
    if (Net_InitDone != DEF_YES) {                              /* If init NOT complete, exit tx (see Note #2).         */
       *perr = NET_ERR_INIT_INCOMPLETE;
        return (id_seq);
    }
#endif


                                                                /* ------------- VALIDATE ICMP TX REQ MSG ------------- */
    NetICMP_TxMsgReqValidate(type, code, &err);

    if (err != NET_ICMP_ERR_NONE) {
        NetICMP_TxPktDiscard((NET_BUF *)0, perr);
        return (id_seq);
    }


/*$PAGE*/
                                                                /* --------------- GET ICMP REQ MSG BUF --------------- */
                                                                /* Calc req msg buf size.                               */
    switch (type) {
        case NET_ICMP_MSG_TYPE_ECHO_REQ:
             msg_size_hdr = NET_ICMP_HDR_SIZE_ECHO;

             if (p_data != (void *)0) {
                 msg_size_data = data_len;
             } else {
                 msg_size_data = 0;
             }
             break;


        case NET_ICMP_MSG_TYPE_TS_REQ:
#if 1                                                           /* ???? Rtn err OR ignore data?                         */
             if (p_data != (void *)0) {
                 NetICMP_TxPktDiscard((NET_BUF *)0, perr);
                 return (id_seq);
             }
             if (data_len > 0) {
                 NetICMP_TxPktDiscard((NET_BUF *)0, perr);
                 return (id_seq);
             }
#endif

             msg_size_hdr  = NET_ICMP_HDR_SIZE_TS;
             msg_size_data = 0;
             break;


        case NET_ICMP_MSG_TYPE_ADDR_MASK_REQ:
#if 1                                                           /* ???? Rtn err OR ignore data?                         */
             if (p_data != (void *)0) {
                 NetICMP_TxPktDiscard((NET_BUF *)0, perr);
                 return (id_seq);
             }
             if (data_len > 0) {
                 NetICMP_TxPktDiscard((NET_BUF *)0, perr);
                 return (id_seq);
             }
#endif

             msg_size_hdr  = NET_ICMP_HDR_SIZE_ADDR_MASK;
             msg_size_data = 0;
             break;


        default:                                                /* See Note #4.                                         */
             NetICMP_TxPktDiscard((NET_BUF *)0, perr);
             return (id_seq);                                   /* Prevent 'break NOT reachable' compiler warning.      */
    }

    msg_size_tot = msg_size_hdr + msg_size_data;


#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
    if (NET_BUF_DATA_TX_IX < msg_size_hdr) {                    /* See Note #5.                                         */
        NetICMP_TxPktDiscard((NET_BUF *)0, perr);
        NET_CTR_ERR_INC(NetICMP_ErrTxInvalidBufIxCtr);
        return (id_seq);
    }
#endif
    msg_ix   = NET_BUF_DATA_TX_IX - msg_size_hdr;


    pmsg_req = NetBuf_Get((NET_BUF_SIZE) msg_size_tot,          /* Get req msg buf.                                     */
                          (NET_BUF_SIZE) msg_ix,
                          (CPU_INT16U  ) NET_BUF_FLAG_NONE,
                          (NET_ERR    *)&err);
    if (err != NET_BUF_ERR_NONE) {
        NetICMP_TxPktDiscard(pmsg_req, perr);
        return (id_seq);
    }


/*$PAGE*/
                                                                /* Init req msg buf ctrls.                              */
    pmsg_req_hdr                  = &pmsg_req->Hdr;
    pmsg_req_hdr->ICMP_MsgIx      = (CPU_INT16U  )msg_ix;
    pmsg_req_hdr->ICMP_MsgLen     = (CPU_INT16U  )msg_size_tot;
    pmsg_req_hdr->ICMP_HdrLen     = (CPU_INT16U  )msg_size_hdr;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女视频一区二区| 亚洲少妇屁股交4| 国产精品久线观看视频| 亚洲图片激情小说| 日本麻豆一区二区三区视频| 国产电影一区二区三区| 日本久久一区二区| 日韩精品一区二区三区swag | 午夜视频一区在线观看| 寂寞少妇一区二区三区| 91麻豆免费看| 欧美大片在线观看一区二区| 成人免费视频在线观看| 麻豆成人免费电影| 99国产精品久久久久久久久久| 在线观看91精品国产麻豆| 中文字幕精品一区| 午夜激情一区二区| 成人视屏免费看| 欧美巨大另类极品videosbest | 国产在线视频一区二区| 99re在线精品| 精品国产99国产精品| 亚洲影院免费观看| 丁香激情综合五月| 在线综合+亚洲+欧美中文字幕| 国产精品免费丝袜| 精品中文字幕一区二区| 欧美性受xxxx黑人xyx性爽| 久久久久久久久久久99999| 亚洲第一主播视频| 99re热视频精品| 久久久久久久综合色一本| 婷婷综合另类小说色区| caoporm超碰国产精品| 精品蜜桃在线看| 亚洲一区二区三区四区五区中文| 国产91精品欧美| 日韩三级.com| 亚洲国产精品人人做人人爽| 成人伦理片在线| 久久综合久久综合亚洲| 性久久久久久久久久久久| www.亚洲色图| 久久蜜桃一区二区| 久久狠狠亚洲综合| 在线不卡a资源高清| 亚洲免费在线电影| 91视频精品在这里| 国产精品私房写真福利视频| 久久精品国产一区二区| 欧美精品在线一区二区三区| 亚洲男人天堂av网| 99久久综合99久久综合网站| 久久女同互慰一区二区三区| 精品在线播放免费| 精品国内二区三区| 久久99蜜桃精品| 91精品国产91热久久久做人人 | 日韩欧美一级片| 日产精品久久久久久久性色| 欧美日韩一区国产| 亚洲影视在线观看| 欧美亚洲禁片免费| 亚洲成人tv网| 欧美精品一二三| 午夜不卡在线视频| 欧美日韩久久久久久| 亚洲国产三级在线| 欧美午夜电影一区| 五月天精品一区二区三区| 欧美美女直播网站| 午夜精品成人在线视频| 91精品国产日韩91久久久久久| 视频一区视频二区中文字幕| 在线电影一区二区三区| 男女视频一区二区| 精品久久人人做人人爱| 国产精品一区在线观看乱码 | 91污在线观看| 亚洲色欲色欲www| 日本韩国精品一区二区在线观看| 一区二区三区成人在线视频| 欧美性感一类影片在线播放| 亚洲高清免费一级二级三级| 欧美日本乱大交xxxxx| 免费日韩伦理电影| 久久综合精品国产一区二区三区| 国产精品一二三四五| 国产精品区一区二区三区| www.成人在线| 一区二区三区不卡视频| 9191成人精品久久| 国内欧美视频一区二区| 欧美激情在线看| 一本久久a久久精品亚洲| 亚洲国产欧美日韩另类综合| 69堂精品视频| 国内一区二区在线| 自拍视频在线观看一区二区| 欧美综合亚洲图片综合区| 日韩和欧美一区二区| 久久婷婷成人综合色| 成+人+亚洲+综合天堂| 亚洲妇女屁股眼交7| 精品国产91乱码一区二区三区| 成人蜜臀av电影| 亚洲1区2区3区视频| 久久久久国产一区二区三区四区| 成人精品在线视频观看| 亚洲一级不卡视频| 欧美成人精品1314www| 国产成人免费视频| 亚洲香蕉伊在人在线观| 欧美电影免费观看高清完整版在 | 亚洲另类一区二区| 日韩欧美美女一区二区三区| 成人av中文字幕| 亚洲444eee在线观看| 久久亚洲精品国产精品紫薇| 在线观看日韩毛片| 国产一区视频在线看| 伊人性伊人情综合网| 亚洲精品在线观| 在线精品视频小说1| 黄色精品一二区| 一区二区免费看| 久久午夜羞羞影院免费观看| 色系网站成人免费| 精品在线免费视频| 日韩 欧美一区二区三区| 久久久精品国产免费观看同学| 色综合天天性综合| 久久99精品久久久久久 | 风间由美一区二区三区在线观看 | 欧美色网站导航| 国产suv一区二区三区88区| 亚洲18女电影在线观看| 国产精品五月天| 欧美一区二区在线播放| 99综合电影在线视频| 激情综合色综合久久| 一片黄亚洲嫩模| 中文在线资源观看网站视频免费不卡| 欧美久久免费观看| 91麻豆自制传媒国产之光| 国产精品自在在线| 另类的小说在线视频另类成人小视频在线| 亚洲老妇xxxxxx| 中文一区一区三区高中清不卡| 91精品国产免费| 欧美日韩视频在线观看一区二区三区 | 色综合久久天天综合网| 国产乱对白刺激视频不卡 | 久久青草欧美一区二区三区| 欧美日韩成人综合| 在线精品视频免费播放| 99久久er热在这里只有精品15| 蜜臀av一区二区在线免费观看 | 7777精品伊人久久久大香线蕉经典版下载 | 欧美亚洲丝袜传媒另类| 91在线播放网址| 波多野结衣中文字幕一区 | 国产精品每日更新| 久久亚洲一区二区三区四区| 日韩一区二区三区四区五区六区| 欧美日韩国产电影| 欧美无砖专区一中文字| 91影院在线免费观看| 成熟亚洲日本毛茸茸凸凹| 国产一区二区三区免费观看| 精品一二三四在线| 激情五月婷婷综合| 美国av一区二区| 麻豆成人av在线| 久久丁香综合五月国产三级网站| 日韩成人精品在线| 男男gaygay亚洲| 麻豆久久久久久久| 日本成人在线视频网站| 日本女人一区二区三区| 奇米精品一区二区三区四区| 奇米精品一区二区三区在线观看| 免费看日韩精品| 国内精品自线一区二区三区视频| 精品一区二区三区影院在线午夜| 毛片av一区二区三区| 久久精品国产精品亚洲精品| 精品一区二区三区欧美| 国产福利一区在线| 99久免费精品视频在线观看 | 午夜电影一区二区| 三级欧美韩日大片在线看| 美女看a上一区| 国产很黄免费观看久久| zzijzzij亚洲日本少妇熟睡| 色综合天天综合在线视频| 欧美午夜精品免费| 日韩一区二区三区电影| 久久久天堂av|