92 lines
4.1 KiB
C
Executable File
92 lines
4.1 KiB
C
Executable File
|
|
extern LHEAD rxSegment; /* RX TCP-Segmente */
|
|
extern LHEAD txSegment; /* TX TCP-Segment. */
|
|
extern LHEAD rxDaten; /* RX-Buffer. */
|
|
|
|
#define TCP_HEADER 20 /* TCP-Headerlaenge. */
|
|
#define TCP_OPTION 8 /* TCP-Optionslaenge. */
|
|
|
|
/* TCP-Option-Flags */
|
|
#define TFIN 0x01 /* Socket schliessen. */
|
|
#define TSYN 0x02 /* Verbindungsaufbau starten. */
|
|
#define TRST 0x04 /* Verbindung zurueck setzen. */
|
|
#define TPSH 0x08 /* Daten senden. */
|
|
#define TACK 0x10 /* Bestaetigungen. */
|
|
#define TURGE 0x20 /* Flag ignored */
|
|
|
|
#define WINSIZE 512 /* Fenstergroesse festlegen. */
|
|
|
|
/* TCP-Options */
|
|
#define OPTEND 516 /* End of Option List. */
|
|
#define OPTNOO 257 /* No-Operation. */
|
|
#define OPTMSS 512 /* Maximum Segment Size. */
|
|
#define OPTPA3 1026
|
|
|
|
#define TCP_TIMEOUT 30 /* Timer-Wert fuer Segment Wiederholungen. */
|
|
#define TCP_MAX_RETRY 7 /* Maximal Wiederholen. */
|
|
|
|
typedef struct datenrx /* Struktur fuer RX-Bufferung. */
|
|
{
|
|
struct datenrx *next;
|
|
struct datenrx *prev;
|
|
#ifdef BUFFER_DEBUG
|
|
UBYTE owner; /* Muss an 9. Bytestelle stehen */
|
|
#endif
|
|
MBHEAD *Data; /* RX-Buffer eines Segment. */
|
|
int Sock; /* Socket vom Segment. */
|
|
} DATENRX;
|
|
|
|
typedef struct stackrx /* Struktur RX-Segment Empfang. */
|
|
{
|
|
struct stackrx *next;
|
|
struct stackrx *prev;
|
|
#ifdef BUFFER_DEBUG
|
|
UBYTE owner; /* Muss an 9. Bytestelle stehen */
|
|
#endif
|
|
MBHEAD *Data; /* Buffer eines Segment . */
|
|
IP *IpHdr; /* IP-Header. */
|
|
} STACKRX;
|
|
|
|
typedef struct stacktx /* Struktur TX-Segment senden. */
|
|
{
|
|
struct stacktx *next;
|
|
struct stacktx *prev;
|
|
#ifdef BUFFER_DEBUG
|
|
UBYTE owner; /* Muss an 9. Bytestelle stehen */
|
|
#endif
|
|
MBHEAD *Data; /* Buffer. */
|
|
int Sock; /* Socket. */
|
|
unsigned short Flags; /* TCP-Flags. */
|
|
unsigned char TState; /* TCP-Statusaenderung. */
|
|
int Timer; /* Timer. */
|
|
time_t TimeLast; /* */
|
|
int Retry; /* Retry-Zaehler. */
|
|
} STACKTX;
|
|
|
|
|
|
extern void StackInitTCP(void); /* TCP Initialisieren */
|
|
extern void StackSRV(void) ; /* TCP-Service */
|
|
extern void StackTimer(void); /* Timer fuer Frame-Wiederholungen. */
|
|
|
|
extern void SendTcpFlag(register int,/* Frame fuer IP-Router vorbereiten. */
|
|
|
|
MBHEAD *,
|
|
unsigned int,
|
|
unsigned short,
|
|
unsigned short,
|
|
unsigned short);
|
|
|
|
extern void TCPIPProcess(register IP *,/* Eingehende TCP-Daten weiter-*/
|
|
register MBHEAD *);/* leiten in die RX-Seg.-liste*/
|
|
|
|
extern void PutTXStack(register int, /* Neues TX-Segment in die Sende-*/
|
|
MBHEAD *, /* liste anlegen/anhaengen. */
|
|
int,
|
|
unsigned short,
|
|
unsigned char);
|
|
|
|
extern void DelSock(int); /* Entsorge alle Buffer vom Socket. */
|
|
extern DATENRX *GetBuffer(TSOCKET *); /* Einen Eintrag aus der RX-Liste holen.*/
|
|
|
|
/* End of include/l3tcp.h. */
|