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

📄 net_ip.h

📁 uCOS-II V2.84 LM3S6965 TCPIP Demo
💻 H
📖 第 1 页 / 共 4 页
字号:

/*
*********************************************************************************************************
*                                  IP HEADER PROTOCOL FIELD DEFINES
*
* Note(s) : (1) See 'IP HEADER  Note #5'.
*********************************************************************************************************
*/

#define  NET_IP_HDR_PROTOCOL_ICMP                          1
#define  NET_IP_HDR_PROTOCOL_TCP                           6
#define  NET_IP_HDR_PROTOCOL_UDP                          17


/*$PAGE*/
/*
*********************************************************************************************************
*                                         IP ADDRESS DEFINES
*
* Note(s) : (1) See the following RFC's for IP address summary :
*
*               (a) RFC # 791, Section 3.2     'Addressing'
*               (b) RFC #1122, Section 3.2.1.3
*
*           (2) (a) (1) Supports IP Class A, B, & C Network addresses ONLY.
*
*                   (2) RFC #1519 states that "the concept of network 'class' needs to be deprecated"
*                       (Section 4.1) in order to "support classless network destinations" which will 
*                       "permit arbitrary super/subnetting of the remaining class A and class B [and 
*                       class C] address space (the assumption being that classless ... non-contiguous 
*                       subnets ... will be contained within a single ... domain)" (Section 2.2).
*
*                       However, despite the aggregated, classless network address space; individual
*                       class definitions MUST still be used to validate IP addresses as within the
*                       network address space -- versus multicast, reserved, or experimental addresses.
*
*               (b) IP Class D Multicast addresses NOT supported (see 'net_ip.h  Note #1d').
*
*           (3) RFC #950, Section 2.1 states that "the bits that identify the subnet ... need not be adjacent
*               in the address.  However, we recommend that the subnet bits be contiguous and located as the
*               most significant bits of the local address".
*
*               Therefore, it is assumed that at least the most significant bit of the network portion of
*               the subnet address SHOULD be set.
*
*           (4) Currently supports limited & directed-network broadcast ONLY :
*
*               (a) Limited          Broadcast      255.255.255.255     See RFC #1122, Section 3.2.1.3.(c)
*               (b) Directed-Network Broadcast        <net>.<-1>        See RFC #1122, Section 3.2.1.3.(d)
*               (c) Directed-Subnet  Broadcast   <net>.<subnet >.<-1>   See RFC #1122, Section 3.2.1.3.(e)
*
*               #### Directed-subnets broadcasts NOT currently supported :
*
*               (d) Directed-Subnets Broadcast   <net>.<subnets>.<-1>   See RFC #1122, Section 3.2.1.3.(f)
*
*           (5) NET_IP_ADDR_THIS_HOST/NET_IP_ADDR_BROADCAST  ideally #define'd as 'NET_IP_ADDR' values; 
*               declared as 'CPU_INT32U' because 'NET_IP_ADDR' NOT defined at time of #define'tion.
*
*               NET_IP_ADDR_THIS_HOST/NET_IP_ADDR_BROADCAST  #define's expressed in dotted-decimal notation :
*
*                     ww.xx.yy.zz
*
*                        #define'd as
*
*                  (((CPU_INT32U) ww << 24) | \
*                   ((CPU_INT32U) xx << 16) | \
*                   ((CPU_INT32U) yy <<  8) | \
*                   ((CPU_INT32U) zz <<  0))
*********************************************************************************************************
*/
/*$PAGE*/
                                                                        /* See Note #5; RFC #1122, Section 3.2.1.3.(a). */
#define  NET_IP_ADDR_THIS_HOST             (((CPU_INT32U)  0 << 24) | \
                                            ((CPU_INT32U)  0 << 16) | \
                                            ((CPU_INT32U)  0 <<  8) | \
                                            ((CPU_INT32U)  0 <<  0))

                                                                        /* See Note #5; RFC #1122, Section 3.2.1.3.(c). */
