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

📄 net_sock.c

📁 AT91SAM7X256
💻 C
📖 第 1 页 / 共 5 页
字号:
/*
*********************************************************************************************************
*                                              uC/TCP-IP
*                                      The Embedded TCP/IP Suite
*
*                          (c) Copyright 2003-2006; Micrium, Inc.; Weston, FL
*
*                   All rights reserved.  Protected by international copyright laws.
*                   Knowledge of the source code may not be used to write a similar
*                   product.  This file may only be used in accordance with a license
*                   and should not be redistributed in any way.
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*
*                                         NETWORK SOCKET LAYER
*
* Filename      : net_sock.c
* Version       : V1.86
* Programmer(s) : ITJ
*********************************************************************************************************
* Note(s)       : (1) Supports BSD 4.x Socket Layer with the following restrictions/constraints :
*
*                     (a) ONLY supports a single address family from the following families :
*                         (1) IPv4 (AF_INET)
*
*                     (b) ONLY supports the following socket types :
*                         (1) Datagram (SOCK_DGRAM)
*                         (2) Stream   (SOCK_STREAM)
*
*                     (c) ONLY supports a single protocol family from the following families :
*                         (1) IPv4 (PF_INET)
*                             (A) ONLY supports the following protocols :
*                                 (1) UDP (IPPROTO_UDP)
*                                 (2) TCP (IPPROTO_TCP)
*
*                     (d) ONLY supports the following socket options :
*                         (1) Global options
*                             #### ( ) 
*                         (2) Socket options
*                             #### ( ) 
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                                            INCLUDE FILES
*********************************************************************************************************
*/

#define    NET_SOCK_MODULE
#include  <net.h>


/*
*********************************************************************************************************
*                                               MODULE
*
* Note(s) : (1) See 'net_sock.h  MODULE'.
*********************************************************************************************************
*/

#ifdef  NET_SOCK_MODULE_PRESENT


/*$PAGE*/
/*
*********************************************************************************************************
*                                            LOCAL DEFINES
*********************************************************************************************************
*/


/*
*********************************************************************************************************
*                                           LOCAL CONSTANTS
*********************************************************************************************************
*/


/*
*********************************************************************************************************
*                                          LOCAL DATA TYPES
*********************************************************************************************************
*/


/*
*********************************************************************************************************
*                                            LOCAL TABLES
*********************************************************************************************************
*/


/*
*********************************************************************************************************
*                                       LOCAL GLOBAL VARIABLES
*********************************************************************************************************
*/


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

                                                                                    /* ----------- RX FNCTS ----------- */

#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
static  void                NetSock_RxPktValidateBuf             (NET_BUF_HDR        *pbuf_hdr,
                                                                  NET_ERR            *perr);
#endif

static  void                NetSock_RxPktDemux                   (NET_BUF            *pbuf,
                                                                  NET_BUF_HDR        *pbuf_hdr,
                                                                  NET_ERR            *perr);

static  void                NetSock_RxPktFree                    (NET_BUF            *pbuf_q);

static  void                NetSock_RxPktDiscard                 (NET_BUF            *pbuf,
                                                                  NET_ERR            *perr);



                                                                                    /* ------ SOCK STATUS FNCTS ------- */

#if (NET_ERR_CFG_ARG_CHK_EXT_EN == DEF_ENABLED)
static  CPU_BOOLEAN         NetSock_IsValidAddrLocal             (NET_SOCK_ADDR      *paddr,
                                                                  NET_SOCK_ADDR_LEN   addr_len,
                                                                  NET_ERR            *perr);

static  CPU_BOOLEAN         NetSock_IsValidAddrRemote            (NET_SOCK_ADDR      *paddr,
                                                                  NET_SOCK_ADDR_LEN   addr_len,
                                                                  NET_SOCK           *psock,
                                                                  NET_ERR            *perr);
#endif



                                                                                    /* ------ SOCK HANDLER FNCTS ------ */

#if (NET_SOCK_CFG_TYPE_STREAM_EN == DEF_ENABLED)
static  NET_SOCK_RTN_CODE   NetSock_CloseHandlerStream           (NET_SOCK_ID         sock_id,
                                                                  NET_SOCK           *psock,
                                                                  NET_ERR            *perr);
#endif


static  NET_SOCK_RTN_CODE   NetSock_BindHandler                  (NET_SOCK_ID         sock_id,
                                                                  NET_SOCK_ADDR      *paddr_local,
                                                                  NET_SOCK_ADDR_LEN   addr_len,
                                                                  CPU_BOOLEAN         addr_random_reqd,
                                                                  NET_ERR            *perr);


static  NET_SOCK_RTN_CODE   NetSock_ConnHandlerDatagram          (NET_SOCK_ID         sock_id,
                                                                  NET_SOCK           *psock,
                                                                  NET_SOCK_ADDR      *paddr_remote,
                                                                  NET_ERR            *perr);

#if (NET_SOCK_CFG_TYPE_STREAM_EN == DEF_ENABLED)
static  NET_SOCK_RTN_CODE   NetSock_ConnHandlerStream            (NET_SOCK_ID         sock_id,
                                                                  NET_SOCK           *psock,
                                                                  NET_SOCK_ADDR      *paddr_remote,
                                                                  NET_ERR            *perr);
