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

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

?? net_icmp.c

?? ucos的tcpip協議占
?? C
?? 第 1 頁 / 共 5 頁
字號:
    pmsg_req_hdr->TotLen          = (NET_BUF_SIZE)pmsg_req_hdr->ICMP_MsgLen;
    pmsg_req_hdr->ProtocolHdrType =  NET_PROTOCOL_TYPE_ICMP;
    msg_ix_data                   =  msg_ix + msg_size_hdr;


    if (msg_size_data > 0) {                                    /* Copy data into ICMP req tx buf.                      */
        NetBuf_DataWr((NET_BUF    *) pmsg_req,
                      (NET_BUF_SIZE) msg_ix_data,
                      (NET_BUF_SIZE) msg_size_data,
                      (CPU_INT08U *) p_data,
                      (NET_ERR    *)&err);
        if (err != NET_BUF_ERR_NONE) {
            NetICMP_TxPktDiscard(pmsg_req, perr);
            return (id_seq);
        }

        pmsg_req_hdr->DataIx  = (CPU_INT16U  )msg_ix_data;
        pmsg_req_hdr->DataLen = (NET_BUF_SIZE)msg_size_data;
#if 0                                                           /* Init'd in NetBuf_Get() [see Note #6].                */
    } else {
        pmsg_req_hdr->DataIx  =  NET_BUF_IX_NONE;
        pmsg_req_hdr->DataLen =  0;
#endif
    }


