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

📄 net_ip.h

📁 ucos的tcpip协议占
💻 H
📖 第 1 页 / 共 4 页
字号:
*
* Note(s) : (1) 'NET_IP_OPT_CFG_ROUTE_TS' data type used to configure IP Route & Internet Timestamp transmit 
*               options :
*
*               (a) Type        specifies the desired IP option configuration type
*               (b) Nbr         specifies the desired number of option entries to allocate
*               (c) Route       specifies the desired IP addresses for Route or Internet Timestamp
*               (d) TS          specifies the desired Internet Timestamps
*********************************************************************************************************
*/

typedef  struct  net_ip_opt_cfg_route_ts {
    NET_TYPE            Type;                                   /* IP opt type.                                         */
    CPU_INT08U          Nbr;                                    /* IP opt nbr.                                          */
    NET_IP_ADDR         Route[NET_IP_OPT_PARAM_NBR_MAX];        /* IP route addrs.                                      */
    NET_TS              TS[NET_IP_OPT_PARAM_NBR_MAX];           /* IP TS's.                                             */
    void               *NextOptPtr;                             /* Ptr to next IP opt cfg.                              */
} NET_IP_OPT_CFG_ROUTE_TS;


/*
*********************************************************************************************************
*                             IP SECURITY OPTIONS CONFIGURATION DATA TYPE
*
* Note(s) : (1) IP Security options NOT currently supported (see 'net_ip.h  Note #1f').
*********************************************************************************************************
*/

typedef  struct  net_ip_opt_cfg_security {
    NET_TYPE            Type;                                   /* IP opt type.                                         */

    void               *NextOptPtr;                             /* Ptr to next IP cfg opt.                              */
} NET_IP_OPT_CFG_SECURITY;


/*$PAGE*/
/*
*********************************************************************************************************
*                                          GLOBAL VARIABLES
*********************************************************************************************************
*/

NET_IP_EXT  NET_IP_ADDR    NetIP_AddrThisHost;                  /* This host's IP addr      (see 'net_ip.h  Note #1a'). */
NET_IP_EXT  NET_IP_ADDR    NetIP_AddrThisHostNetOrder;          /* This host's IP addr in net-order.                    */
NET_IP_EXT  NET_IP_ADDR    NetIP_AddrThisHostSubnetMask;        /* This host's IP subnet net  mask.                     */
NET_IP_EXT  NET_IP_ADDR    NetIP_AddrThisHostSubnetMaskHost;    /* This host's IP subnet host mask.                     */
NET_IP_EXT  NET_IP_ADDR    NetIP_AddrThisHostSubnetNet;         /* This host's IP subnet      net.                      */
NET_IP_EXT  NET_IP_ADDR    NetIP_AddrDfltGateway;               /* This host's dflt gateway (see 'net_ip.h  Note #1c'). */


NET_IP_EXT  NET_BUF       *NetIP_FragReasmListsHead;            /* Ptr to head of frag reassembly lists.                */
NET_IP_EXT  NET_BUF       *NetIP_FragReasmListsTail;            /* Ptr to tail of frag reassembly lists.                */

NET_IP_EXT  CPU_INT08U     NetIP_FragReasmTimeout_sec;          /* IP frag reasm timeout (in secs ).                    */
NET_IP_EXT  NET_TMR_TICK   NetIP_FragReasmTimeout_tick;         /* IP frag reasm timeout (in ticks).                    */


NET_IP_EXT  CPU_INT16U     NetIP_TxIDCtr;                       /* Global tx ID field ctr.                              */



#if (NET_CTR_CFG_STAT_EN   == DEF_ENABLED)                      /* ------------------- NET IP STATS ------------------- */
NET_IP_EXT  NET_CTR        NetIP_StatRxPktCtr;                  /* Nbr rx'd datagrams.                                  */
NET_IP_EXT  NET_CTR        NetIP_StatRxDatagramProcessedCtr;    /* Nbr rx'd datagrams delivered to supported protocols. */

