/* * GLOBALS.C * * DNET (c)Copyright 1988, Matthew Dillon, All Rights Reserved. * * -restart/packet protocol * -dnet->amiga (DNET.READ) * -amiga->dnet (DNET.WRITE) */ #include "dnet.h" int Enable_Abort; IOT Rto; /* Read-Timeout/reset */ IOT Wto; /* Write-Timeout/retry */ IOT Cto; /* 1 second CD check / idle line*/ PKT Pkts[9]; /* data buffers for packets */ PKT *Raux = Pkts+8; /* next packet in */ PKT *RPak[4] = { Pkts+0,Pkts+1,Pkts+2,Pkts+3 }; PKT *WPak[4] = { Pkts+4,Pkts+5,Pkts+6,Pkts+7 }; PORT *DNetPort; /* Remote Command/Control in */ PORT *IOSink; /* Return port for ALL IO */ PORT *IPCPort; /* IPC software control port */ CHAN Chan[MAXCHAN]; /* Channels */ LIST TxList; /* For pending DNCMD_WRITE reqs. */ LIST SvList; /* List of waiting servers */ ubyte Rto_act; ubyte Wto_act; ubyte Cto_act; ubyte Cd; /* Carrier Detect Status */ uword WChan; /* Read and Write channels */ uword RChan; uword RPStart; uword WPStart; uword WPUsed; uword RState; short DDebug; short PDebug; ubyte Restart; /* Network restart mode */ ubyte OnLine; /* Network online */ ubyte Quit; /* Quit immediately */ short AutoAnswer = 0; /* Security Enable */ short DialOut = 1; /* Security Enable for DialOut */ short AutoHangup = 1; /* On carrier lost (-a opt) */ short Master8; short NetworkNum; ulong NumCon; /* # of connections currently active */ /* in CHAN_ROPEN/LOPEN/OPEN/CLOSE */ ulong WTimeoutVal; ulong RTimeoutVal; long Baud; long TOBaud; char *HostName = ""; /* * Status Info */ long BytesOut, PacketsOut, PacketsResent; long BytesIn , PacketsIn , PacketsNakd; long GarbageIn; #define ACK(win) (PKCMD_ACK|(win<<5)) #define NAK(win) (PKCMD_NAK|(win<<5)) #define CHECK(win) (PKCMD_CHECK|(win<<5)) #define CHK(com) ((SYNC<<1)^(com)) ubyte RestartPkt[3] = { SYNC, PKCMD_RESTART, CHK(PKCMD_RESTART) }; ubyte AckPkt[8][3] = { SYNC, ACK(0), CHK(ACK(0)), SYNC, ACK(1), CHK(ACK(1)), SYNC, ACK(2), CHK(ACK(2)), SYNC, ACK(3), CHK(ACK(3)), SYNC, ACK(4), CHK(ACK(4)), SYNC, ACK(5), CHK(ACK(5)), SYNC, ACK(6), CHK(ACK(6)), SYNC, ACK(7), CHK(ACK(7)) }; ubyte NakPkt[8][3] = { SYNC, NAK(0), CHK(NAK(0)), SYNC, NAK(1), CHK(NAK(1)), SYNC, NAK(2), CHK(NAK(2)), SYNC, NAK(3), CHK(NAK(3)), SYNC, NAK(4), CHK(NAK(4)), SYNC, NAK(5), CHK(NAK(5)), SYNC, NAK(6), CHK(NAK(6)), SYNC, NAK(7), CHK(NAK(7)) }; ubyte CheckPkt[8][3]= { SYNC, CHECK(0), CHK(CHECK(0)), SYNC, CHECK(1), CHK(CHECK(1)), SYNC, CHECK(2), CHK(CHECK(2)), SYNC, CHECK(3), CHK(CHECK(3)), SYNC, CHECK(4), CHK(CHECK(4)), SYNC, CHECK(5), CHK(CHECK(5)), SYNC, CHECK(6), CHK(CHECK(6)), SYNC, CHECK(7), CHK(CHECK(7)) };