11.1.1 Purpose of this Document
This document is addressed to people using the built-in TCP/IP functionality provided by TCP Manager, UDP Manager and Name Server L3 tasks.
The C-Interface for these managers was created as a basis for the development of a socket server for the UNIX emulation project on top of L3. However, they allow usage of networking functions (but without the socket interface).
The functions are still in a pre-release state, since only rudimentary
testing was undertaken. In addition, the documentation is currently
incomplete and awaits testers.
11.1.2 Related Documents
There is a document describing the network implementation of L3 (in Elan).
11.2 TCP Manager functions
The information contained here is basically from tcpifc.h. 11.2.1 Datastructures
typedef struct { int index; int state; ThreadT thread; } TCPChannelT; TCPChannelT contains the thread owning the connection, an index into a table managed by TCP Manager and the state of the connection (see below).
typedef struct { int IP_Address; WordT Port; } TCPSocketT; This structure (6 bytes) identifies uniquely the communication peer. IP_Address ( 4 Bytes) can be set using the L3_IP_Adress macro (see on top). Port contains the remote port.
Possible connection states
Some macros are defined in netmacros.h for easier access to the functions provided here.
int TCPRead (TCPChannelT * Channel, int Mode, char *Buffer, int BufSize, int RecvTimeOut);
TCPRead reads data from an existing TCP connection. This can be either blocking or nonblocking, depending on mode. { L3_TCP_BLOCKING,L3_TCP_NONBLOCKING }
Notes
int TCPWrite (TCPChannelT * C, char *SendMsg, int MessageLength, char *Buffer, int BufSize, int flags);
Writes to an existing TCP connection. The message to be send must be placed in SendMsg.
If an error occured, the error message is placed in Buffer (? needs testing).
Flags can be:
It is not clear to what extend the current L3 implementation supports these flags.
11.2.5 TCPOpen
int TCPOpen (TCPSocketT RSock, int Own_Port, int mode, int timer, TCPChannelT * Channel);
Remarks
int TCPWaitAck (TCPChannelT * ChannelPtr);
MUST be called after an active open.
int TCPClose (TCPChannelT * Channel);
int TCPAbort (TCPChannelT *Channel);
int printChannel (TCPChannelT * Ch);
int TCPAbort(TCPChannelT * Channel);
int TCPGetSocket(TCPChannelT * Channel, TCPSocketT * MySockPtr, TCPSocketT * RSockPtr);
Fills Remote Socket and Own Socket.
int TCPInitTCPServerThreadID (void);
This function must be called before anything else.
11.3 UDP Manager Interface
Information from udpifc.h 11.4 Name Server Interface
Information from nsifc.h