NET_IP_EXT  NET_CTR        NetIP_StatRxDestLocalCtr;            /* Nbr rx'd datagrams from localhost.                   */
NET_IP_EXT  NET_CTR        NetIP_StatRxDestBroadcastCtr;        /* Nbr rx'd datagrams broadcast to this dest.           */

NET_IP_EXT  NET_CTR        NetIP_StatRxFragCtr;                 /* Nbr rx'd frags.                                      */
NET_IP_EXT  NET_CTR        NetIP_StatRxFragDatagramReasmCtr;    /* Nbr rx'd frag'd datagrams reassembled.               */


NET_IP_EXT  NET_CTR        NetIP_StatTxDatagramCtr;             /* Nbr tx'd datagrams.                                  */
NET_IP_EXT  NET_CTR        NetIP_StatTxDestLocalCtr;            /* Nbr tx'd datagrams           to localhost.           */
NET_IP_EXT  NET_CTR        NetIP_StatTxDestBroadcastCtr;        /* Nbr tx'd datagrams broadcast to dest(s).             */
#endif


/*$PAGE*/
#if (NET_CTR_CFG_ERR_EN    == DEF_ENABLED)                      /* ------------------- NET IP ERRS -------------------- */
NET_IP_EXT  NET_CTR        NetIP_ErrNullPtrCtr;                 /* Nbr null IP ptr accesses.                            */


NET_IP_EXT  NET_CTR        NetIP_ErrCfgAddrThisHostCtr;         /* Nbr cfg invalid host         addr.                   */
NET_IP_EXT  NET_CTR        NetIP_ErrCfgAddrDfltGatewayCtr;      /* Nbr cfg invalid dflt gateway addr.                   */


NET_IP_EXT  NET_CTR        NetIP_ErrRxHdrVerCtr;                /* Nbr rx'd datagrams with invalid IP ver.              */
NET_IP_EXT  NET_CTR        NetIP_ErrRxHdrLenCtr;                /* Nbr rx'd datagrams with invalid hdr len.             */
NET_IP_EXT  NET_CTR        NetIP_ErrRxHdrTotLenCtr;             /* Nbr rx'd datagrams with invalid/inconsistent tot len.*/
NET_IP_EXT  NET_CTR        NetIP_ErrRxHdrFlagsCtr;              /* Nbr rx'd datagrams with invalid flags.               */
NET_IP_EXT  NET_CTR        NetIP_ErrRxHdrFragCtr;               /* Nbr rx'd datagrams with invalid fragmentation.       */
NET_IP_EXT  NET_CTR        NetIP_ErrRxHdrProtocolCtr;           /* Nbr rx'd datagrams with unknown/unsupported protocol.*/
NET_IP_EXT  NET_CTR        NetIP_ErrRxHdrChkSumCtr;             /* Nbr rx'd datagrams with invalid chk sum.             */
NET_IP_EXT  NET_CTR        NetIP_ErrRxHdrAddrSrcCtr;            /* Nbr rx'd datagrams with invalid src addr.            */
NET_IP_EXT  NET_CTR        NetIP_ErrRxHdrOptsCtr;               /* Nbr rx'd datagrams with unknown/invalid opts.        */
NET_IP_EXT  NET_CTR        NetIP_ErrRxHdrOptsBufNoneAvailCtr;   /* Nbr rx'd datagrams with no options buf avail.        */
NET_IP_EXT  NET_CTR        NetIP_ErrRxHdrOptsBufWrCtr;          /* Nbr rx'd datagrams with wr options buf err.          */

NET_IP_EXT  NET_CTR        NetIP_ErrRxDestCtr;                  /* Nbr rx'd datagrams NOT for this IP dest.             */
NET_IP_EXT  NET_CTR        NetIP_ErrRxDestBroadcastCtr;         /* Nbr rx'd datagrams illegally broadcast to this dest. */

NET_IP_EXT  NET_CTR        NetIP_ErrRxFragDiscardedCtr;         /* Nbr rx'd frags            discarded (duplicates).    */
NET_IP_EXT  NET_CTR        NetIP_ErrRxFragDatagramDiscardedCtr; /* Nbr rx'd frag'd datagrams discarded (overlaps).      */
NET_IP_EXT  NET_CTR        NetIP_ErrRxFragDatagramTimeoutCtr;   /* Nbr rx'd frag'd datagrams discarded (timeouts).      */