/*$PAGE*/
                                                                /* --------------- PREPARE ICMP REQ MSG --------------- */
    NET_ICMP_TX_GET_SEQ_NBR(msg_seq_nbr);

    switch (type) {
        case NET_ICMP_MSG_TYPE_ECHO_REQ:
             picmp_hdr_echo       = (NET_ICMP_HDR_ECHO *)&pmsg_req->Data[pmsg_req_hdr->ICMP_MsgIx];
             picmp_hdr_echo->Type =  NET_ICMP_MSG_TYPE_ECHO_REQ;
             picmp_hdr_echo->Code =  NET_ICMP_MSG_CODE_ECHO_REQ;
             NET_UTIL_VAL_COPY_SET_NET_16(&picmp_hdr_echo->ID,     &id);
             NET_UTIL_VAL_COPY_SET_NET_16(&picmp_hdr_echo->SeqNbr, &msg_seq_nbr);
                                                                            /* Calc ICMP msg chk sum (see Note #7).     */
             NET_UTIL_VAL_SET_NET_16(&picmp_hdr_echo->ChkSum, 0x0000);      /* Clr           chk sum (see Note #7b).    */
             msg_chk_sum = NetUtil_16BitOnesCplChkSumDataCalc((void     *) pmsg_req,
                                                              (void     *) 0,
                                                              (CPU_INT16U) 0,
                                                              (NET_ERR  *)&err);
             NET_UTIL_VAL_COPY_16(&picmp_hdr_echo->ChkSum, &msg_chk_sum);   /* Copy chk sum in net order (see Note #7c).*/
             break;


        case NET_ICMP_MSG_TYPE_TS_REQ:
             picmp_hdr_ts       = (NET_ICMP_HDR_TS   *)&pmsg_req->Data[pmsg_req_hdr->ICMP_MsgIx];
             picmp_hdr_ts->Type =  NET_ICMP_MSG_TYPE_TS_REQ;
             picmp_hdr_ts->Code =  NET_ICMP_MSG_CODE_TS_REQ;
             ts                 =  NetUtil_TS_Get();                        /* See Note #1cB1.                          */
             NET_UTIL_VAL_COPY_SET_NET_16(&picmp_hdr_ts->ID,           &id);
             NET_UTIL_VAL_COPY_SET_NET_16(&picmp_hdr_ts->SeqNbr,       &msg_seq_nbr);
             NET_UTIL_VAL_COPY_SET_NET_32(&picmp_hdr_ts->TS_Originate, &ts);
             NET_UTIL_VAL_SET_NET_32(&picmp_hdr_ts->TS_Rx,  NET_TS_NONE);
             NET_UTIL_VAL_SET_NET_32(&picmp_hdr_ts->TS_Tx,  NET_TS_NONE);
                                                                            /* Calc ICMP msg chk sum (see Note #7).     */
             NET_UTIL_VAL_SET_NET_16(&picmp_hdr_ts->ChkSum, 0x0000);        /* Clr           chk sum (see Note #7b).    */
             msg_chk_sum = NetUtil_16BitOnesCplChkSumHdrCalc((void     *) picmp_hdr_ts,
                                                             (CPU_INT16U) pmsg_req_hdr->ICMP_MsgLen,
                                                             (NET_ERR  *)&err);
             NET_UTIL_VAL_COPY_16(&picmp_hdr_ts->ChkSum, &msg_chk_sum);     /* Copy chk sum in net order (see Note #7c).*/
             break;


        case NET_ICMP_MSG_TYPE_ADDR_MASK_REQ:
             picmp_hdr_addr       = (NET_ICMP_HDR_ADDR_MASK *)&pmsg_req->Data[pmsg_req_hdr->ICMP_MsgIx];
             picmp_hdr_addr->Type =  NET_ICMP_MSG_TYPE_ADDR_MASK_REQ;
             picmp_hdr_addr->Code =  NET_ICMP_MSG_CODE_ADDR_MASK_REQ;
             NET_UTIL_VAL_COPY_SET_NET_16(&picmp_hdr_addr->ID,     &id);
             NET_UTIL_VAL_COPY_SET_NET_16(&picmp_hdr_addr->SeqNbr, &msg_seq_nbr);
             NET_UTIL_VAL_SET_NET_32(&picmp_hdr_addr->AddrMask, NET_IP_ADDR_NONE);
                                                                            /* Calc ICMP msg chk sum (see Note #7).     */
             NET_UTIL_VAL_SET_NET_16(&picmp_hdr_addr->ChkSum,   0x0000);    /* Clr           chk sum (see Note #7b).    */
             msg_chk_sum = NetUtil_16BitOnesCplChkSumHdrCalc((void     *) picmp_hdr_addr,
                                                             (CPU_INT16U) pmsg_req_hdr->ICMP_MsgLen,
                                                             (NET_ERR  *)&err);
             NET_UTIL_VAL_COPY_16(&picmp_hdr_addr->ChkSum, &msg_chk_sum);   /* Copy chk sum in net order (see Note #7c).*/
             break;


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

    if (err != NET_UTIL_ERR_NONE) {                             /* Chk err from NetUtil_16BitOnesCplChkSum()'s.         */
        NetICMP_TxPktDiscard(pmsg_req, perr);
        return (id_seq);
    }



/*$PAGE*/
                                                                /* ----------------- TX ICMP REQ MSG ------------------ */
    NetIP_Tx((NET_BUF   *)pmsg_req,
             (NET_IP_ADDR)NetIP_AddrThisHost,
             (NET_IP_ADDR)addr_dest,
             (NET_IP_TOS )TOS,
             (NET_IP_TTL )TTL,
             (CPU_INT16U )flags,
             (void      *)popts,
             (NET_ERR   *)perr);



                                                                /* ------- FREE ICMP REQ MSG / UPDATE TX STATS -------- */
    switch (*perr) {
        case NET_IP_ERR_NONE:
             NetICMP_TxPktFree(pmsg_req);
             NET_CTR_STAT_INC(NetICMP_StatTxMsgCtr);
             NET_CTR_STAT_INC(NetICMP_StatTxMsgReqCtr);
             break;


        case NET_ERR_INIT_INCOMPLETE:
        case NET_ERR_TX:
             NET_CTR_ERR_INC(NetICMP_ErrTxPktDiscardedCtr);     /* See Note #8.                                         */
             return (id_seq);                                   /* Prevent 'break NOT reachable' compiler warning.      */


        default:
             NetICMP_TxPktDiscard(pmsg_req, perr);
             return (id_seq);                                   /* Prevent 'break NOT reachable' compiler warning.      */
    }



   *perr          = NET_ICMP_ERR_NONE;

                                                                /* ----------- RTN ICMP REQ MSG ID/SEQ NBR ------------ */
    id_seq.ID     = id;
    id_seq.SeqNbr = msg_seq_nbr;

    return (id_seq);                                            
}


/*$PAGE*/
/*
*********************************************************************************************************
*                                        NetICMP_HandlerRx()
*
* Description : Handle & reply to incoming IP packets for ICMP error &/or status conditions.
*
*               (1) (a) When network low-resources status is set, transmit  ICMP Source Quench Error Messages.
*
*                   (b) When network low-resources status clears, clear the ICMP Transmit Source Quench List.
*
*
* Argument(s) : pbuf        Pointer to network buffer that received an IP packet.
*               ----        Argument validated in NetIP_RxPktValidate()
*                                                   by NetIP_Rx().
*
* Return(s)   : none.
*
* Caller(s)   : NetIP_RxPktValidate().
*
*               This function is an INTERNAL network protocol suite function & MUST NOT be called by 
*               application function(s).
*
* Note(s)     : none.
*********************************************************************************************************
*/

void  NetICMP_HandlerRx (NET_BUF  *pbuf)
{
#if (NET_ICMP_CFG_TX_SRC_QUENCH_EN == DEF_ENABLED)
    NET_DBG_STATUS  rsrc_lo;


    rsrc_lo = NetDbg_MonTaskStatGetHandlerLo();                 /* Get lo rsrc's status.                                */

    if (rsrc_lo != NET_DBG_STATUS_OK) {                         /* If net rsrc's lo, ...                                */
        NetICMP_HandlerTxSrcQuench(pbuf);                       /* ... tx ICMP src quench err to IP pkt src host.       */

    } else {                                                    /* Else if ICMP tx src quench list avail, ...           */
        if (NetICMP_TxSrcQuenchListHead != (NET_ICMP_TX_SRC_QUENCH *)0) {
            NetICMP_HandlerTxSrcQuenchClrList();                /* ... clr tx src quench list.                          */
        }
    }

#else
   (void)&pbuf;                                                 /* Prevent compiler warning.                            */
#endif
}


/*$PAGE*/
/*
*********************************************************************************************************
*********************************************************************************************************
*                                           LOCAL FUNCTIONS
*********************************************************************************************************
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                                     NetICMP_RxPktValidateBuf()
*
* Description : Validate received buffer header as ICMP protocol.
*
* Argument(s) : pbuf_hdr    Pointer to network buffer header that received ICMP packet.
*               --------    Argument validated in NetICMP_Rx().
*
*               perr        Pointer to variable that will receive the return error code from this function :
*
*                               NET_ICMP_ERR_NONE               Received buffer's ICMP header validated.
*                               NET_ERR_INVALID_PROTOCOL        Buffer's protocol type is NOT ICMP.
*                               NET_BUF_ERR_INVALID_IX          Invalid buffer index.
*
* Return(s)   : none.
*
* Caller(s)   : NetICMP_Rx().
*
* Note(s)     : none.
*********************************************************************************************************
*/

#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
static  void  NetICMP_RxPktValidateBuf (NET_BUF_HDR  *pbuf_hdr,
                                        NET_ERR      *perr)
{
#if ((NET_CTR_CFG_ERR_EN      == DEF_ENABLED)                    && \
     (CPU_CFG_CRITICAL_METHOD == CPU_CRITICAL_METHOD_STATUS_LOCAL))
    CPU_SR  cpu_sr;
#endif

                                                                /* --------------- VALIDATE ICMP BUF HDR -------------- */
    if (pbuf_hdr->ProtocolHdrType != NET_PROTOCOL_TYPE_ICMP) {
        NET_CTR_ERR_INC(Net_ErrInvalidProtocolCtr);
       *perr = NET_ERR_INVALID_PROTOCOL;
        return;
    }

    if (pbuf_hdr->ICMP_MsgIx == NET_BUF_IX_NONE) {
        NET_CTR_ERR_INC(NetICMP_ErrRxInvalidBufIxCtr);
       *perr = NET_BUF_ERR_INVALID_IX;
        return;
    }

   *perr = NET_ICMP_ERR_NONE;
}
#endif


