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

📄 net_icmp.h

📁 ucos的tcpip协议占
💻 H
📖 第 1 页 / 共 3 页
字号:
/*
*********************************************************************************************************
*                                              uC/TCP-IP
*                                      The Embedded TCP/IP Suite
*
*                          (c) Copyright 2003-2006; Micrium, Inc.; Weston, FL
*
*               All rights reserved.  Protected by international copyright laws.
*
*               uC/TCP-IP is provided in source form for FREE evaluation, for educational
*               use or peaceful research.  If you plan on using uC/TCP-IP in a commercial
*               product you need to contact Micrium to properly license its use in your
*               product.  We provide ALL the source code for your convenience and to help
*               you experience uC/TCP-IP.  The fact that the source code is provided does
*               NOT mean that you can use it without paying a licensing fee.
*
*               Knowledge of the source code may NOT be used to develop a similar product.
*
*               Please help us continue to provide the Embedded community with the finest
*               software available.  Your honesty is greatly appreciated.
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*
*                                          NETWORK ICMP LAYER
*                                 (INTERNET CONTROL MESSAGE PROTOCOL)
*
* Filename      : net_icmp.h
* Version       : V1.87
* Programmer(s) : ITJ
*********************************************************************************************************
* Note(s)       : (1) Supports Internet Control Message Protocol as described in RFC #792 with the following
*                     restrictions/constraints :
*
*                     (a) Does NOT support IP forwarding/routing               RFC #1122, Section 3.3.1
*
*                     (b) Does NOT support IP multicasting                     RFC #1122, Section 3.3.7
*
*                     (c) Does NOT support ICMP Address Mask Agent/Server      RFC #1122, Section 3.2.2.9
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                                               EXTERNS
*********************************************************************************************************
*/

#ifdef   NET_ICMP_MODULE
#define  NET_ICMP_EXT
#else
#define  NET_ICMP_EXT  extern
#endif


/*$PAGE*/
/*
*********************************************************************************************************
*                                               DEFINES
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                                 ICMP TRANSMIT SOURCE QUENCH DEFINES
*********************************************************************************************************
*/

#define  NET_ICMP_TX_SRC_QUENCH_TH_MIN                     1
#define  NET_ICMP_TX_SRC_QUENCH_TH_MAX                   100
#define  NET_ICMP_TX_SRC_QUENCH_TH_DFLT                    5


/*
*********************************************************************************************************
*                                          ICMP FLAG DEFINES
*********************************************************************************************************
*/

                                                                /* ------------------ NET ICMP FLAGS ------------------ */
#define  NET_ICMP_FLAG_NONE                       DEF_BIT_NONE
#define  NET_ICMP_FLAG_USED                       DEF_BIT_00    /* ICMP entry cur used; i.e. NOT in free pool.          */


/*
*********************************************************************************************************
*                                          ICMP TYPE DEFINES
*
* Note(s) : (1) NET_ICMP_TYPE_??? #define values specifically chosen as ASCII representations of the ICMP
*               types.  Memory dumps of ICMP types will display the ICMP TYPE with the chosen ASCII name.
*********************************************************************************************************
*/

                                                                /* ------------------ NET ICMP TYPES ------------------ */
#if     (CPU_CFG_ENDIAN_TYPE == CPU_ENDIAN_TYPE_BIG)
#define  NET_ICMP_TYPE_NONE                       0x4E4F4E45    /* "NONE" in ASCII.                                     */
#define  NET_ICMP_TYPE_TX_SRC_QUENCH              0x54585351    /* "TXSQ" in ASCII.                                     */

#else

#if     (CPU_CFG_DATA_SIZE   == CPU_WORD_SIZE_32)
#define  NET_ICMP_TYPE_NONE                       0x454E4F4E    /* "NONE" in ASCII.                                     */
#define  NET_ICMP_TYPE_TX_SRC_QUENCH              0x51535854    /* "TXSQ" in ASCII.                                     */

#elif   (CPU_CFG_DATA_SIZE   == CPU_WORD_SIZE_16)
#define  NET_ICMP_TYPE_NONE                       0x4F4E454E    /* "NONE" in ASCII.                                     */
#define  NET_ICMP_TYPE_TX_SRC_QUENCH              0x58545153    /* "TXSQ" in ASCII.                                     */

#else                                                           /* Dflt CPU_WORD_SIZE_08.                               */
#define  NET_ICMP_TYPE_NONE                       0x4E4F4E45    /* "NONE" in ASCII.                                     */
#define  NET_ICMP_TYPE_TX_SRC_QUENCH              0x54585351    /* "TXSQ" in ASCII.                                     */