NET_IP_EXT  NET_CTR        NetIP_ErrRxPktDiscardedCtr;          /* Nbr rx'd datagrams discarded.                        */


NET_IP_EXT  NET_CTR        NetIP_ErrTxProtocolCtr;              /* Nbr tx   pkts with unknown/unsupported protocol.     */
NET_IP_EXT  NET_CTR        NetIP_ErrTxOptTypeCtr;               /* Nbr tx   pkts with invalid opt type.                 */

NET_IP_EXT  NET_CTR        NetIP_ErrTxDestCtr;                  /* Nbr tx   datagrams with invalid dest addr.           */

NET_IP_EXT  NET_CTR        NetIP_ErrTxPktDiscardedCtr;          /* Nbr tx   datagrams discarded.                        */


#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
NET_IP_EXT  NET_CTR        NetIP_ErrRxInvalidBufIxCtr;          /* Nbr rx   pkts  with invalid buf ix.                  */

NET_IP_EXT  NET_CTR        NetIP_ErrRxHdrDataLenCtr;            /* Nbr rx'd datagrams with invalid data len.            */

NET_IP_EXT  NET_CTR        NetIP_ErrRxFragFlagsCtr;             /* Nbr rx'd frags with invalid flag(s).                 */
NET_IP_EXT  NET_CTR        NetIP_ErrRxFragOffsetCtr;            /* Nbr rx'd frags with invalid offset.                  */
NET_IP_EXT  NET_CTR        NetIP_ErrRxFragSizeCtr;              /* Nbr rx'd frags with invalid size.                    */


NET_IP_EXT  NET_CTR        NetIP_ErrTxInvalidBufIxCtr;          /* Nbr tx   pkts  with invalid buf ix.                  */

NET_IP_EXT  NET_CTR        NetIP_ErrTxHdrTOS_Ctr;               /* Nbr tx   datagrams with invalid TOS.                 */
NET_IP_EXT  NET_CTR        NetIP_ErrTxHdrDataLenCtr;            /* Nbr tx   datagrams with invalid protocol/data len.   */
NET_IP_EXT  NET_CTR        NetIP_ErrTxHdrAddrSrcCtr;            /* Nbr tx   datagrams with invalid src  addr.           */
NET_IP_EXT  NET_CTR        NetIP_ErrTxHdrAddrDestCtr;           /* Nbr tx   datagrams with invalid dest addr.           */
NET_IP_EXT  NET_CTR        NetIP_ErrTxHdrFlagsCtr;              /* Nbr tx   datagrams with invalid flags.               */
NET_IP_EXT  NET_CTR        NetIP_ErrTxHdrOptLenCtr;             /* Nbr tx   datagrams with invalid opt len.             */
NET_IP_EXT  NET_CTR        NetIP_ErrTxHdrOptCfgCtr;             /* Nbr tx   datagrams with invalid opt cfg.             */
#endif

#if 0                                                           /* #### NOT currently implemented.                      */
                                                                /* See 'net_ip.h  Note #1e' :                           */
NET_IP_EXT  NET_CTR        NetIP_ErrTxFragDiscardedCtr;         /* Nbr tx pseudo-frags discarded (lack resources).      */
NET_IP_EXT  NET_CTR        NetIP_ErrTxFragDiscardedDontFragCtr; /* Nbr tx pseudo-frags discarded ('Don't Frag' set).    */
#endif

#endif


/*$PAGE*/
/*
*********************************************************************************************************
*                                               MACRO'S
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                                          NET_IP_TX_GET_ID()
*
* Description : Get next IP transmit identification number.
*
* Argument(s) : id      Variable that will receive the returned IP transmit identification number.
*
* Return(s)   : none.
*
* Caller(s)   : NetIP_TxPktPrepareHdr(),
*               NetIP_ReTxPktPrepareHdr().
*
*               This macro is an INTERNAL network protocol suite macro & SHOULD NOT be called by 
*               application function(s).
*
* Note(s)     : (1) Return IP identification number is NOT converted from host-order to network-order.
*
*               (2) ALL functions which call NET_IP_TX_GET_ID() MUST declare local variable 'cpu_sr' if
*                   critical section method is configured as CPU_CRITICAL_METHOD_STATUS_LOCAL :
*
*                       #if (CPU_CFG_CRITICAL_METHOD == CPU_CRITICAL_METHOD_STATUS_LOCAL)
*                            CPU_SR  cpu_sr;
*                       #endif
*
*                   (a) #### Macro require critical section for exclusive access?
*********************************************************************************************************
*/

