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

📄 net_ip.c

📁 从Luminary官方网站下载的LM3S6000系列的UCos+Tcp/IP的源码, 经本人稍微修改后可直接在IAR6.2下编译通过,里面包括了LM3S6000系列的所有外设UART, PWn....
💻 C
📖 第 1 页 / 共 5 页
字号:
             return;                                            /* Prevent 'break NOT reachable' compiler warning.      */
    }
}


/*$PAGE*/
/*
*********************************************************************************************************
*                                             NetIP_Tx()
*
* Description : (1) Prepare & transmit packets from transport protocol layers to network interface layer :
*
*                   (a) Validate  transmit packet
*                   (b) Prepare & transmit packet datagram
*                   (c) Update    transmit statistics
*
*
* Argument(s) : pbuf        Pointer to network buffer to transmit IP packet.
*
*               addr_src    Source      IP address.
*
*               addr_dest   Destination IP address.
*
*               TOS         Specific TOS to transmit IP packet
*                               (see 'net_ip.h  IP HEADER TYPE OF SERVICE (TOS) DEFINES').
*
*               TTL         Specific TTL to transmit IP packet (see RFC #1122, Section 3.2.1.7) :
*
*                               NET_IP_HDR_TTL_MIN        1     minimum TTL transmit value
*                               NET_IP_HDR_TTL_MAX      255     maximum TTL transmit value
*                               NET_IP_HDR_TTL_DFLT             default TTL transmit value
*                               NET_IP_HDR_TTL_NONE       0     replace with default TTL
*
*               flags       Flags to select transmit options; bit-field flags logically OR'd :
*
*                               NET_IP_FLAG_NONE                No  IP transmit flags selected.
*                               NET_IP_FLAG_TX_DONT_FRAG        Set IP 'Don't Frag' flag.
*
*               popts       Pointer to one or more IP options configuration data structures :
*
*                               NULL                            NO IP transmit options configuration.
*                               NET_IP_OPT_CFG_ROUTE_TS         Route &/or Internet Timestamp options configuration.
*                               NET_IP_OPT_CFG_SECURITY         Security options configuration
*                                                                   (see 'net_ip.c  Note #1f').
*
*               perr        Pointer to variable that will receive the return error code from this function :
*
*                               NET_IP_ERR_NONE                 IP datagram(s) successfully prepared & transmitted
*                                                                   to network interface layer.
*                               NET_ERR_INIT_INCOMPLETE         Network initialization NOT complete.
*
*                                                               ------- RETURNED BY NetIP_TxPktDiscard() : -------
*                               NET_ERR_TX                      Transmit error; packet discarded.
*
* Return(s)   : none.
*
* Caller(s)   : NetICMP_TxMsgErr(),
*               NetICMP_TxMsgReq(),
*               NetICMP_TxMsgReply(),
*               NetUDP_Tx(),
*               NetTCP_TxPkt().
*
*               This function is an INTERNAL network protocol suite function & SHOULD NOT be called by 
*               application function(s).
*
* Note(s)     : (2) NetIP_Tx() blocked until network initialization completes.
*
*               (3) Network buffer already freed by lower layer; only increment error counter.
*********************************************************************************************************
*/
/*$PAGE*/
void  NetIP_Tx (NET_BUF      *pbuf,
                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)
{
#if (((NET_CTR_CFG_STAT_EN     == DEF_ENABLED)                    || \
      (NET_CTR_CFG_ERR_EN      == DEF_ENABLED))                   && \
      (CPU_CFG_CRITICAL_METHOD == CPU_CRITICAL_METHOD_STATUS_LOCAL))
    CPU_SR        cpu_sr;
#endif
    NET_BUF_HDR  *pbuf_hdr;


#if (NET_ERR_CFG_ARG_CHK_EXT_EN == DEF_ENABLED)
    if (Net_InitDone != DEF_YES) {                              /* If init NOT complete, exit tx (see Note #2).         */
       *perr = NET_ERR_INIT_INCOMPLETE;
        return;
    }