#define  NET_IP_ADDR_BROADCAST             (((CPU_INT32U)255 << 24) | \
                                            ((CPU_INT32U)255 << 16) | \
                                            ((CPU_INT32U)255 <<  8) | \
                                            ((CPU_INT32U)255 <<  0))

#define  NET_IP_ADDR_NONE                     NET_IP_ADDR_THIS_HOST


#define  NET_IP_ADDR_CLASS_A_MASK                 0x80000000
#define  NET_IP_ADDR_CLASS_A                      0x00000000
#define  NET_IP_ADDR_CLASS_A_MASK_NET             0xFF000000
#define  NET_IP_ADDR_CLASS_A_MASK_HOST            0x00FFFFFF

#define  NET_IP_ADDR_CLASS_B_MASK                 0xC0000000
#define  NET_IP_ADDR_CLASS_B                      0x80000000
#define  NET_IP_ADDR_CLASS_B_MASK_NET             0xFFFF0000
#define  NET_IP_ADDR_CLASS_B_MASK_HOST            0x0000FFFF

#define  NET_IP_ADDR_CLASS_C_MASK                 0xE0000000
#define  NET_IP_ADDR_CLASS_C                      0xC0000000
#define  NET_IP_ADDR_CLASS_C_MASK_NET             0xFFFFFF00
#define  NET_IP_ADDR_CLASS_C_MASK_HOST            0x000000FF


#define  NET_IP_ADDR_CLASS_SUBNET_MASK            0x80000000            /* See Note #3.                                 */


#define  NET_IP_ADDR_LOCAL_HOST_ADDR              0x7F000001            /* Typical dflt local host addr.                */
#define  NET_IP_ADDR_LOCAL_HOST_MASK              0xFF000000
#define  NET_IP_ADDR_LOCAL_HOST                   0x7F000000
#define  NET_IP_ADDR_LOCAL_HOST_MASK_NET          0xFF000000
#define  NET_IP_ADDR_LOCAL_HOST_MASK_HOST         0x00FFFFFF


/*$PAGE*/
/*
*********************************************************************************************************
*                                      IP HEADER OPTIONS DEFINES
*
* Note(s) : (1) See the following RFC's for IP options summary :
*
*               (a) RFC # 791, Section 3.1     'Options'
*               (b) RFC #1122, Section 3.2.1.8
*               (c) RFC #1108
*
*           (2) IP option types are coded in the first octet for each IP option as follows :
*
*                         7   6 5  4 3 2 1 0
*                       ---------------------
*                       |CPY|CLASS|  N B R  |
*                       ---------------------
*
*                   where
*                           CPY         Indicates whether option is copied into all fragments :
*                                           '0' - IP option NOT copied into fragments
*                                           '1' - IP option     copied into fragments
*                           CLASS       Indicates options class :
*                                           '00' - Control
*                                           '01' - Reserved
*                                           '10' - Debug / Measurement
*                                           '11' - Reserved
*                           NBR         Option Number :
*                                           '00000' - End of Options List
*                                           '00001' - No Operation
*                                           '00010' - Security
*                                           '00011' - Loose  Source Routing
*                                           '00100' - Internet Timestamp
*                                           '00111' - Record Route
*                                           '01001' - Strict Source Routing
*
*           (3) IP header allows for a maximum option list length of ten (10) 32-bit options :
*
*                   NET_IP_HDR_OPT_SIZE_MAX = (NET_IP_HDR_SIZE_MAX - NET_IP_HDR_SIZE_MIN) / NET_IP_HDR_OPT_SIZE_WORD
*
*                                           = (60 - 20) / (32-bits)
*
*                                           =  Ten (10) 32-bit options
*
*           (4) Data type MUST be globally declared PRIOR to certain dependent #define's.
*********************************************************************************************************
*/
/*$PAGE*/
#define  NET_IP_HDR_OPT_COPY_FLAG                 DEF_BIT_07

#define  NET_IP_HDR_OPT_CLASS_MASK                      0x60
#define  NET_IP_HDR_OPT_CLASS_CTRL                      0x00
#define  NET_IP_HDR_OPT_CLASS_RESERVED_1                0x20
#define  NET_IP_HDR_OPT_CLASS_DBG                       0x40
#define  NET_IP_HDR_OPT_CLASS_RESERVED_2                0x60