#endif
#endif


/*$PAGE*/
/*
*********************************************************************************************************
*                                     ICMP MESSAGE TYPES & CODES
*
* Note(s) : (1) 'DEST_UNREACH' abbreviated to 'DEST' for ICMP 'Destination Unreachable' message 
*                error codes to enforce ANSI-compliance of 31-character symbol length uniqueness.
*
*           (2) ICMP 'Redirect' & 'Router' messages are NOT supported (see 'net_icmp.h  Note #1').
*
*           (3) ICMP 'Address Mask Request' messages received by this host are NOT supported (see
*               'net_icmp.h  Note #3').
*********************************************************************************************************
*/

                                                                /* ------------------ ICMP MSG TYPES ------------------ */
#define  NET_ICMP_MSG_TYPE_NONE                          255

#define  NET_ICMP_MSG_TYPE_ECHO_REPLY                      0
#define  NET_ICMP_MSG_TYPE_DEST_UNREACH                    3
#define  NET_ICMP_MSG_TYPE_SRC_QUENCH                      4
#define  NET_ICMP_MSG_TYPE_REDIRECT                        5    /* See Note #2.                                         */
#define  NET_ICMP_MSG_TYPE_ECHO_REQ                        8
#define  NET_ICMP_MSG_TYPE_ROUTE_AD                        9    /* See Note #2.                                         */
#define  NET_ICMP_MSG_TYPE_ROUTE_REQ                      10    /* See Note #2.                                         */
#define  NET_ICMP_MSG_TYPE_TIME_EXCEED                    11
#define  NET_ICMP_MSG_TYPE_PARAM_PROB                     12
#define  NET_ICMP_MSG_TYPE_TS_REQ                         13
#define  NET_ICMP_MSG_TYPE_TS_REPLY                       14
#define  NET_ICMP_MSG_TYPE_ADDR_MASK_REQ                  17
#define  NET_ICMP_MSG_TYPE_ADDR_MASK_REPLY                18


                                                                /* ------------------ ICMP MSG CODES ------------------ */
#define  NET_ICMP_MSG_CODE_NONE                          255

#define  NET_ICMP_MSG_CODE_ECHO                            0
#define  NET_ICMP_MSG_CODE_ECHO_REQ                        0
#define  NET_ICMP_MSG_CODE_ECHO_REPLY                      0

#define  NET_ICMP_MSG_CODE_DEST_NET                        0    /* See Note #1.                                         */
#define  NET_ICMP_MSG_CODE_DEST_HOST                       1
#define  NET_ICMP_MSG_CODE_DEST_PROTOCOL                   2
#define  NET_ICMP_MSG_CODE_DEST_PORT                       3
#define  NET_ICMP_MSG_CODE_DEST_FRAG_NEEDED                4
#define  NET_ICMP_MSG_CODE_DEST_ROUTE_FAIL                 5
#define  NET_ICMP_MSG_CODE_DEST_NET_UNKNOWN                6
#define  NET_ICMP_MSG_CODE_DEST_HOST_UNKNOWN               7
#define  NET_ICMP_MSG_CODE_DEST_HOST_ISOLATED              8
#define  NET_ICMP_MSG_CODE_DEST_NET_TOS                   11
#define  NET_ICMP_MSG_CODE_DEST_HOST_TOS                  12

#define  NET_ICMP_MSG_CODE_SRC_QUENCH                      0

#define  NET_ICMP_MSG_CODE_TIME_EXCEED_TTL                 0
#define  NET_ICMP_MSG_CODE_TIME_EXCEED_FRAG_REASM          1

#define  NET_ICMP_MSG_CODE_PARAM_PROB_IP_HDR               0
#define  NET_ICMP_MSG_CODE_PARAM_PROB_OPT_MISSING          1

#define  NET_ICMP_MSG_CODE_TS                              0
#define  NET_ICMP_MSG_CODE_TS_REQ                          0
#define  NET_ICMP_MSG_CODE_TS_REPLY                        0

#define  NET_ICMP_MSG_CODE_ADDR_MASK                       0
#define  NET_ICMP_MSG_CODE_ADDR_MASK_REQ                   0
#define  NET_ICMP_MSG_CODE_ADDR_MASK_REPLY                 0


/*$PAGE*/
/*
*********************************************************************************************************
*                                        ICMP MESSAGE DEFINES
*********************************************************************************************************
*/

#define  NET_ICMP_HDR_SIZE_DFLT                            8

