\subsection{SICS Telnet Connection} SICS support communication through the standard TCP/IP telnet protocoll as described in RFC-854. SICS implements telnet in the most primitive way: i.e. no options are supported. In a later stage binary data transfer and authentication options may be supported. But not in its first implementation. After a telnet connection has been accepted a SICS task is installed. In the first stage this task will answer any commands with a 'Fuck--off' message. Only if a special login command is given, the connection will be verified and finally opened for commands or rejected. If no login command has been sent within a reasonable intervall of time the connection will be closed as well. This logic is implemented into a special task function associated with a telnet connection. The rest of the telnet logic is so tightly integrated with the network reading, that it has to live in the network reader module. This section describes the special task function and its associated data structure. \begin{flushleft} \small \begin{minipage}{\linewidth} \label{scrap1} $\langle$teldat {\footnotesize ?}$\rangle\equiv$ \vspace{-1ex} \begin{list}{}{} \item \mbox{}\verb@@\\ \mbox{}\verb@ typdef struct __TelTask {@\\ \mbox{}\verb@ SConnection *pCon;@\\ \mbox{}\verb@ int iLogin;@\\ \mbox{}\verb@ char pLoginWord[132];@\\ \mbox{}\verb@ time_t tStart;@\\ \mbox{}\verb@ } TelTask;@\\ \mbox{}\verb@@$\diamond$ \end{list} \vspace{-1ex} \footnotesize\addtolength{\baselineskip}{-1ex} \begin{list}{}{\setlength{\itemsep}{-\parsep}\setlength{\itemindent}{-\leftmargin}} \item Macro never referenced. \end{list} \end{minipage}\\[4ex] \end{flushleft} The fields are: \begin{description} \item[pCon] The connection object to act upon. \item[iLogin] If the connection is logged in or not. \item[pLoginWord] The login word to use. This word will be set as a SICS server option. \item[tStart] The start time of the telnet connection. Used to check for timeout on the connection. \end{description} The interface to this module looks like this: \begin{flushleft} \small \begin{minipage}{\linewidth} \label{scrap2} $\langle$telint {\footnotesize ?}$\rangle\equiv$ \vspace{-1ex} \begin{list}{}{} \item \mbox{}\verb@@\\ \mbox{}\verb@ typedef struct __TelTask *pTelTask;@\\ \mbox{}\verb@/*--------------------------------------------------------------------------*/@\\ \mbox{}\verb@ pTelTask CreateTelnet(SConnection *pCon);@\\ \mbox{}\verb@ void DeleteTelnet(void *pData);@\\ \mbox{}\verb@/*---------------------------------------------------------------------------*/@\\ \mbox{}\verb@ int TelnetTask(void *pData);@\\ \mbox{}\verb@ void TelnetSignal(void *pData, int iSignal, void *pSigData);@\\ \mbox{}\verb@/*--------------------------------------------------------------------------*/@\\ \mbox{}\verb@ void InstallTelnet(void);@\\ \mbox{}\verb@ void KillTelnet(void);@\\ \mbox{}\verb@@$\diamond$ \end{list} \vspace{-1ex} \footnotesize\addtolength{\baselineskip}{-1ex} \begin{list}{}{\setlength{\itemsep}{-\parsep}\setlength{\itemindent}{-\leftmargin}} \item Macro referenced in scrap ?. \end{list} \end{minipage}\\[4ex] \end{flushleft} \begin{description} \item[CreateTelnet] creates a new telnet task object. Returns NULL on failure, else apointer to a new data structure. \item[DeleteTelnet] The deletion function for a telnet task. \item[TelnetTask] The telnet task function. \item[TelnetSignal] The telnet signal function. \item[InstallTelnet] installs a telnet server port into the SICS system. \item[KillTelnet] deletes the telnet server port from the system. \end{description} \begin{flushleft} \small \begin{minipage}{\linewidth} \label{scrap3} \verb@"telnet.h"@ {\footnotesize ? }$\equiv$ \vspace{-1ex} \begin{list}{}{} \item \mbox{}\verb@@\\ \mbox{}\verb@/*-------------------------------------------------------------------------@\\ \mbox{}\verb@ S I C S T E L N E T S U P P O R T@\\ \mbox{}\verb@@\\ \mbox{}\verb@ This file defines the telnet task function and its associated data@\\ \mbox{}\verb@ structures. The body of the telnet handling code lives in the network@\\ \mbox{}\verb@ reader module.@\\ \mbox{}\verb@@\\ \mbox{}\verb@ Mark Koennecke, January 1998@\\ \mbox{}\verb@---------------------------------------------------------------------------*/@\\ \mbox{}\verb@#ifndef SICSTELNET@\\ \mbox{}\verb@#define SICSTELNET@\\ \mbox{}\verb@@$\langle$telint {\footnotesize ?}$\rangle$\verb@@\\ \mbox{}\verb@@\\ \mbox{}\verb@#endif@\\ \mbox{}\verb@ @\\ \mbox{}\verb@@$\diamond$ \end{list} \vspace{-2ex} \end{minipage}\\[4ex] \end{flushleft}