#define  NET_IP_HDR_OPT_NBR_MASK                        0x1F
#define  NET_IP_HDR_OPT_NBR_END_LIST                    0x00
#define  NET_IP_HDR_OPT_NBR_NOP                         0x01
#define  NET_IP_HDR_OPT_NBR_SECURITY                    0x02    /* See 'net_ip.h  Note #1f'.                            */
#define  NET_IP_HDR_OPT_NBR_ROUTE_SRC_LOOSE             0x03
#define  NET_IP_HDR_OPT_NBR_SECURITY_EXTENDED           0x05    /* See 'net_ip.h  Note #1f'.                            */
#define  NET_IP_HDR_OPT_NBR_TS                          0x04
#define  NET_IP_HDR_OPT_NBR_ROUTE_REC                   0x07
#define  NET_IP_HDR_OPT_NBR_ROUTE_SRC_STRICT            0x09

#define  NET_IP_HDR_OPT_END_LIST             (                           NET_IP_HDR_OPT_CLASS_CTRL | NET_IP_HDR_OPT_NBR_END_LIST         )
#define  NET_IP_HDR_OPT_NOP                  (                           NET_IP_HDR_OPT_CLASS_CTRL | NET_IP_HDR_OPT_NBR_NOP              )
#define  NET_IP_HDR_OPT_SECURITY             (NET_IP_HDR_OPT_COPY_FLAG | NET_IP_HDR_OPT_CLASS_CTRL | NET_IP_HDR_OPT_NBR_SECURITY         )
#define  NET_IP_HDR_OPT_ROUTE_SRC_LOOSE      (NET_IP_HDR_OPT_COPY_FLAG | NET_IP_HDR_OPT_CLASS_CTRL | NET_IP_HDR_OPT_NBR_ROUTE_SRC_LOOSE  )
#define  NET_IP_HDR_OPT_SECURITY_EXTENDED    (NET_IP_HDR_OPT_COPY_FLAG | NET_IP_HDR_OPT_CLASS_CTRL | NET_IP_HDR_OPT_NBR_SECURITY_EXTENDED)
#define  NET_IP_HDR_OPT_TS                   (                           NET_IP_HDR_OPT_CLASS_DBG  | NET_IP_HDR_OPT_NBR_TS               )
#define  NET_IP_HDR_OPT_ROUTE_REC            (                           NET_IP_HDR_OPT_CLASS_CTRL | NET_IP_HDR_OPT_NBR_ROUTE_REC        )
#define  NET_IP_HDR_OPT_ROUTE_SRC_STRICT     (NET_IP_HDR_OPT_COPY_FLAG | NET_IP_HDR_OPT_CLASS_CTRL | NET_IP_HDR_OPT_NBR_ROUTE_SRC_STRICT )

#define  NET_IP_HDR_OPT_PAD                             0x00

                                                                /* ---------------- SRC/REC ROUTE OPTS ---------------- */
#define  NET_IP_OPT_ROUTE_PTR_OPT                          0    /* Ptr ix to       route opt itself.                    */
#define  NET_IP_OPT_ROUTE_PTR_ROUTE                        4    /* Ptr ix to first route (min legal ptr val).           */

                                                                /* --------------------- TS OPTS ---------------------- */
#define  NET_IP_OPT_TS_PTR_OPT                             0    /* Ptr ix to       TS    opt itself.                    */
#define  NET_IP_OPT_TS_PTR_TS                              4    /* Ptr ix to first TS    (min legal ptr val).           */

#define  NET_IP_OPT_TS_OVF_MASK                         0xF0
#define  NET_IP_OPT_TS_OVF_SHIFT                           4
#define  NET_IP_OPT_TS_OVF_MAX                            15

#define  NET_IP_OPT_TS_FLAG_MASK                        0x0F
#define  NET_IP_OPT_TS_FLAG_TS_ONLY                        0
#define  NET_IP_OPT_TS_FLAG_TS_ROUTE_REC                   1
#define  NET_IP_OPT_TS_FLAG_TS_ROUTE_SPEC                  3



