⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 net_icmp.h

📁 ucos的tcpip协议占
💻 H
📖 第 1 页 / 共 3 页
字号:


/*$PAGE*/
/*
*********************************************************************************************************
*                                        ICMP POINTER DEFINES
*
* Note(s) : (1) RFC #791 & RFC #792 define a pointer (PTR) as an index (IX) into an option or message :
*
*               (a) RFC #791, Section 3.1 'Options : Loose/Strict Source & Record Route'
*               (b) RFC #791, Section 3.1 'Options : Internet Timestamp'
*               (c) RFC #792,             'Parameter Problem Message'
*
*           (2) ICMP Parameter Problem Message pointer validation currently ONLY supports the following
*               protocols :
*
*               (a) IP
*********************************************************************************************************
*/

#define  NET_ICMP_PTR_IX_BASE                              0

                                                                                /* ---------- IP HDR PTR IXs ---------- */
#define  NET_ICMP_PTR_IX_IP_HDR_BASE                     NET_ICMP_PTR_IX_BASE

#define  NET_ICMP_PTR_IX_IP_HDR_VER                     (NET_ICMP_PTR_IX_IP_HDR_BASE +  0)
#define  NET_ICMP_PTR_IX_IP_HDR_HDR_LEN                 (NET_ICMP_PTR_IX_IP_HDR_BASE +  0)
#define  NET_ICMP_PTR_IX_IP_HDR_TOS                     (NET_ICMP_PTR_IX_IP_HDR_BASE +  1)
#define  NET_ICMP_PTR_IX_IP_HDR_TOT_LEN                 (NET_ICMP_PTR_IX_IP_HDR_BASE +  2)
#define  NET_ICMP_PTR_IX_IP_HDR_ID                      (NET_ICMP_PTR_IX_IP_HDR_BASE +  4)
#define  NET_ICMP_PTR_IX_IP_HDR_FLAGS                   (NET_ICMP_PTR_IX_IP_HDR_BASE +  6)
#define  NET_ICMP_PTR_IX_IP_HDR_FRAG_OFFSET             (NET_ICMP_PTR_IX_IP_HDR_BASE +  6)
#define  NET_ICMP_PTR_IX_IP_HDR_TTL                     (NET_ICMP_PTR_IX_IP_HDR_BASE +  8)
#define  NET_ICMP_PTR_IX_IP_HDR_PROTOCOL                (NET_ICMP_PTR_IX_IP_HDR_BASE +  9)
#define  NET_ICMP_PTR_IX_IP_HDR_CHK_SUM                 (NET_ICMP_PTR_IX_IP_HDR_BASE + 10)
#define  NET_ICMP_PTR_IX_IP_HDR_ADDR_SRC                (NET_ICMP_PTR_IX_IP_HDR_BASE + 12)
#define  NET_ICMP_PTR_IX_IP_HDR_ADDR_DEST               (NET_ICMP_PTR_IX_IP_HDR_BASE + 16)
#define  NET_ICMP_PTR_IX_IP_HDR_OPTS                    (NET_ICMP_PTR_IX_IP_HDR_BASE + 20)

                                                                                /* --------- ICMP MSG PTR IXs --------- */
#define  NET_ICMP_PTR_IX_ICMP_MSG_BASE                     0

#define  NET_ICMP_PTR_IX_ICMP_MSG_TYPE                     0
#define  NET_ICMP_PTR_IX_ICMP_MSG_CODE                     1
#define  NET_ICMP_PTR_IX_ICMP_MSG_CHK_SUM                  2

#define  NET_ICMP_PTR_IX_ICMP_MSG_PTR                      4
#define  NET_ICMP_PTR_IX_ICMP_MSG_UNUSED                   4
#define  NET_ICMP_PTR_IX_ICMP_MSG_UNUSED_PARAM_PROB        5


/*$PAGE*/
/*
*********************************************************************************************************
*                                             DATA TYPES
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                            ICMP TRANSMIT SOURCE QUENCH QUANTITY DATA TYPE
*********************************************************************************************************
*/

