|
|
1.1 root 1: /* frame.h - getfto, getfrom, getflen, setfto, setfa, setfrom */
2:
3: #define FRACK '\030' /* frame ACK/NACK/SACK codes -- frame */
4: #define FRNACK '\060' /* sequence number appears in low- */
5: #define FRSACK '\070' /* order 3 bits of each */
6: #define FRCODE 070 /* mask for "code" part of ACK/NACK */
7: #define FRSEQ 07 /* mask for sequence part of ACK/NACK */
8: #define FRBCAST 0 /* broadcast address */
9: #define FRTIME 4 /* number of seconds to timeout a frame */
10: #define FRFAIL 2 /* number of failures for sack */
11: #define FRMINLEN 3 /* minimum legal frame length */
12: #define FRMAXLEN 128 /* maximum bytes in a frame */
13: #define FRMAXSEQ 3 /* maximum sequence number for frames */
14: #define FRSTACK 500 /* words of stack needed by frame proc. */
15: #define FRLEN sizeof(struct frame)
16: #define NFRAMES 40 /* total number of frame buffers */
17: #define FRIPRIO 30 /* input process priority */
18: #define FROPRIO 25 /* output process priority */
19: #define FRTPRIO 100 /* priority of timer process */
20: #define FIPORTS 20 /* size of input port queue */
21: #define FOPORTS 8 /* size of output port queue */
22: #define FFPORTS 10 /* size of forwarding queue */
23: #define FRTMSG 8191 /* timeout message for transmitter */
24:
25: #define getfto(x) ( ((x)&070) >>3)
26: #define getfrom(x) ( (x) & 07 )
27: #define getflen(fptr) ( fptr->frlen & 0377 )
28: #define setfto(fptr, x) fptr->fraddr = (fptr->fraddr & ~070) | ((x&07)<<3)
29: #define setfrom(fptr,x) fptr->fraddr = (fptr->fraddr & ~07) | (x&07)
30: #define setfa(fptr,t,f) fptr->fraddr = ( (t&07)<<3 ) | ( f&07 )
31:
32: /* frame structure */
33:
34: struct frame {
35: char fraddr; /* from/to addresses, each 3 bits */
36: char frseq; /* frame sequence number */
37: char frlen; /* length of frame including fraddr */
38: /* through all data. Does not count */
39: /* characters added by dlc */
40: char frdata[FRMAXLEN];
41: };
42:
43: struct fglob { /* global frame-level data */
44: int fiport; /* local machine input port */
45: int foport; /* local machine output port */
46: int ffport; /* forwarded frame port */
47: int fosem; /* output waiting semaphore */
48: int findev; /* input device id for this network */
49: int foutdev; /* output device id for this network */
50: int ftfuse; /* timer fuse for send on this net */
51: int ftpid; /* id of process to signal for timeout */
52: int fmachid; /* id of this machine on this network */
53: int ftimproc; /* timer process for this network */
54: int fiseq; /* next input sequence to expect */
55: int foseq; /* next output sequence number to write */
56: int fifails; /* number of input failures */
57: int fofails; /* number of output failures */
58: };
59:
60: extern struct fglob fdata[];
61: extern int frbpool;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.