#define  NET_ICMP_HDR_SIZE_DEST_UNREACH                  NET_ICMP_HDR_SIZE_DFLT
#define  NET_ICMP_HDR_SIZE_SRC_QUENCH                    NET_ICMP_HDR_SIZE_DFLT
#define  NET_ICMP_HDR_SIZE_TIME_EXCEED                   NET_ICMP_HDR_SIZE_DFLT
#define  NET_ICMP_HDR_SIZE_PARAM_PROB                    NET_ICMP_HDR_SIZE_DFLT
#define  NET_ICMP_HDR_SIZE_ECHO                          NET_ICMP_HDR_SIZE_DFLT
#define  NET_ICMP_HDR_SIZE_TS                             20
#define  NET_ICMP_HDR_SIZE_ADDR_MASK                      12


#define  NET_ICMP_HDR_NBR_OCTETS_UNUSED                    4
#define  NET_ICMP_HDR_NBR_OCTETS_UNUSED_PARAM_PROB         3


#define  NET_ICMP_MSG_ERR_HDR_SIZE_MIN                   NET_IP_HDR_SIZE_MIN
#define  NET_ICMP_MSG_ERR_HDR_SIZE_MAX                   NET_IP_HDR_SIZE_MAX

#define  NET_ICMP_MSG_ERR_DATA_SIZE_MIN_BITS              64                    /* See RFC #1122, Section 3.2.2.        */
#define  NET_ICMP_MSG_ERR_DATA_SIZE_MIN_OCTETS        (((NET_ICMP_MSG_ERR_DATA_SIZE_MIN_BITS - 1) / DEF_OCTET_NBR_BITS) + 1)

#define  NET_ICMP_MSG_ERR_LEN_MIN                       (NET_ICMP_MSG_ERR_HDR_SIZE_MIN  + NET_ICMP_MSG_ERR_DATA_SIZE_MIN_OCTETS)
#define  NET_ICMP_MSG_ERR_LEN_MAX                       (NET_ICMP_MSG_ERR_HDR_SIZE_MAX  + NET_ICMP_MSG_ERR_DATA_SIZE_MIN_OCTETS)


#define  NET_ICMP_MSG_LEN_MIN_DFLT                       NET_ICMP_HDR_SIZE_DFLT

#define  NET_ICMP_MSG_LEN_MIN_DEST_UNREACH              (NET_ICMP_HDR_SIZE_DEST_UNREACH + NET_ICMP_MSG_ERR_LEN_MIN)
#define  NET_ICMP_MSG_LEN_MIN_SRC_QUENCH                (NET_ICMP_HDR_SIZE_SRC_QUENCH   + NET_ICMP_MSG_ERR_LEN_MIN)
#define  NET_ICMP_MSG_LEN_MIN_TIME_EXCEED               (NET_ICMP_HDR_SIZE_TIME_EXCEED  + NET_ICMP_MSG_ERR_LEN_MIN)
#define  NET_ICMP_MSG_LEN_MIN_PARAM_PROB                (NET_ICMP_HDR_SIZE_PARAM_PROB   + NET_ICMP_MSG_ERR_LEN_MIN)
#define  NET_ICMP_MSG_LEN_MIN_ECHO                       NET_ICMP_HDR_SIZE_ECHO
#define  NET_ICMP_MSG_LEN_MIN_TS                         NET_ICMP_HDR_SIZE_TS
#define  NET_ICMP_MSG_LEN_MIN_ADDR_MASK                  NET_ICMP_HDR_SIZE_ADDR_MASK


#define  NET_ICMP_MSG_LEN_MAX_NONE                    0xFFFF

#define  NET_ICMP_MSG_LEN_MAX_DEST_UNREACH               NET_ICMP_MSG_LEN_MAX_NONE
#define  NET_ICMP_MSG_LEN_MAX_SRC_QUENCH                 NET_ICMP_MSG_LEN_MAX_NONE
#define  NET_ICMP_MSG_LEN_MAX_TIME_EXCEED                NET_ICMP_MSG_LEN_MAX_NONE
#define  NET_ICMP_MSG_LEN_MAX_PARAM_PROB                 NET_ICMP_MSG_LEN_MAX_NONE
#define  NET_ICMP_MSG_LEN_MAX_ECHO                       NET_ICMP_MSG_LEN_MAX_NONE
#define  NET_ICMP_MSG_LEN_MAX_TS                         NET_ICMP_HDR_SIZE_TS
#define  NET_ICMP_MSG_LEN_MAX_ADDR_MASK                  NET_ICMP_HDR_SIZE_ADDR_MASK


#define  NET_ICMP_MSG_PTR_NONE                           255

#define  NET_ICMP_MSG_PTR_MIN_PARAM_PROB                 NET_ICMP_MSG_LEN_MIN_DFLT

⌨️ 快捷键说明

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