typedef  CPU_INT16U  NET_ICMP_SRC_QUENCH_QTY;                   /* Defines max qty of src quench entries to support.    */


/*$PAGE*/
/*
*********************************************************************************************************
*                                             ICMP HEADER
*
* Note(s) : (1) See RFC #792 for ICMP message header formats.
*
*           (2) ICMP 'Redirect' & 'Router' messages are NOT supported (see 'net_icmp.h  Note #1').
*********************************************************************************************************
*/

                                                                        /* --------------- NET ICMP HDR --------------- */
typedef  struct  net_icmp_hdr {
    CPU_INT08U      Type;                                               /* ICMP msg type.                               */
    CPU_INT08U      Code;                                               /* ICMP msg code.                               */
    CPU_INT16U      ChkSum;                                             /* ICMP msg chk sum.                            */
} NET_ICMP_HDR;


/*
*********************************************************************************************************
*                                          ICMP ERROR HEADER
*
* Note(s) : (1) See RFC #792, Sections 'Destination Unreachable Message', 'Source Quench Message', 'Time
*               Exceeded Message' for ICMP 'Error Message' header format.
*
*           (2) 'Unused' field MUST be cleared (i.e. ALL 'Unused' field octets MUST be set to 0x00).
*********************************************************************************************************
*/

                                                                        /* ------------- NET ICMP ERR HDR ------------- */
typedef  struct  net_icmp_hdr_err {
    CPU_INT08U      Type;                                               /* ICMP msg type.                               */
    CPU_INT08U      Code;                                               /* ICMP msg code.                               */
    CPU_INT16U      ChkSum;                                             /* ICMP msg chk sum.                            */

    CPU_INT08U      Unused[NET_ICMP_HDR_NBR_OCTETS_UNUSED];             /* See Note #2.                                 */

    CPU_INT08U      Data[NET_ICMP_MSG_ERR_LEN_MAX];
} NET_ICMP_HDR_ERR;


/*
*********************************************************************************************************
*                                    ICMP PARAMETER PROBLEM HEADER
*
* Note(s) : (1) See RFC #792, Section 'Parameter Problem Message' for ICMP 'Parameter Problem Message'
*               header format.
*
*           (2) 'Unused' field MUST be cleared (i.e. ALL 'Unused' field octets MUST be set to 0x00).
*********************************************************************************************************
*/

                                                                        /* ---------- NET ICMP PARAM PROB HDR --------- */
typedef  struct  net_icmp_hdr_param_prob {
    CPU_INT08U      Type;                                               /* ICMP msg type.                               */
    CPU_INT08U      Code;                                               /* ICMP msg code.                               */
    CPU_INT16U      ChkSum;                                             /* ICMP msg chk sum.                            */

    CPU_INT08U      Ptr;                                                /* Ptr into ICMP err msg.                       */
    CPU_INT08U      Unused[NET_ICMP_HDR_NBR_OCTETS_UNUSED_PARAM_PROB];  /* See Note #2.                                 */

    CPU_INT08U      Data[NET_ICMP_MSG_ERR_LEN_MAX];
} NET_ICMP_HDR_PARAM_PROB;


/*$PAGE*/
/*
*********************************************************************************************************
*                                   ICMP ECHO REQUEST/REPLY HEADER
*
* Note(s) : (1) See RFC #792, Section 'Echo or Echo Reply Message' for ICMP 'Echo Request/Reply Message'
*               header format.
*
*           (2) 'Data' declared with 1 entry; prevents removal by compiler optimization.
*********************************************************************************************************
*/

                                                                        /* ------- NET ICMP ECHO REQ/REPLY HDR -------- */
typedef  struct  net_icmp_hdr_echo {
    CPU_INT08U      Type;                                               /* ICMP msg type.                               */
    CPU_INT08U      Code;                                               /* ICMP msg code.                               */
    CPU_INT16U      ChkSum;                                             /* ICMP msg chk sum.                            */

    CPU_INT16U      ID;                                                 /* ICMP msg ID.                                 */
    CPU_INT16U      SeqNbr;                                             /* ICMP seq nbr.                                */

    CPU_INT08U      Data[1];                                            /* ICMP msg data (see Note #2).                 */
} NET_ICMP_HDR_ECHO;


