/* * 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 */ IOR *RNet; /* read-request */ IOR *WNet; /* write-request */ 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 */ CHAN Chan[MAXCHAN]; /* Channels */ LIST TxList; /* For pending DNCMD_WRITE reqs. */ LIST SvList; /* List of waiting servers */ ubyte Rto_act; ubyte Wto_act; uword WChan; /* Read and Write channels */ uword RChan; uword RPStart; uword WPStart; uword WPUsed; uword RState; ubyte DDebug; ubyte Restart; /* Network restart mode */ ubyte DeldQuit; /* Quit after all connections cease */ ubyte AutoHangup; ulong NumCon; /* # of connections currently active */ /* in CHAN_ROPEN/LOPEN/OPEN/CLOSE */ ulong WTimeoutVal; ulong RTimeoutVal; long Baud; char *HostName = ""; #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)) };