#endif

#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
static  void                NetSock_ConnHandlerAddrRemoteValidate(NET_SOCK           *psock,
                                                                  NET_SOCK_ADDR      *paddr_remote,
                                                                  NET_ERR            *perr);
#endif

static  void                NetSock_ConnHandlerAddrRemoteSet     (NET_SOCK           *psock,
                                                                  NET_SOCK_ADDR      *paddr_remote,
                                                                  CPU_BOOLEAN         addr_over_wr,
                                                                  NET_ERR            *perr);


/*$PAGE*/
#if (NET_SOCK_CFG_TYPE_STREAM_EN == DEF_ENABLED)
static  void                NetSock_ConnAcceptQ_Init             (NET_SOCK           *psock,
                                                                  NET_SOCK_Q_SIZE     sock_q_size);

static  void                NetSock_ConnAcceptQ_Clr              (NET_SOCK           *psock);

static  void                NetSock_ConnAcceptQ_ConnID_Add       (NET_SOCK           *psock,
                                                                  NET_CONN_ID         conn_id,
                                                                  NET_ERR            *perr);

static  NET_CONN_ID         NetSock_ConnAcceptQ_ConnID_Get       (NET_SOCK           *psock,
                                                                  NET_ERR            *perr);

static  CPU_BOOLEAN         NetSock_ConnAcceptQ_ConnID_Srch      (NET_SOCK           *psock,
                                                                  NET_CONN_ID         conn_id,
                                                                  NET_SOCK_Q_SIZE    *pconn_ix,
                                                                  NET_SOCK_Q_SIZE    *pconn_nbr);

static  CPU_BOOLEAN         NetSock_ConnAcceptQ_ConnID_Remove    (NET_SOCK           *psock,
                                                                  NET_CONN_ID         conn_id);
#endif



static  NET_SOCK_RTN_CODE   NetSock_RxDataHandlerDatagram        (NET_SOCK_ID         sock_id,
                                                                  NET_SOCK           *psock,
                                                                  void               *pdata_buf,
                                                                  CPU_INT16S          data_buf_len,
                                                                  CPU_INT16S          flags,
                                                                  NET_SOCK_ADDR      *paddr_remote,
                                                                  NET_SOCK_ADDR_LEN  *paddr_len,
                                                                  void               *pip_opts_buf,
                                                                  CPU_INT08U          ip_opts_buf_len,
                                                                  CPU_INT08U         *pip_opts_len,
                                                                  NET_ERR            *perr);

#if (NET_SOCK_CFG_TYPE_STREAM_EN == DEF_ENABLED)
static  NET_SOCK_RTN_CODE   NetSock_RxDataHandlerStream          (NET_SOCK_ID         sock_id,
                                                                  NET_SOCK           *psock,
                                                                  void               *pdata_buf,
                                                                  CPU_INT16S          data_buf_len,
                                                                  CPU_INT16S          flags,
                                                                  NET_SOCK_ADDR      *paddr_remote,
                                                                  NET_SOCK_ADDR_LEN  *paddr_len,
                                                                  NET_ERR            *perr);
#endif


static  NET_SOCK_RTN_CODE   NetSock_TxDataHandlerDatagram        (NET_SOCK_ID         sock_id,
                                                                  NET_SOCK           *psock,
                                                                  void               *p_data,
                                                                  CPU_INT16S          data_len,
                                                                  CPU_INT16S          flags,
                                                                  NET_SOCK_ADDR      *paddr_remote,
                                                                  NET_ERR            *perr);

#if (NET_SOCK_CFG_TYPE_STREAM_EN == DEF_ENABLED)
static  NET_SOCK_RTN_CODE   NetSock_TxDataHandlerStream          (NET_SOCK_ID         sock_id,
                                                                  NET_SOCK           *psock,
                                                                  void               *p_data,
                                                                  CPU_INT16S          data_len,
                                                                  CPU_INT16S          flags,
                                                                  NET_ERR            *perr);
#endif



/*$PAGE*/
                                                                                    /* ---------- SOCK FNCTS ---------- */

static  NET_SOCK           *NetSock_Get                          (NET_ERR            *perr);

#if (NET_SOCK_CFG_TYPE_STREAM_EN == DEF_ENABLED)
static  NET_CONN_ID         NetSock_GetConnTransport             (NET_SOCK           *psock,
                                                                  NET_ERR            *perr);
#endif



static  void                NetSock_CloseHandler                 (NET_SOCK           *psock,
                                                                  CPU_BOOLEAN         close_conn,
                                                                  CPU_BOOLEAN         close_conn_transport);

static  void                NetSock_CloseSock                    (NET_SOCK           *psock,
                                                                  CPU_BOOLEAN         close_conn,
                                                                  CPU_BOOLEAN         close_conn_transport);

static  void                NetSock_CloseSockHandler             (NET_SOCK           *psock,
                                                                  CPU_BOOLEAN         close_conn,
                                                                  CPU_BOOLEAN         close_conn_transport,
                                                                  NET_ERR            *perr);

static  void                NetSock_CloseSockFromClose           (NET_SOCK           *psock);


static  void                NetSock_CloseConn                    (NET_CONN_ID         conn_id);

⌨️ 快捷键说明

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