/*
*********************************************************************************************************
*                                   ICMP INTERNET TIMESTAMP HEADER
*
* Note(s) : (1) See RFC #792, Section 'Timestamp or Timestamp Reply Message' for ICMP 'Internet Timestamp
*               Message' header format.
*********************************************************************************************************
*/

                                                                        /* -------- NET ICMP TS REQ/REPLY HDR --------- */
typedef  struct  net_icmp_hdr_ts {
    CPU_INT08U      Type;                                               /* ICMP msg type.                               */
    CPU_INT08U      Code;                                               /* ICMP msg code.                               */
    CPU_INT16U      ChkSum;                                             /* ICMP msg chk sum.                            */

    CPU_INT16U      ID;                                                 /* ICMP msg ID.                                 */
    CPU_INT16U      SeqNbr;                                             /* ICMP seq nbr.                                */

    NET_TS          TS_Originate;                                       /* TS @ req tx.                                 */
    NET_TS          TS_Rx;                                              /* TS @ target rx.                              */
    NET_TS          TS_Tx;                                              /* TS @ target tx.                              */
} NET_ICMP_HDR_TS;


/*
*********************************************************************************************************
*                               ICMP ADDRESS MASK REQUEST/REPLY HEADER
*
* Note(s) : (1) See RFC #950, Appendix I 'Address Mask ICMP' for ICMP 'Address Mask Request/Reply Message'
*               header format.
*********************************************************************************************************
*/

                                                                        /* ----- NET ICMP ADDR MASK REQ/REPLY HDR ----- */
typedef  struct  net_icmp_hdr_addr_mask {
    CPU_INT08U      Type;                                               /* ICMP msg type.                               */
    CPU_INT08U      Code;                                               /* ICMP msg code.                               */
    CPU_INT16U      ChkSum;                                             /* ICMP msg chk sum.                            */

    CPU_INT16U      ID;                                                 /* ICMP msg ID.                                 */
    CPU_INT16U      SeqNbr;                                             /* ICMP seq nbr.                                */

    NET_IP_ADDR     AddrMask;                                           /* Addr mask.                                   */
} NET_ICMP_HDR_ADDR_MASK;


/*$PAGE*/
/*
*********************************************************************************************************
*                   ICMP REQUEST MESSAGE IDENTIFICATION & SEQUENCE NUMBER DATA TYPE
*********************************************************************************************************
*/

                                                                /* ----------- NET ICMP REQ MSG ID/SEQ NBR ------------ */
typedef  struct  net_icmp_req_id_seq {
    CPU_INT16U      ID;                                         /* ICMP Req Msg ID.                                     */
    CPU_INT16U      SeqNbr;                                     /* ICMP Req Msg Seq Nbr.                                */
} NET_ICMP_REQ_ID_SEQ;


/*
*********************************************************************************************************
*                             ICMP TRANSMIT SOURCE QUENCH LIST DATA TYPE
*
*                                       NET_ICMP_TX_SRC_QUENCH
*                                          |-------------|
*                                          |  ICMP Type  |
*                              Previous    |-------------|
*                                ICMP  <----------O      |
*                                entry     |-------------|     Next
*                                          |      O----------> ICMP
*                                          |-------------|     entry
*                                          |  IP Address |
*                                          |-------------|
*                                          |   Transmit  |
*                                          |   Counter   |
*                                          |-------------|
*
*
* Note(s) : (1) Forced word-alignment at start of ICMP entry NOT required since first data member 'Type'
*               is declared as 'CPU_INT32U'.
*
*           (2) 'PrevPtr'/'NextPtr' ideally declared as 'NET_ICMP_TX_SRC_QUENCH' pointers; declared as 
*               'void' pointers because 'NET_ICMP_TX_SRC_QUENCH' NOT fully defined at time of declaration.
*********************************************************************************************************
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -