📄 net_icmp.h
字号:
/* -------------- 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 + -