#endif


#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)                 /* ------------------- VALIDATE PTR ------------------- */
    if (pbuf == (NET_BUF *)0) {
        NetIP_TxPktDiscard(pbuf, perr);
        NET_CTR_ERR_INC(NetIP_ErrNullPtrCtr);
        return;
    }
#endif


                                                                /* ---------------- VALIDATE TX IP PKT ---------------- */
    pbuf_hdr = &pbuf->Hdr;
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
    NetIP_TxPktValidate(pbuf,
                        pbuf_hdr,
                        addr_src,
                        addr_dest,
                        TOS,
                        TTL,
                        flags,
                        popts,
                        perr);
    switch (*perr) {
        case NET_IP_ERR_NONE:
             break;


        case NET_ERR_INVALID_PROTOCOL:
        case NET_BUF_ERR_INVALID_IX:
        case NET_IP_ERR_INVALID_LEN_DATA:
        case NET_IP_ERR_INVALID_TOS:
        case NET_IP_ERR_INVALID_ADDR_SRC:
        case NET_IP_ERR_INVALID_ADDR_DEST:
        case NET_IP_ERR_INVALID_FLAG:
        case NET_IP_ERR_INVALID_OPT_TYPE:
        case NET_IP_ERR_INVALID_OPT_LEN:
        case NET_IP_ERR_INVALID_OPT_CFG:
        case NET_IP_ERR_INVALID_OPT_ROUTE:
        default:
             NetIP_TxPktDiscard(pbuf, perr);
             return;                                            /* Prevent 'break NOT reachable' compiler warning.      */
    }
#endif


/*$PAGE*/
                                                                /* -------------------- TX IP PKT --------------------- */
    NetIP_TxPkt(pbuf,
                pbuf_hdr,
                addr_src,
                addr_dest,
                TOS,
                TTL,
                flags,
                popts,
                perr);


                                                                /* ----------------- UPDATE TX STATS ------------------ */
    switch (*perr) {
        case NET_IP_ERR_NONE:
        case NET_IF_ERR_NONE:
             NET_CTR_STAT_INC(NetIP_StatTxDatagramCtr);
            *perr = NET_IP_ERR_NONE;
             break;


        case NET_ERR_RX:
        case NET_ERR_TX:
             NET_CTR_ERR_INC(NetIP_ErrTxPktDiscardedCtr);       /* See Note #3.                                         */
            *perr = NET_ERR_TX;
             return;                                            /* Prevent 'break NOT reachable' compiler warning.      */


        case NET_ERR_INIT_INCOMPLETE:
        case NET_ERR_INVALID_PROTOCOL:
        case NET_IP_ERR_INVALID_LEN_HDR:
        case NET_IP_ERR_INVALID_FRAG:
        case NET_IP_ERR_INVALID_OPT_TYPE:
        case NET_IP_ERR_INVALID_OPT_LEN:
        case NET_IP_ERR_TX_DEST_INVALID:
        case NET_IP_ERR_INVALID_ADDR_HOST:
        case NET_IP_ERR_INVALID_ADDR_NET:
        case NET_IP_ERR_INVALID_ADDR_GATEWAY:
        case NET_BUF_ERR_INVALID_IX:
        case NET_BUF_ERR_INVALID_LEN:
        case NET_UTIL_ERR_NULL_PTR:
        case NET_UTIL_ERR_NULL_SIZE:
        default:
             NetIP_TxPktDiscard(pbuf, perr);
             return;                                            /* Prevent 'break NOT reachable' compiler warning.      */
    }
}