typedef  CPU_INT32U  NET_IP_OPT_SIZE;                           /* IP opt size data type (see Note #4).                 */

#define  NET_IP_HDR_OPT_SIZE_WORD                (sizeof(NET_IP_OPT_SIZE))
#define  NET_IP_HDR_OPT_SIZE_MAX                        (NET_IP_HDR_SIZE_MAX - NET_IP_HDR_SIZE_MIN)

#define  NET_IP_HDR_OPT_SIZE_ROUTE                       NET_IP_HDR_OPT_SIZE_WORD
#define  NET_IP_HDR_OPT_SIZE_TS                          NET_IP_HDR_OPT_SIZE_WORD
#define  NET_IP_HDR_OPT_SIZE_SECURITY                      3


#define  NET_IP_HDR_OPT_NBR_MIN                            0
#define  NET_IP_HDR_OPT_NBR_MAX                         (NET_IP_HDR_OPT_SIZE_MAX / NET_IP_HDR_OPT_SIZE_WORD)

#define  NET_IP_OPT_PARAM_NBR_MIN                          1

#define  NET_IP_OPT_PARAM_NBR_MAX_ROUTE                    9
#define  NET_IP_OPT_PARAM_NBR_MAX_TS_ONLY                  9
#define  NET_IP_OPT_PARAM_NBR_MAX_TS_ROUTE                 4

#define  NET_IP_OPT_PARAM_NBR_MAX                          9    /* Max nbr of 'max nbr opts'.                           */


#define  NET_IP_HDR_OPT_IX                               NET_IP_HDR_SIZE_MIN
#define  NET_IP_OPT_IX_RX                                  0


/*$PAGE*/
/*
*********************************************************************************************************
*                                IP OPTION CONFIGURATION TYPE DEFINES
*
* Note(s) : (1) NET_IP_OPT_CFG_TYPE_??? #define values specifically chosen as ASCII representations of
*               the IP option configuration types.  Memory displays of IP option configuration buffers
*               will display the IP option configuration TYPEs with their chosen ASCII names.
*********************************************************************************************************
*/

                                                                /* ----------------- IP OPT CFG TYPES ----------------- */
#if     (CPU_CFG_ENDIAN_TYPE == CPU_ENDIAN_TYPE_BIG)
#define  NET_IP_OPT_CFG_TYPE_NONE                 0x4E4F4E45    /* "NONE" in ASCII.                                     */
#define  NET_IP_OPT_CFG_TYPE_ROUTE_STRICT         0x52545354    /* "RTST" in ASCII.                                     */
#define  NET_IP_OPT_CFG_TYPE_ROUTE_LOOSE          0x52544C53    /* "RTLS" in ASCII.                                     */
#define  NET_IP_OPT_CFG_TYPE_ROUTE_REC            0x52545243    /* "RTRC" in ASCII.                                     */
#define  NET_IP_OPT_CFG_TYPE_TS_ONLY              0x54532020    /* "TS  " in ASCII.                                     */
#define  NET_IP_OPT_CFG_TYPE_TS_ROUTE_REC         0x54535243    /* "TSRC" in ASCII.                                     */
#define  NET_IP_OPT_CFG_TYPE_TS_ROUTE_SPEC        0x54535254    /* "TSRT" in ASCII.                                     */
#define  NET_IP_OPT_CFG_TYPE_SECURITY             0x53454320    /* "SEC " in ASCII (see 'net_ip.h  Note #1f').          */
#define  NET_IP_OPT_CFG_TYPE_SECURITY_EXTENDED    0x53454358    /* "SECX" in ASCII (see 'net_ip.h  Note #1f').          */

#else

#if     (CPU_CFG_DATA_SIZE   == CPU_WORD_SIZE_32)
#define  NET_IP_OPT_CFG_TYPE_NONE                 0x454E4F4E    /* "NONE" in ASCII.                                     */
#define  NET_IP_OPT_CFG_TYPE_ROUTE_STRICT         0x54535452    /* "RTST" in ASCII.                                     */

⌨️ 快捷键说明

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