/* ********************************************************************************************************* * uC/TCP-IP * The Embedded TCP/IP Suite * * Copyright 2004-2020 Silicon Laboratories Inc. www.silabs.com * * SPDX-License-Identifier: APACHE-2.0 * * This software is subject to an open source license and is distributed by * Silicon Laboratories Inc. pursuant to the terms of the Apache License, * Version 2.0 available at www.apache.org/licenses/LICENSE-2.0. * ********************************************************************************************************* */ /* ********************************************************************************************************* * * NETWORK CONNECTION MANAGEMENT * * Filename : net_conn.h * Version : V3.06.00 ********************************************************************************************************* * Note(s) : (1) Supports network connections for local & remote addresses of the following : * * (a) Families : * (1) IPv4 Connections * (A) BSD 4.x Sockets * * (b) Connection types : * (1) Datagram * (2) Stream ********************************************************************************************************* */ /* ********************************************************************************************************* ********************************************************************************************************* * MODULE ********************************************************************************************************* ********************************************************************************************************* */ #ifndef NET_CONN_MODULE_PRESENT #define NET_CONN_MODULE_PRESENT /* ********************************************************************************************************* ********************************************************************************************************* * INCLUDE FILES ********************************************************************************************************* ********************************************************************************************************* */ #include "net_cfg_net.h" #include "net_def.h" #include "net_sock.h" #include "net_type.h" #include "net_err.h" #include "net_stat.h" #include "lib_def.h" #include //#include /* ********************************************************************************************************* ********************************************************************************************************* * EXTERNS ********************************************************************************************************* ********************************************************************************************************* */ #ifdef NET_CONN_MODULE #define NET_CONN_EXT #else #define NET_CONN_EXT extern #endif /* ********************************************************************************************************* ********************************************************************************************************* * DEFINES ********************************************************************************************************* ********************************************************************************************************* */ #if (defined(NET_IPv6_MODULE_EN)) #define NET_CONN_ADDR_LEN_MAX NET_SOCK_ADDR_LEN_IP_V6 #elif (defined(NET_IPv4_MODULE_EN)) #define NET_CONN_ADDR_LEN_MAX NET_SOCK_ADDR_LEN_IP_V4 #else #define NET_CONN_ADDR_LEN_MAX 0 #endif #if (defined(NET_IPv4_MODULE_EN) && defined(NET_IPv6_MODULE_EN)) #define NET_CONN_PROTOCOL_IP_NBR_MAX 2 #else #define NET_CONN_PROTOCOL_IP_NBR_MAX 1 #endif #ifdef NET_TCP_MODULE_EN #define NET_CONN_PROTOCOL_TRANSPORT_NBR_MAX 2 #else #define NET_CONN_PROTOCOL_TRANSPORT_NBR_MAX 1 #endif #define NET_CONN_PROTOCOL_NBR_MAX NET_CONN_PROTOCOL_TRANSPORT_NBR_MAX + NET_CONN_PROTOCOL_IP_NBR_MAX #define NET_CONN_ACCESSED_TH_MIN 10 #define NET_CONN_ACCESSED_TH_MAX 65000 #define NET_CONN_ACCESSED_TH_DFLT 100 /* ********************************************************************************************************* * NETWORK CONNECTION PROTOCOL INDEX DEFINES ********************************************************************************************************* */ #define NET_CONN_PROTOCOL_MAX_MIN NET_SOCK_PROTO_MAX_MIN #define NET_CONN_PROTOCOL_IX_IP_V4_UDP 0 #define NET_CONN_PROTOCOL_IX_IP_V4_TCP 1 #ifdef NET_IPv4_MODULE_EN #define NET_CONN_PROTOCOL_IX_OFFSET 2 #else #define NET_CONN_PROTOCOL_IX_OFFSET 0 #endif #define NET_CONN_PROTOCOL_IX_IP_V6_UDP 0 + NET_CONN_PROTOCOL_IX_OFFSET #define NET_CONN_PROTOCOL_IX_IP_V6_TCP 1 + NET_CONN_PROTOCOL_IX_OFFSET /* ********************************************************************************************************* * NETWORK CONNECTION ADDRESS DEFINES ********************************************************************************************************* */ #define NET_CONN_ADDR_IP_LEN_PORT NET_SOCK_ADDR_IP_LEN_PORT #define NET_CONN_ADDR_IP_IX_BASE NET_SOCK_ADDR_IP_IX_BASE #define NET_CONN_ADDR_IP_IX_PORT NET_SOCK_ADDR_IP_IX_PORT #ifdef NET_IPv4_MODULE_EN #define NET_CONN_ADDR_IP_V4_IX_ADDR NET_SOCK_ADDR_IP_V4_IX_ADDR #define NET_CONN_ADDR_IP_V4_LEN_ADDR NET_SOCK_ADDR_IP_V4_LEN_ADDR #define NET_CONN_ADDR_IP_V4_WILDCARD NET_SOCK_ADDR_IP_V4_WILDCARD #define NET_CONN_ADDR_IP_V4_BROADCAST NET_SOCK_ADDR_IP_V4_BROADCAST #endif #ifdef NET_IPv6_MODULE_EN #define NET_CONN_ADDR_IP_V6_IX_ADDR NET_SOCK_ADDR_IP_V6_IX_ADDR #define NET_CONN_ADDR_IP_V6_LEN_ADDR NET_SOCK_ADDR_IP_V6_LEN_ADDR #define NET_CONN_ADDR_IP_V6_WILDCARD NET_SOCK_ADDR_IP_V6_WILDCARD #endif /* ********************************************************************************************************* * NETWORK CONNECTION FLAG DEFINES ********************************************************************************************************* */ /* ------------------ NET CONN FLAGS ------------------ */ #define NET_CONN_FLAG_NONE DEF_BIT_NONE #define NET_CONN_FLAG_USED DEF_BIT_00 /* Conn cur used; i.e. NOT in free conn pool. */ /* ********************************************************************************************************* * NETWORK CONNECTION TYPE DEFINES ********************************************************************************************************* */ #define NET_CONN_TYPE_CONN_NONE 0u #define NET_CONN_TYPE_CONN_HALF 1u #define NET_CONN_TYPE_CONN_FULL 2u /* ********************************************************************************************************* ********************************************************************************************************* * DATA TYPES ********************************************************************************************************* ********************************************************************************************************* */ /* ********************************************************************************************************* * NETWORK CONNECTION FAMILY DATA TYPE ********************************************************************************************************* */ typedef CPU_INT08U NET_CONN_FAMILY; /* ********************************************************************************************************* * NETWORK CONNECTION LIST INDEX DATA TYPE * * Note(s) : (1) NET_CONN_PROTOCOL_IX_NONE SHOULD be #define'd based on 'NET_CONN_PROTOCOL_IX' data type * declared. ********************************************************************************************************* */ typedef CPU_INT08U NET_CONN_PROTOCOL_IX; #define NET_CONN_PROTOCOL_IX_NONE DEF_INT_08U_MAX_VAL /* Define as max unsigned val (see Note #1). */ /* ********************************************************************************************************* * NETWORK CONNECTION ADDRESS LENGTH DATA TYPE ********************************************************************************************************* */ typedef CPU_INT16U NET_CONN_ADDR_LEN; /* ********************************************************************************************************* * NETWORK CONNECTION LIST QUANTITY DATA TYPE ********************************************************************************************************* */ typedef CPU_INT08U NET_CONN_LIST_QTY; /* Defines max qty of conn lists to support. */ /* ********************************************************************************************************* * NETWORK CONNECTION QUANTITY DATA TYPE * * Note(s) : (1) See also 'NETWORK CONNECTION IDENTIFICATION DATA TYPE Note #2b'. ********************************************************************************************************* */ typedef CPU_INT16S NET_CONN_QTY; /* Defines max qty of conns to support. */ /* ********************************************************************************************************* * NETWORK CONNECTION IDENTIFICATION DATA TYPE * * Note(s) : (1) 'NET_CONN_ID' pre-defined in 'net_type.h' PRIOR to all other network modules that require * network connection data type. * * (2) (a) The following network connection values are pre-#define'd in 'net_cfg_net.h' PRIOR * to 'net_conn.h' based on other modules' configuration values : * * (1) NET_CONN_NBR_MIN * * (b) (1) NET_CONN_NBR_MAX SHOULD be #define'd based on 'NET_CONN_QTY' data type declared. * * (2) However, since network connection handle identifiers are data-typed as 16-bit * signed integers; the maximum number of valid network connection identifiers, & * therefore the maximum number of valid network connections, is the total number * of non-negative values that 16-bit signed integers support. ********************************************************************************************************* */ /* CFG CONN NBR THs */ /* See Note #4. */ #ifdef NET_TCP_MODULE_EN #if (NET_TCP_NBR_CONN > NET_SOCK_NBR_SOCK) #define NET_CONN_SOCK_TCP_NBR NET_SOCK_NBR_SOCK #else #define NET_CONN_SOCK_TCP_NBR NET_TCP_NBR_CONN #endif #else #define NET_CONN_SOCK_TCP_NBR 0 #endif #ifdef NET_TCP_MODULE_EN #define NET_CONN_NBR_MIN (NET_SOCK_NBR_SOCK + \ NET_TCP_NBR_CONN - \ NET_SOCK_CFG_SOCK_NBR_TCP) #else #define NET_CONN_NBR_MIN NET_SOCK_NBR_SOCK #endif #ifndef NET_TCP_CFG_NBR_CONN #define NET_TCP_CFG_NBR_CONN 0u #endif #ifndef NET_CONN_CFG_NBR_CONN #define NET_CONN_NBR_CONN NET_SOCK_NBR_SOCK + NET_TCP_CFG_NBR_CONN + \ (NET_SOCK_CFG_SOCK_NBR_TCP * NET_SOCK_CFG_CONN_ACCEPT_Q_SIZE_MAX) #else #define NET_CONN_NBR_CONN NET_CONN_CFG_NBR_CONN #endif #if 0 /* See Note #1. */ typedef CPU_INT16S NET_CONN_ID; #endif #if 0 /* See Note #2a1. */ #define NET_CONN_NBR_MIN 1 #endif #define NET_CONN_NBR_MAX DEF_INT_16S_MAX_VAL /* See Note #2b. */ #define NET_CONN_ID_MIN 0 #define NET_CONN_ID_MAX (NET_CONN_NBR_CONN - 1) /* ********************************************************************************************************* * NETWORK CONNECTION LIST INDEX DATA TYPE ********************************************************************************************************* */ typedef NET_CONN_QTY NET_CONN_LIST_IX; #define NET_CONN_LIST_IX_NONE -1 #define NET_CONN_LIST_IX_MIN 0 #define NET_CONN_LIST_IX_MAX (NET_CONN_NBR_CONN - 1) /* ********************************************************************************************************* * NETWORK CONNECTION CLOSE CODE DATA TYPE ********************************************************************************************************* */ typedef CPU_INT08U NET_CONN_CLOSE_CODE; #define NET_CONN_CLOSE_NONE 0u #define NET_CONN_CLOSE_ALL 1u #define NET_CONN_CLOSE_BY_IF 2u #define NET_CONN_CLOSE_BY_ADDR 3u #define NET_CONN_CLOSE_HALF 10u /* Conn closed to tx's; open to rx's. */ #define NET_CONN_CLOSE_FULL 11u /* ********************************************************************************************************* * NETWORK CONNECTION FLAGS DATA TYPE ********************************************************************************************************* */ typedef NET_FLAGS NET_CONN_FLAGS; /* ********************************************************************************************************* * NETWORK CONNECTION DATA TYPE * * NET_CONN * |-------------| * | Conn Type | * Previous |-------------| * Connection <----------O | * Chain Lists |-------------| Next * | O----------> Connection * Previous |-------------| Chain Lists * Connection <----------O | * |-------------| Next * | O----------> Connection * |-------------| * | O----------> Connection * |-------------| List * | Conn IDs | * |-------------| * | IF Nbr | * |-------------| * | Family | * | Protocol | * |-------------| * | Local | * | Address | * |-------------| * | Remote | * | Address | * |-------------| * | Accessed | * | Counters | * |-------------| * |IP Tx Params | * |-------------| * | Flags | * |-------------| * * * Note(s) : (1) (a) (1) RFC #1122, Section 4.1.4 states that "an application-layer program MUST be * able to set the ... [IP] TOS ... for sending a ... datagram, [which] must * be passed transparently to the IP layer". * * (2) RFC #1122, Section 4.2.4.2 reiterates that : * * (A) "The application layer MUST be able to specify the [IP] Type-of-Service * (TOS) for [packets] that are sent on a connection." * * (B) "It not required [sic], but the application SHOULD be able to change the * [IP] TOS during the connection lifetime." * * (b) (1) (A) RFC #1122, Section 4.1.4 states that "an application-layer program MUST * be able to set the [IP] TTL ... for sending a ... datagram, [which] must * be passed transparently to the IP layer". * * (B) RFC #1122, Section 4.2.2.19 reiterates that "the [IP] TTL value used to * send ... [packets] MUST be configurable". * * (2) RFC #1112, Section 6.1 states that "the service interface should provide a * way for the upper-layer protocol to specify the IP time-to-live of an outgoing * multicast datagram". * * (c) (1) (A) RFC #1122, Section 4.1.4 states that "an application-layer program MUST * be able to set the ... IP options for sending a ... datagram, [which] must * be passed transparently to the IP layer". * * (B) RFC #1122, Section 4.1.3.2 reiterates that "an application MUST be able * to specify IP options to be sent ... and ... MUST pass these options to * the IP layer". * * (C) RFC #1122, Section 4.2.3.8 adds that : * * (1) "A TCP MAY support the [IP] Time Stamp and Record Route options." * * (2) "An application MUST be able to specify a [IP] source route when it * ... opens a TCP connection, and this MUST take precedence over a * source route received in a datagram." * * (2) IP transmit options currently NOT implemented See 'net_tcp.h Note #1d' ********************************************************************************************************* */ /* --------------------- NET CONN --------------------- */ typedef struct net_conn NET_CONN; struct net_conn { NET_CONN *PrevChainPtr; /* Ptr to PREV conn chain list. */ NET_CONN *NextChainPtr; /* Ptr to NEXT conn chain list. */ NET_CONN *PrevConnPtr; /* Ptr to PREV conn. */ NET_CONN *NextConnPtr; /* Ptr to NEXT conn. */ NET_CONN **ConnList; /* Conn list. */ NET_CONN_ID ID; /* Net conn id. */ NET_CONN_ID ID_App; /* App layer conn id. */ NET_CONN_ID ID_AppClone; /* App layer conn id clone. */ NET_CONN_ID ID_Transport; /* Transport layer conn id. */ NET_IF_NBR IF_Nbr; /* IF nbr. */ NET_CONN_FAMILY Family; /* Conn family. */ NET_CONN_PROTOCOL_IX ProtocolIx; /* Conn protocol ix. */ CPU_INT08U AddrLocal[NET_CONN_ADDR_LEN_MAX]; /* Conn local addr. */ CPU_BOOLEAN AddrLocalValid; /* Conn local addr valid flag. */ CPU_INT08U AddrRemote[NET_CONN_ADDR_LEN_MAX]; /* Conn remote addr. */ CPU_BOOLEAN AddrRemoteValid; /* Conn remote addr valid flag. */ CPU_INT16U ConnChainAccessedCtr; /* Nbr conn chain head accesses. */ CPU_INT16U ConnAccessedCtr; /* Nbr conn accesses (non-chain head). */ NET_CONN_FLAGS Flags; /* Conn flags. */ #ifdef NET_IPv4_MODULE_EN NET_IPv4_FLAGS TxIPv4Flags; /* Conn tx IPv4 flags. */ NET_IPv4_TOS TxIPv4TOS; /* Conn tx IPv4 TOS (see Note #2a). */ NET_IPv4_TTL TxIPv4TTL; /* Conn tx IPv4 TTL (see Note #2b1). */ #ifdef NET_MCAST_TX_MODULE_EN NET_IPv4_TTL TxIPv4TTL_Multicast; /* Conn tx IPv4 TTL multicast (see Note #2b2). */ #endif #endif #ifdef NET_IPv6_MODULE_EN NET_IPv6_FLAGS TxIPv6Flags; /* Conn tx IPv6 flags. */ NET_IPv6_TRAFFIC_CLASS TxIPv6TrafficClass; /* Conn tx IPv6 traffic class. */ NET_IPv6_FLOW_LABEL TxIPv6FlowLabel; /* Conn tx IPv6 flow label. */ NET_IPv6_HOP_LIM TxIPv6HopLim; /* Conn tx IPv6 hop lim. */ #ifdef NET_MCAST_TX_MODULE_EN NET_IPv6_HOP_LIM TxIPv6HopLimMulticast; /* Conn tx IPv6 TTL multicast (see Note #2b2). */ #endif #endif }; /* ********************************************************************************************************* * GLOBAL VARIABLES ********************************************************************************************************* */ NET_CONN_EXT NET_CONN NetConn_Tbl[NET_CONN_NBR_CONN]; NET_CONN_EXT NET_CONN *NetConn_PoolPtr; /* Ptr to pool of free net conns. */ NET_CONN_EXT NET_STAT_POOL NetConn_PoolStat; /* Array of ptrs to net conn lists. */ NET_CONN_EXT NET_CONN *NetConn_ConnListHead[NET_CONN_PROTOCOL_NBR_MAX]; NET_CONN_EXT NET_CONN *NetConn_ConnListChainPtr; /* Ptr to cur conn list chain to update. */ NET_CONN_EXT NET_CONN *NetConn_ConnListConnPtr; /* Ptr to cur conn list conn to update. */ NET_CONN_EXT NET_CONN *NetConn_ConnListNextChainPtr; /* Ptr to next conn list chain to update. */ NET_CONN_EXT NET_CONN *NetConn_ConnListNextConnPtr; /* Ptr to next conn list conn to update. */ NET_CONN_EXT CPU_INT16U NetConn_AccessedTh_nbr; /* Nbr successful srch's to promote net conns. */ /* Conn addr wildcard cfg. */ NET_CONN_EXT CPU_BOOLEAN NetConn_AddrWildCardAvailv4; #ifdef NET_IPv4_MODULE_EN NET_CONN_EXT CPU_INT08U NetConn_AddrWildCardv4[NET_CONN_ADDR_LEN_MAX]; #endif NET_CONN_EXT CPU_BOOLEAN NetConn_AddrWildCardAvailv6; #ifdef NET_IPv6_MODULE_EN NET_CONN_EXT CPU_INT08U NetConn_AddrWildCardv6[NET_CONN_ADDR_LEN_MAX]; #endif /* ********************************************************************************************************* ********************************************************************************************************* * FUNCTION PROTOTYPES ********************************************************************************************************* ********************************************************************************************************* */ /* ********************************************************************************************************* * EXTERNAL C LANGUAGE LINKAGE * * Note(s) : (1) C++ compilers MUST 'extern'ally declare ALL C function prototypes & variable/object * declarations for correct C language linkage. ********************************************************************************************************* */ #ifdef __cplusplus extern "C" { #endif /* ********************************************************************************************************* * INTERNAL FUNCTIONS ********************************************************************************************************* */ void NetConn_Init(void); /* ------------ CFG FNCTS ------------- */ CPU_BOOLEAN NetConn_CfgAccessedTh(CPU_INT16U nbr_access); /* ---------- CONN API FNCTS ---------- */ NET_CONN_ID NetConn_Get(NET_CONN_FAMILY family, NET_CONN_PROTOCOL_IX protocol_ix, NET_ERR *p_err); void NetConn_Free(NET_CONN_ID conn_id); void NetConn_Copy(NET_CONN_ID conn_id_dest, NET_CONN_ID conn_id_src); void NetConn_CloseFromApp(NET_CONN_ID conn_id, CPU_BOOLEAN close_conn_transport); void NetConn_CloseFromTransport(NET_CONN_ID conn_id, CPU_BOOLEAN close_conn_app); void NetConn_CloseAllConns(void); void NetConn_CloseAllConnsByIF(NET_IF_NBR if_nbr); void NetConn_CloseAllConnsByAddr(CPU_INT08U *p_addr, NET_CONN_ADDR_LEN addr_len); void NetConn_CloseAllConnsByAddrHandler(CPU_INT08U *p_addr, NET_CONN_ADDR_LEN addr_len); NET_IF_NBR NetConn_IF_NbrGet(NET_CONN_ID conn_id, NET_ERR *p_err); NET_CONN_ID NetConn_ID_AppGet(NET_CONN_ID conn_id, NET_ERR *p_err); void NetConn_ID_AppSet(NET_CONN_ID conn_id, NET_CONN_ID conn_id_app, NET_ERR *p_err); NET_CONN_ID NetConn_ID_AppCloneGet(NET_CONN_ID conn_id, NET_ERR *p_err); void NetConn_ID_AppCloneSet(NET_CONN_ID conn_id, NET_CONN_ID conn_id_app, NET_ERR *p_err); NET_CONN_ID NetConn_ID_TransportGet(NET_CONN_ID conn_id, NET_ERR *p_err); void NetConn_ID_TransportSet(NET_CONN_ID conn_id, NET_CONN_ID conn_id_transport, NET_ERR *p_err); void NetConn_AddrLocalGet(NET_CONN_ID conn_id, CPU_INT08U *p_addr_local, NET_CONN_ADDR_LEN *p_addr_len, NET_ERR *p_err); void NetConn_AddrLocalSet(NET_CONN_ID conn_id, NET_IF_NBR if_nbr, CPU_INT08U *p_addr_local, NET_CONN_ADDR_LEN addr_len, CPU_BOOLEAN addr_over_wr, NET_ERR *p_err); void NetConn_AddrRemoteGet(NET_CONN_ID conn_id, CPU_INT08U *p_addr_remote, NET_CONN_ADDR_LEN *p_addr_len, NET_ERR *p_err); void NetConn_AddrRemoteSet(NET_CONN_ID conn_id, CPU_INT08U *p_addr_remote, NET_CONN_ADDR_LEN addr_len, CPU_BOOLEAN addr_over_wr, NET_ERR *p_err); CPU_BOOLEAN NetConn_AddrRemoteCmp(NET_CONN_ID conn_id, CPU_INT08U *p_addr_remote, NET_CONN_ADDR_LEN addr_len, NET_ERR *p_err); #ifdef NET_IPv4_MODULE_EN void NetConn_IPv4TxParamsGet(NET_CONN_ID conn_id, NET_IPv4_FLAGS *p_ip_flags, NET_IPv4_TOS *p_ip_tos, NET_IPv4_TTL *p_ip_ttl, NET_ERR *p_err); NET_IPv4_FLAGS NetConn_IPv4TxFlagsGet(NET_CONN_ID conn_id, NET_ERR *p_err); void NetConn_IPv4TxFlagsSet(NET_CONN_ID conn_id, NET_IPv4_FLAGS ip_flags, NET_ERR *p_err); NET_IPv4_TOS NetConn_IPv4TxTOS_Get(NET_CONN_ID conn_id, NET_ERR *p_err); void NetConn_IPv4TxTOS_Set(NET_CONN_ID conn_id, NET_IPv4_TOS ip_tos, NET_ERR *p_err); NET_IPv4_TTL NetConn_IPv4TxTTL_Get(NET_CONN_ID conn_id, NET_ERR *p_err); void NetConn_IPv4TxTTL_Set(NET_CONN_ID conn_id, NET_IPv4_TTL ip_ttl, NET_ERR *p_err); #ifdef NET_MCAST_TX_MODULE_EN NET_IPv4_TTL NetConn_IPv4TxTTL_MulticastGet(NET_CONN_ID conn_id, NET_ERR *p_err); void NetConn_IPv4TxTTL_MulticastSet(NET_CONN_ID conn_id, NET_IPv4_TTL ip_ttl, NET_ERR *p_err); #endif #endif #ifdef NET_IPv6_MODULE_EN void NetConn_IPv6TxParamsGet(NET_CONN_ID conn_id, NET_IPv6_TRAFFIC_CLASS *p_ip_traffic_class, NET_IPv6_FLOW_LABEL *p_ip_flow_label, NET_IPv6_HOP_LIM *p_ip_hop_lim, NET_IPv6_FLAGS *p_ip_flags, NET_ERR *p_err); #ifdef NET_MCAST_TX_MODULE_EN NET_IPv6_HOP_LIM NetConn_IPv6TxHopLimMcastGet(NET_CONN_ID conn_id, NET_ERR *p_err); void NetConn_IPv6TxHopLimMcastSet(NET_CONN_ID conn_id, NET_IPv6_HOP_LIM ip_hop_lim, NET_ERR *p_err); #endif #endif /* -------- CONN STATUS FNCTS --------- */ CPU_BOOLEAN NetConn_IsUsed(NET_CONN_ID conn_id, NET_ERR *p_err); CPU_BOOLEAN NetConn_IsIPv6(NET_CONN_ID conn_id, NET_ERR *p_err); CPU_BOOLEAN NetConn_IsPortUsed(NET_PORT_NBR port_nbr, NET_PROTOCOL_TYPE protocol, NET_ERR *p_err); void NetConn_IsConn(NET_CONN_ID conn_id, NET_ERR *p_err); NET_STAT_POOL NetConn_PoolStatGet(void); void NetConn_PoolStatResetMaxUsed(void); /* --------- CONN LIST FNCTS ---------- */ NET_CONN_ID NetConn_Srch(NET_CONN_FAMILY family, NET_CONN_PROTOCOL_IX protocol_ix, CPU_INT08U *p_addr_local, CPU_INT08U *p_addr_remote, NET_CONN_ADDR_LEN addr_len, NET_CONN_ID *p_conn_id_transport, NET_CONN_ID *p_conn_id_app, NET_ERR *p_err); void NetConn_ListAdd(NET_CONN_ID conn_id, NET_ERR *p_err); void NetConn_ListUnlink(NET_CONN_ID conn_id, NET_ERR *p_err); /* ********************************************************************************************************* * EXTERNAL C LANGUAGE LINKAGE END ********************************************************************************************************* */ #ifdef __cplusplus } #endif /* ********************************************************************************************************* ********************************************************************************************************* * CONFIGURATION ERRORS ********************************************************************************************************* ********************************************************************************************************* */ #ifndef NET_CONN_NBR_CONN #error "NET_CONN_NBR_CONN not #define'd in 'net_cfg_net.h'" #error " [MUST be >= NET_CONN_NBR_MIN] " #error " [ && <= NET_CONN_NBR_MAX] " #elif DEF_CHK_VAL(NET_CONN_NBR_CONN, \ NET_CONN_NBR_MIN, \ NET_CONN_NBR_MAX) != DEF_OK #error "NET_CONN_NBR_CONN illegally #define'd in 'net_cfg.h'" #error " [MUST be >= NET_CONN_NBR_MIN] " #error " [ && <= NET_CONN_NBR_MAX] " #endif /* ********************************************************************************************************* * MODULE END ********************************************************************************************************* */ #endif /* NET_CONN_MODULE_PRESENT */