home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 239.lha / amiga / src / dnet / dnet.h < prev    next >
Encoding:
C/C++ Source or Header  |  1989-05-02  |  5.6 KB  |  210 lines

  1.  
  2. /*
  3.  *  DNET.H
  4.  *
  5.  *  DNET (c)Copyright 1988, Matthew Dillon, All Rights Reserved.
  6.  *
  7.  */
  8.  
  9. #include <local/typedefs.h>
  10. #include <local/ioctl.h>
  11. #include "/version.h"
  12.  
  13. #define DNET_H
  14.  
  15. #define DMNWOFF     4        /*    Deemu offset to NewWindow structure */
  16.  
  17. typedef struct IOStdReq     IOR;
  18.  
  19. #include "/dnet/channel.h"
  20.  
  21. #ifndef MAX(a,b)
  22. #define MAX(a,b) (((a)>(b))?(a):(b))
  23. #endif
  24.  
  25. #define CFGFILE "s:dnet.config"
  26.  
  27. #define PKT    struct _PKT
  28. #define PNODE    struct _PNODE
  29. #define IOMSG    struct _IOMSG
  30.  
  31. #define BTOC(yow)           ((ubyte *)((long)(yow) << 2))
  32. #define DNETPORTNAME        "DNET.UNIT."
  33. #define OFFSET(ptr,elem)    ((long)((char *)&(ptr)->elem - (char *)(ptr)))
  34.  
  35. #define EMPTY    0    /*  empty (sent)                    */
  36. #define READY    1    /*  data ready (not sent yet)       */
  37.  
  38. #define MAXCHAN 128    /*  Max # of channels supported     */
  39. #define SYNC    0xFF    /*  SYNC character            */
  40. #define MAXPKT    200    /*  maximum packet size         */
  41. #define MINPKT    32    /*  minimum maximum packet size
  42.                 (for priority scheme)           */
  43.  
  44. #define OVERHEAD    7    /*  for packets with data        */
  45.  
  46. PNODE {
  47.     NODE    node;
  48.     char    name[32];
  49.     ulong   seg;
  50. };
  51.  
  52. PKT {
  53.     uword   iolength;    /*  send: length of packet, recv: length of data    */
  54.     ubyte   state;    /*  EMPTY, READY                    */
  55.  
  56.     ubyte   sync;    /*  THE PACKET        */
  57.     ubyte   ctl;
  58.     ubyte   cchk;
  59.     ubyte   lenh;
  60.     ubyte   lenl;
  61.     ubyte   data[MAXPKT+2];
  62. };
  63.  
  64. /*
  65.  *  Used by the IoCtl() support routines.
  66.  */
  67.  
  68. IOMSG {
  69.     MSG     Msg;
  70.     TASK    *ReplyTask;
  71.     ulong   Cmd;
  72.     ulong   Arg1;
  73.     ulong   Arg2;
  74.     ulong   Res;
  75. };
  76.  
  77.             /*  RECEIVER STATES            */
  78. #define RS_SYNC 0        /*    Waiting for sync        */
  79. #define RS_CTL    1        /*    Waiting for command        */
  80. #define RS_CCHK 2        /*    Waiting for check byte        */
  81. #define RS_LEN1 3        /*    Waiting for MSB length byte    */
  82. #define RS_LEN2 4        /*    Waiting for LSB length byte    */
  83. #define RS_DATA 5        /*    Waiting for data & checksum    */
  84.  
  85. #define DNCMD_OPEN    32  /*    Application open        */
  86. #define DNCMD_SOPEN    33  /*    Server open            */
  87. #define DNCMD_CLOSE    34  /*    Close a channel         */
  88. #define DNCMD_EOF    35  /*    Will no longer write to channel */
  89.  
  90. #define DNCMD_WRITE    36  /*    Write data to a channel     */
  91. #define DNCMD_QUIT    37  /*    Kill the DNET server        */
  92. #define DNCMD_IOCTL    38
  93.  
  94. #define DNCMD_INFO    64  /*    Ascii status message        */
  95.  
  96.                 /*  REQUEST TYPES        */
  97. #define RTO_REQ     1   /*    Network read timeout        */
  98. #define WTO_REQ     2   /*    Network write-ack timeout    */
  99. #define RNET_REQ    3   /*    Network read data        */
  100. #define WNET_REQ    4   /*    Network write data sent     */
  101. #define PKT_REQ     5   /*    Returned packets from servers    */
  102. #define OPEN_REQ    6
  103. #define IGWNET_REQ    7
  104. #define CTO_REQ     8
  105. #define CNET_REQ    9
  106.  
  107.                     /*    PACKET CONTROL BYTE */
  108. #define PKF_SEQUENCE    0xE0    /*  Sequence #            */
  109. #define PKF_DATA    0x10    /*  1-65535 bytes        */
  110. #define PKF_RESERVED    0x08    /*  reserved bit        */
  111. #define PKF_MASK    0x07    /*  command mask        */
  112.  
  113. #define PKCMD_WRITE    1    /*  A DATA packet        */
  114. #define PKCMD_CHECK    2    /*  Request ACK or NAK for win    */
  115. #define PKCMD_ACK    3    /*  ACK a window        */
  116. #define PKCMD_NAK    4    /*  NAK a window        */
  117. #define PKCMD_RESTART    5    /*  Restart            */
  118. #define PKCMD_ACKRSTART 6    /*  Restart Acknowledge     */
  119. #define PKCMD_RESERVE3    7
  120.                     /*    CHANNEL COMMANDS    */
  121. #define SCMD_SWITCH    0x00    /*  switch active channel #    */
  122. #define SCMD_OPEN    0x01    /*  open a channel        */
  123. #define SCMD_CLOSE    0x02    /*  close a channel        */
  124. #define SCMD_ACKCMD    0x03    /*  ack an open/close request    */
  125. #define SCMD_EOFCMD    0x04    /*  Reof or Weof        */
  126. #define SCMD_QUIT    0x05    /*  crash dnet            */
  127. #define SCMD_IOCTL    0x06    /*  ioctl            */
  128.  
  129. #define SCMD_DATA    0x08    /*  stream command, DATA    */
  130. #define SCMD_DATA7    0x09    /*  stream command, 7 bit DATA    */
  131.  
  132. #define CHAN_FREE    0x01    /*  free channel        */
  133. #define CHAN_ROPEN    0x02    /*  remote open, wait port msg    */
  134. #define CHAN_LOPEN    0x03    /*  local open, wait reply    */
  135. #define CHAN_OPEN    0x04
  136. #define CHAN_CLOSE    0x05    /*  see flags            */
  137. #define CHANF_ROK    0x01    /*  NOT read eof        */
  138. #define CHANF_WOK    0x02    /*  remote will accept data    */
  139. #define CHANF_LCLOSE    0x04
  140. #define CHANF_RCLOSE    0x08
  141.  
  142. extern void  *GetMsg();
  143. extern void  *RemHead();
  144. extern void  *AllocMem();
  145. extern void  *FindTask();
  146. extern void  *ArbitrateNext();
  147. extern long  IoHandler();
  148.  
  149. #ifndef NOEXT
  150. extern IOT Rto;            /*  Read-Timeout/reset           */
  151. extern IOT Wto;            /*  Write-Timeout/retry           */
  152. extern IOT Cto;
  153. extern PKT Pkts[9];
  154. extern PKT *Raux;           /*  next packet in           */
  155. extern PKT *RPak[4];
  156. extern PKT *WPak[4];
  157. extern PORT *DNetPort;           /*  Remote Command/Control in    */
  158. extern PORT *IOSink;           /*  Return port for ALL IO    */
  159. extern PORT *IPCPort;           /*  IPC comm port.        */
  160. extern CHAN Chan[MAXCHAN];
  161. extern LIST TxList;           /*  For pending DNCMD_WRITE reqs.   */
  162. extern LIST SvList;
  163. extern ubyte Rto_act;
  164. extern ubyte Wto_act;
  165. extern ubyte Cto_act;
  166. extern ubyte Cd;
  167. extern uword RChan;
  168. extern uword WChan;
  169. extern uword RPStart;
  170. extern uword WPStart;
  171. extern uword WPUsed;
  172. extern uword RState;
  173. extern short DDebug;
  174. extern short PDebug;
  175. extern ubyte Restart;
  176. extern ubyte OnLine;
  177. extern ubyte Quit;
  178. extern short AutoHangup;
  179. extern short DialOut;
  180. extern short AutoAnswer;
  181. extern short Master8;
  182. extern short NetworkNum;
  183. extern ulong NumCon;
  184. extern ulong WTimeoutVal;
  185. extern ulong RTimeoutVal;
  186. extern long Baud;
  187. extern long TOBaud;
  188. extern char *HostName;        /*    The Amiga's HostName    */
  189. extern long DResBase;
  190. extern char PortName[];
  191.  
  192. extern ubyte RestartPkt[3];
  193. extern ubyte AckPkt[8][3];
  194. extern ubyte NakPkt[8][3];
  195. extern ubyte CheckPkt[8][3];
  196.  
  197. extern short Deemu[];
  198.  
  199. extern long    BytesOut, PacketsOut, PacketsResent;
  200. extern long    BytesIn , PacketsIn , PacketsNakd;
  201. extern long    GarbageIn;
  202.  
  203. extern char *GetCfgLine();
  204.  
  205. extern IOSER *NetReadReady();
  206. extern IOSER *NetAbortRead();
  207.  
  208. #endif
  209.  
  210.