/*$PAGE*/
/*
*********************************************************************************************************
*                                            NetIP_ReTx()
*
* Description : (1) Prepare & re-transmit packets from transport protocol layers to network interface layer :
*
*                   (a) Validate  re-transmit packet
*                   (b) Prepare & re-transmit packet datagram
*                   (c) Update    re-transmit statistics
*
*
* Argument(s) : pbuf        Pointer to network buffer to re-transmit IP packet.
*
*               perr        Pointer to variable that will receive the return error code from this function :
*
*                               NET_IP_ERR_NONE                 IP datagram(s) successfully prepared & re-transmitted
*                                                                   to network interface layer.
*                               NET_ERR_INIT_INCOMPLETE         Network initialization NOT complete.
*
*                                                               -------- RETURNED BY NetIP_TxPktDiscard() : ---------
*                               NET_ERR_TX                      Transmit error; packet discarded.
*
* Return(s)   : none.
*
* Caller(s)   : NetTCP_TxConnReTxQ_Timeout().
*
*               This function is an INTERNAL network protocol suite function & SHOULD NOT be called by 
*               application function(s).
*
* Note(s)     : (2) NetIP_ReTx() blocked until network initialization completes.
*
*               (3) Network buffer already freed by lower layer; only increment error counter.
*********************************************************************************************************
*/
/*$PAGE*/
void  NetIP_ReTx (NET_BUF  *pbuf,
                  NET_ERR  *perr)
{
#if (((NET_CTR_CFG_STAT_EN     == DEF_ENABLED)                    || \
      (NET_CTR_CFG_ERR_EN      == DEF_ENABLED))                   && \
      (CPU_CFG_CRITICAL_METHOD == CPU_CRITICAL_METHOD_STATUS_LOCAL))
    CPU_SR        cpu_sr;
#endif
    NET_BUF_HDR  *pbuf_hdr;


#if (NET_ERR_CFG_ARG_CHK_EXT_EN == DEF_ENABLED)
    if (Net_InitDone != DEF_YES) {                              /* If init NOT complete, exit tx (see Note #2).         */
       *perr = NET_ERR_INIT_INCOMPLETE;
        return;
    }
#endif


#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)                 /* ------------------- VALIDATE PTR ------------------- */
    if (pbuf == (NET_BUF *)0) {
        NetIP_TxPktDiscard(pbuf, perr);
        NET_CTR_ERR_INC(NetIP_ErrNullPtrCtr);
        return;
    }
#endif


                                                                /* -------------- VALIDATE RE-TX IP PKT --------------- */
    pbuf_hdr = &pbuf->Hdr;
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
    if (pbuf_hdr->IP_HdrIx == NET_BUF_IX_NONE) {
        NetIP_TxPktDiscard(pbuf, perr);
        NET_CTR_ERR_INC(NetIP_ErrTxInvalidBufIxCtr);
        return;
    }
#endif


                                                                /* ------------------- RE-TX IP PKT ------------------- */
    NetIP_ReTxPkt(pbuf,
                  pbuf_hdr,
                  perr);


                                                                /* ---------------- UPDATE RE-TX STATS ---------------- */
    switch (*perr) {
        case NET_IP_ERR_NONE:
        case NET_IF_ERR_NONE:
             NET_CTR_STAT_INC(NetIP_StatTxDatagramCtr);
            *perr = NET_IP_ERR_NONE;
             break;


        case NET_ERR_RX:
        case NET_ERR_TX:
             NET_CTR_ERR_INC(NetIP_ErrTxPktDiscardedCtr);       /* See Note #3.                                         */
            *perr = NET_ERR_TX;
             return;                                            /* Prevent 'break NOT reachable' compiler warning.      */


        case NET_ERR_INIT_INCOMPLETE:
        case NET_IP_ERR_TX_DEST_INVALID:
        case NET_IP_ERR_INVALID_ADDR_HOST:
        case NET_IP_ERR_INVALID_ADDR_NET:
        case NET_IP_ERR_INVALID_ADDR_GATEWAY:
        case NET_UTIL_ERR_NULL_PTR:
        case NET_UTIL_ERR_NULL_SIZE:
        default:
   

⌨️ 快捷键说明

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