#define  NET_IP_TX_GET_ID(id)                       { CPU_CRITICAL_ENTER();                        \
                                                      NET_UTIL_VAL_COPY_16(&(id), &NetIP_TxIDCtr); \
                                                      NetIP_TxIDCtr++;                             \
                                                      CPU_CRITICAL_EXIT();                         }


/*$PAGE*/
/*
*********************************************************************************************************
*                                         FUNCTION PROTOTYPES
*********************************************************************************************************
*/

void          NetIP_Init                 (void);


                                                                            /* -------------- CFG FNCTS --------------- */
CPU_BOOLEAN   NetIP_CfgAddrThisHost      (NET_IP_ADDR   addr_host,
                                          NET_IP_ADDR   addr_subnet_mask);

CPU_BOOLEAN   NetIP_CfgAddrDfltGateway   (NET_IP_ADDR   addr_dflt_gateway);

CPU_BOOLEAN   NetIP_CfgFragReasmTimeout  (CPU_INT08U    timeout_sec);


                                                                            /* -------------- GET FNCTS --------------- */
NET_IP_ADDR   NetIP_GetAddrThisHost      (void);

NET_IP_ADDR   NetIP_GetAddrDfltGateway   (void);

CPU_CHAR     *NetIP_GetAddrStrThisHost   (CPU_CHAR     *paddr);

CPU_CHAR     *NetIP_GetAddrStrDfltGateway(CPU_CHAR     *paddr);


                                                                            /* ------------- STATUS FNCTS ------------- */
CPU_BOOLEAN   NetIP_IsValidAddrHost      (NET_IP_ADDR   addr_host);         /* Validate an IP host addr.                */

CPU_BOOLEAN   NetIP_IsValidAddrThisHost  (NET_IP_ADDR   addr_host,          /* Validate this  host's IP addr.           */
                                          NET_IP_ADDR   addr_subnet_mask);
                                                                            /* Validate an IP addr subnet mask.         */
CPU_BOOLEAN   NetIP_IsValidAddrSubnetMask(NET_IP_ADDR   addr_subnet_mask);



                                                                            /* --------------- RX FNCTS --------------- */
void          NetIP_Rx                   (NET_BUF      *pbuf,
                                          NET_ERR      *perr);


                                                                            /* --------------- TX FNCTS --------------- */
void          NetIP_Tx                   (NET_BUF      *pbuf,               /* Prepare & tx IP pkts.                    */
                                          NET_IP_ADDR   addr_src,
                                          NET_IP_ADDR   addr_dest,
                                          NET_IP_TOS    TOS,
                                          NET_IP_TTL    TTL,
                                          CPU_INT16U    flags,
                                          void         *popts,
                                          NET_ERR      *perr);

void          NetIP_ReTx                 (NET_BUF      *pbuf,               /* Prepare & re-tx IP pkts.                 */
                                          NET_ERR      *perr);


/*$PAGE*/
/*
*********************************************************************************************************
*                                        CONFIGURATION ERRORS
*********************************************************************************************************
*/
	 	 			 		    	 				 	    	 	 	 		    	     	 	 	 		 	  	  	  	     	 	      	   		 	 	 	   		   			 	     			  			 		   	 			       	  	 		  	 	  	 		 		   		  	  			 	  	 		 	 	 			 	 		 		 	 		 	   		 	 	 	   		     			  			 		  	 		 	  			 	 	 	 	  		  	   		   	   	 				 		 			 			  			 		   		 		 				 		 	    		   	  		 

⌨️ 快捷键说明

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