/*$PAGE*/
/*
*********************************************************************************************************
*                                       NetICMP_RxPktValidate()
*
* Description : (1) Validate received ICMP packet :
*
*                   (a) Validate the received packet's destination (see Note #3).
*
*                   (b) (1) Validate the received packet's following ICMP message fields :
*
*                           (A) Type
*                           (B) Code
*                           (C) Message Length
*                           (D) Pointer                         See RFC  #792, Section 'Parameter Problem Message'
*                           (E) Check-Sum                       See Note #7a
*
*                       (2) Validation ignores the following ICMP header fields :
*
*                           (A) Unused                          See RFC # 792, Section 'Message Formats'
*                           (B) Data                            See RFC #1122, Sections 3.2.2 & 3.2.2.6
*                           (C) Identification (ID)             See RFC # 792, Sections 'Echo or Echo Reply Message'
*                                                                   & 'Timestamp or Timestamp Reply Message'
*                           (D) Sequence Number                 See RFC # 792, Sections 'Echo or Echo Reply Message'
*                                                                   & 'Timestamp or Timestamp Reply Message'
*
*                   (c) Convert the following ICMP message fields from network-order to host-order :
*
*                       (1) Check-Sum                           See Note #7c
*
*                           (A) These fields are NOT converted directly in the received packet buffer's 
*                               data area but are converted in local or network buffer variables ONLY.
*
*                   (d) Update network buffer's length controls.
*
*                   (e) Demultiplex ICMP message type.
*
*
* Argument(s) : pbu

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区播放| 91在线看国产| 99国产精品久久久久久久久久久| 日本高清不卡在线观看| 日韩欧美一区中文| 国产精品久久久久久福利一牛影视 | 亚洲精品在线观看网站| 国产精品久久久久四虎| 午夜精品国产更新| 成人一级黄色片| 欧美群妇大交群中文字幕| 国产午夜精品福利| 亚洲福利电影网| 国产风韵犹存在线视精品| 91老师片黄在线观看| 91精品国产91久久久久久一区二区| 久久精品日韩一区二区三区| 亚洲国产欧美在线人成| 丁香一区二区三区| 欧美蜜桃一区二区三区| 国产婷婷色一区二区三区| 亚洲午夜精品网| 国产白丝精品91爽爽久久| 欧美精品精品一区| 国产精品丝袜黑色高跟| 日韩高清一级片| 色丁香久综合在线久综合在线观看| 欧美精品一区视频| 五月综合激情网| 91老师片黄在线观看| 久久久久综合网| 日韩av中文在线观看| av中文字幕一区| 久久久久久久久一| 日产欧产美韩系列久久99| 色爱区综合激月婷婷| 国产三级精品三级在线专区| 美女网站色91| 欧美伦理视频网站| 亚洲欧美日韩久久精品| 成人中文字幕电影| 精品成人a区在线观看| 婷婷开心激情综合| 在线免费观看不卡av| 国产精品国产三级国产有无不卡 | 日韩精品中文字幕在线不卡尤物 | 欧美一区二区三区免费大片 | 日韩你懂的在线观看| 性久久久久久久| 在线免费观看一区| 亚洲欧美另类在线| 99精品视频在线观看免费| 久久久久久久综合| 狠狠色狠狠色综合系列| 欧美一激情一区二区三区| 亚洲mv在线观看| 精品视频在线看| 亚洲与欧洲av电影| 色av成人天堂桃色av| 日韩美女视频一区| 91偷拍与自偷拍精品| 中文字幕不卡在线播放| 国产成人无遮挡在线视频| 亚洲精品在线一区二区| 久久草av在线| 精品国产乱码久久久久久浪潮| 免费成人av在线| 欧美大胆一级视频| 奇米影视一区二区三区| 欧美精品日韩一本| 日韩高清一级片| 日韩视频一区二区三区在线播放 | 久久久久久毛片| 国产乱码一区二区三区| 国产欧美一区二区三区在线老狼| 国产一区二区在线影院| 国产亚洲精品福利| 成人黄色软件下载| 亚洲欧美激情视频在线观看一区二区三区| 成人在线综合网站| 日韩美女精品在线| 欧美性xxxxxx少妇| 热久久免费视频| 精品成人免费观看| 成人性生交大合| 亚洲精品一二三区| 欧美三级资源在线| 久久国产精品99精品国产| 久久日一线二线三线suv| 国产真实精品久久二三区| 国产午夜亚洲精品理论片色戒| 成人性生交大片| 一区二区三区视频在线看| 欧美性生交片4| 奇米色777欧美一区二区| 精品国产乱码久久久久久牛牛| 国产老肥熟一区二区三区| 国产精品久久久久久久岛一牛影视 | 制服.丝袜.亚洲.中文.综合| 激情亚洲综合在线| 亚洲国产高清在线观看视频| 一本久道中文字幕精品亚洲嫩| 亚洲第一成人在线| 精品嫩草影院久久| 成人精品一区二区三区中文字幕| 亚洲另类一区二区| 日韩欧美的一区| 成人av电影在线观看| 亚洲成人av福利| 国产无遮挡一区二区三区毛片日本| 91免费在线视频观看| 丝袜国产日韩另类美女| 国产欧美日韩麻豆91| 精品视频一区二区三区免费| 国产一区二区按摩在线观看| 亚洲精品大片www| 日韩美女视频在线| 一本色道**综合亚洲精品蜜桃冫| 日本美女一区二区| 亚洲欧洲国产专区| 在线播放日韩导航| www.综合网.com| 免费在线看成人av| 亚洲乱码日产精品bd| 日韩欧美一二区| 色综合婷婷久久| 国产一区二区三区蝌蚪| 亚洲综合丁香婷婷六月香| 欧美精品一区二区久久婷婷| 在线欧美日韩精品| 国产夫妻精品视频| 日韩中文字幕一区二区三区| 综合久久一区二区三区| 久久这里只有精品首页| 欧美色图一区二区三区| 国产98色在线|日韩| 日韩av中文字幕一区二区三区| 国产精品区一区二区三区| 欧美一级片免费看| 欧美视频第二页| 99精品视频在线观看| 国产乱国产乱300精品| 秋霞电影网一区二区| 亚洲视频一区二区在线观看| 精品福利一区二区三区| 欧美电影一区二区| 欧洲中文字幕精品| 成人av午夜电影| 国产精品自在在线| 麻豆成人久久精品二区三区小说| 一区二区三区不卡视频| 亚洲婷婷综合色高清在线| 欧美极品aⅴ影院| 欧美电影免费观看完整版| 6080午夜不卡| 欧美日本韩国一区| 欧美在线视频你懂得| 成人小视频免费在线观看| 久久99精品久久久久久国产越南 | 欧美色图免费看| 91免费观看国产| 成人黄色av电影| 国产成人一级电影| 蜜桃一区二区三区在线观看| 日韩电影在线看| 石原莉奈一区二区三区在线观看| 亚洲一区二区在线免费看| 亚洲精品水蜜桃| 日韩毛片精品高清免费| 亚洲欧美自拍偷拍| 亚洲欧美综合在线精品| 亚洲欧洲www| 亚洲特黄一级片| 亚洲视频你懂的| 亚洲欧美电影院| 尤物视频一区二区| 亚洲综合色网站| 亚洲一级二级三级| 亚洲小说春色综合另类电影| 亚洲一区二区五区| 亚洲国产精品嫩草影院| 亚洲电影一区二区三区| 亚洲午夜影视影院在线观看| 亚洲成av人**亚洲成av**| 午夜电影网一区| 奇米888四色在线精品| 麻豆精品一区二区三区| 精品伊人久久久久7777人| 国产成人亚洲综合a∨猫咪| 成人听书哪个软件好| 99久久精品国产一区| 97精品电影院| 欧美亚洲动漫精品| 91精品国产91久久久久久一区二区| 日韩一级免费一区| 久久婷婷一区二区三区| 国产精品久久久久7777按摩| 亚洲精品综合在线| 日韩精品亚洲专区| 精品一区二区三区的国产在线播放|