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

📄 net_icmp.h

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

                                                                /* -------------- NET ICMP TX SRC QUENCH -------------- */
typedef  struct  net_icmp_tx_src_quench {
    NET_TYPE        Type;                                       /* Type cfg'd @ init : NET_ICMP_TYPE_TX_SRC_QUENCH.     */

    void           *PrevPtr;                                    /* Ptr to PREV ICMP tx src quench entry.                */
    void           *NextPtr;                                    /* Ptr to NEXT ICMP tx src quench entry.                */

    NET_IP_ADDR     Addr;                                       /* IP addr to tx src quench err msg.                    */
    CPU_INT16U      TxCtr;                                      /* Ctr limits tx src quench err msgs.                   */

    CPU_INT16U      Flags;
} NET_ICMP_TX_SRC_QUENCH;


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

#if (NET_ICMP_CFG_TX_SRC_QUENCH_EN == DEF_ENABLED)                  /* -------------- ICMP TX SRC QUENCH -------------- */

NET_ICMP_EXT  NET_ICMP_TX_SRC_QUENCH   NetICMP_TxSrcQuenchTbl[NET_ICMP_CFG_TX_SRC_QUENCH_SIZE];
NET_ICMP_EXT  NET_STAT_POOL            NetICMP_TxSrcQuenchPoolStat;

NET_ICMP_EXT  NET_ICMP_TX_SRC_QUENCH  *NetICMP_TxSrcQuenchPoolPtr;  /* Ptr to pool of free ICMP Tx Src Quench entries.  */
NET_ICMP_EXT  NET_ICMP_TX_SRC_QUENCH  *NetICMP_TxSrcQuenchListHead; /* Ptr to head of      ICMP Tx Src Quench List.     */
NET_ICMP_EXT  NET_ICMP_TX_SRC_QUENCH  *NetICMP_TxSrcQuenchListTail; /* Ptr to tail of      ICMP Tx Src Quench List.     */

NET_ICMP_EXT  CPU_INT16U               NetICMP_TxSrcQuenchTxTh_nbr; /* Nbr of rx'd IP pkts to tx ICMP Src Quench Msg.   */
#endif


NET_ICMP_EXT  CPU_INT16U     NetICMP_TxSeqNbrCtr;               /* Global tx seq nbr field ctr.                         */



#if (NET_CTR_CFG_STAT_EN  == DEF_ENABLED)                       /* ------------------ NET ICMP STATS ------------------ */
NET_ICMP_EXT  NET_CTR        NetICMP_StatRxMsgCtr;              /* Nbr rx'd       msgs.                                 */
NET_ICMP_EXT  NET_CTR        NetICMP_StatRxMsgProcessedCtr;     /* Nbr rx'd       msgs successfully processed.          */
NET_ICMP_EXT  NET_CTR        NetICMP_StatRxMsgErrProcessedCtr;  /* Nbr rx'd err   msgs successfully processed.          */
NET_ICMP_EXT  NET_CTR        NetICMP_StatRxMsgReqProcessedCtr;  /* Nbr rx'd req   msgs successfully processed.          */
NET_ICMP_EXT  NET_CTR        NetICMP_StatRxMsgReplyProcessedCtr;/* Nbr rx'd reply msgs successfully processed.          */

NET_ICMP_EXT  NET_CTR        NetICMP_StatTxMsgCtr;              /* Nbr tx'd       msgs.                                 */
NET_ICMP_EXT  NET_CTR        NetICMP_StatTxMsgErrCtr;           /* Nbr tx'd err   msgs.                                 */
NET_ICMP_EXT  NET_CTR        NetICMP_StatTxMsgReqCtr;           /* Nbr tx'd req   msgs.                                 */
NET_ICMP_EXT  NET_CTR        NetICMP_StatTxMsgReplyCtr;         /* Nbr tx'd reply msgs.                                 */
#endif


#if (NET_CTR_CFG_ERR_EN   == DEF_ENABLED)                       /* ------------------ NET ICMP ERRS ------------------- */
NET_ICMP_EXT  NET_CTR        NetICMP_ErrRxHdrTypeCtr;           /* Nbr rx'd msgs with unknown/invalid      msg type.    */
NET_ICMP_EXT  NET_CTR        NetICMP_ErrRxHdrCodeCtr;           /* Nbr rx'd msgs with unknown/invalid      msg code.    */
NET_ICMP_EXT  NET_CTR        NetICMP_ErrRxHdrMsgLenCtr;         /* Nbr rx'd msgs with invalid/inconsistent msg len.     */
NET_ICMP_EXT  NET_CTR        NetICMP_ErrRxHdrPtrCtr;            /* Nbr rx'd msgs with invalid              msg ptr.     */
NET_ICMP_EXT  NET_CTR        NetICMP_ErrRxHdrChkSumCtr;         /* Nbr rx'd msgs with invalid chk sum.                  */

NET_ICMP_EXT  NET_CTR        NetICMP_ErrRxBroadcastCtr;         /* Nbr rx'd msg  reqs rx'd via broadcast.               */

NET_ICMP_EXT  NET_CTR        NetICMP_ErrRxPktDiscardedCtr;      /* Nbr rx'd msgs discarded.                             */


NET_ICMP_EXT  NET_CTR        NetICMP_ErrTxInvalidLenCtr;        /* Nbr tx   pkts discarded for invalid len.             */

NET_ICMP_EXT  NET_CTR        NetICMP_ErrTxHdrTypeCtr;           /* Nbr tx   msgs with unknown/invalid msg type.         */
NET_ICMP_EXT  NET_CTR        NetICMP_ErrTxHdrCodeCtr;           /* Nbr tx   msgs with unknown/invalid msg code.         */

NET_ICMP_EXT  NET_CTR        NetICMP_ErrTxPktDiscardedCtr;      /* Nbr tx   msgs discarded.                             */


#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
NET_ICMP_EXT  NET_CTR        NetICMP_ErrNullPtrCtr;             /* Nbr null   ICMP ptr                 accesses.        */
NET_ICMP_EXT  NET_CTR        NetICMP_ErrNotUsedCtr;             /* Nbr unused ICMP tx src quench entry accesses.        */

NET_ICMP_EXT  NET_CTR        NetICMP_ErrInvalidTypeCtr;         /* Nbr ICMP tx src quench entries with invalid type.    */


NET_ICMP_EXT  NET_CTR        NetICMP_ErrRxInvalidBufIxCtr;      /* Nbr rx   pkts with invalid buf ix.                   */

NET_ICMP_EXT  NET_CTR        NetICMP_ErrRxHdrDataLenCtr;        /* Nbr rx'd msgs with invalid msg data len.             */ 


NET_ICMP_EXT  NET_CTR        NetICMP_ErrTxInvalidBufIxCtr;      /* Nbr tx   pkts with invalid buf ix.                   */

NET_ICMP_EXT  NET_CTR        NetICMP_ErrTxHdrPtrCtr;            /* Nbr tx   msgs with invalid msg ptr.                  */
#endif


#if (NET_ICMP_CFG_TX_SRC_QUENCH_EN == DEF_ENABLED)
NET_ICMP_EXT  NET_CTR        NetICMP_ErrNoneAvailCtr;           /* No tx src quench entries avail.                      */
#endif

#endif


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

/*
*********************************************************************************************************
*                                      NET_ICMP_TX_GET_SEQ_NBR()
*
* Description : Get next ICMP transmit message sequence number.
*
* Argument(s) : seq_nbr     Variable that will receive the returned ICMP transmit message sequence number.
*
* Return(s)   : none.
*
* Caller(s)   : NetICMP_TxMsgReq().
*
*               This macro is an INTERNAL network protocol suite macro & SHOULD NOT be called by 
*               application function(s).
*
* Note(s)     : (1) Return ICMP sequence number is NOT converted from host-order to network-order.
*
*               (2) ALL functions which call NET_ICMP_TX_GET_SEQ_NBR() 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_ICMP_TX_GET_SEQ_NBR(seq_nbr)           { CPU_CRITICAL_ENTER();                                   \
                                                      NET_UTIL_VAL_COPY_16(&(seq_nbr), &NetICMP_TxSeqNbrCtr); \
                                                      NetICMP_TxSeqNbrCtr++;                                  \
                                                      CPU_CRITICAL_EXIT();                                    }


/*
*********************************************************************************************************
*                                         FUNCTION PROTOTYPES
*
* Note(s) : (1) See 'net_os.c    NetOS_ICMP_TxMsgReq()  Note #1' &
*                   'net_icmp.c  NetICMP_TxMsgReq()     Note #3'.
*********************************************************************************************************
*/

void                 NetICMP_Init            (void);


#if (NET_ICMP_CFG_TX_SRC_QUENCH_EN == DEF_ENABLED)
CPU_BOOLEAN          NetICMP_CfgTxSrcQuenchTh(CPU_INT16U   th);
#endif



void                 NetICMP_Rx              (NET_BUF     *pbuf,
                                              NET_ERR     *perr);



void                 NetICMP_TxMsgErr        (NET_BUF     *pbuf,
                                              CPU_INT08U   type,
                                              CPU_INT08U   code,
                                              CPU_INT08U   ptr,
                                              NET_ERR     *perr);

NET_ICMP_REQ_ID_SEQ  NetICMP_TxMsgReq        (CPU_INT08U    type,           /* See Note #1.                             */
                                              CPU_INT08U    code,
                                              CPU_INT16U    id,
                                              NET_IP_TOS    TOS,
                                              NET_IP_TTL    TTL,
                                              NET_IP_ADDR   addr_dest,
                                              CPU_INT16U    flags,
                                              void         *popts,
                                              void         *p_data,
                                              CPU_INT16U    data_len,
                                              NET_ERR      *perr);



void                 NetICMP_HandlerRx       (NET_BUF      *pbuf);


/*
*********************************************************************************************************
*                                         FUNCTION PROTOTYPES
*                                      DEFINED IN OS'S  net_os.c
*
* Note(s) : (1) See 'net_os.c    NetOS_ICMP_TxMsgReq()  Note #1' &
*                   'net_icmp.c  NetICMP_TxMsgReq()     Note #3'.
*********************************************************************************************************
*/

NET_ICMP_REQ_ID_SEQ  NetOS_ICMP_TxMsgReq     (CPU_INT08U    type,           /* See Note #1.                             */
                                              CPU_INT08U    code,
                                              NET_IP_TOS    TOS,
                                              NET_IP_TTL    TTL,
                                              NET_IP_ADDR   addr_dest,
                                              CPU_INT16U    flags,
                                              void         *popts,
                                              void         *p_data,
                                              CPU_INT16U    data_len,
                                              NET_ERR      *perr);

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

#ifndef  NET_ICMP_CFG_TX_SRC_QUENCH_EN
#error  "NET_ICMP_CFG_TX_SRC_QUENCH_EN          not #define'd in 'net_cfg.h'"
#error  "                                 [MUST be  DEF_DISABLED]           "
#error  "                                 [     ||  DEF_ENABLED ]           "

#elif  ((NET_ICMP_CFG_TX_SRC_QUENCH_EN != DEF_DISABLED) && \
        (NET_ICMP_CFG_TX_SRC_QUENCH_EN != DEF_ENABLED ))
#error  "NET_ICMP_CFG_TX_SRC_QUENCH_EN    illegally #define'd in 'net_cfg.h'"
#error  "                                 [MUST be  DEF_DISABLED]           "
#error  "                                 [     ||  DEF_ENABLED ]           "

#elif   (NET_ICMP_CFG_TX_SRC_QUENCH_EN == DEF_ENABLED)


#ifndef  NET_ICMP_CFG_TX_SRC_QUENCH_SIZE
#error  "NET_ICMP_CFG_TX_SRC_QUENCH_SIZE        not #define'd in 'net_cfg.h'"
#error  "                                 [MUST be  >     0]                "
#error  "                                 [     &&  < 65536]                "
#elif  ((NET_ICMP_CFG_TX_SRC_QUENCH_SIZE <                   1) || \
        (NET_ICMP_CFG_TX_SRC_QUENCH_SIZE > DEF_INT_16U_MAX_VAL))
#error  "NET_ICMP_CFG_TX_SRC_QUENCH_SIZE  illegally #define'd in 'net_cfg.h'"
#error  "                                 [MUST be  >     0]                "
#error  "                                 [     &&  < 65536]                "
#endif


#endif
	 	 			 		    	 				 	    	 	 	 		    	     	 	 	 		 	  	  	  	     	 	      	   		 	 	 	   		   			 	     			  			 		   	 			       	  	 		  	 	  	 		 		   		  	  			 	  	 		 	 	 			 	 		 		 	 		 	   		 	 	 	   		     			  			 		  	 		 	  			 	 	 	 	  		  	   		   	   	 				 		 			 			  			 		   		 		 				 		 	    		   	  		 

⌨️ 快捷键说明

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