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