1/****************************************************************************
2 *******                                                              *******
3 *******            P A C K E T   H E A D E R   F I L E
4 *******                                                              *******
5 ****************************************************************************
6
7 Author  : Ian Nandhra / Jeremy Rolls
8 Date    :
9
10 *
11 *  (C) 1990 - 2000 Specialix International Ltd., Byfleet, Surrey, UK.
12 *
13 *      This program is free software; you can redistribute it and/or modify
14 *      it under the terms of the GNU General Public License as published by
15 *      the Free Software Foundation; either version 2 of the License, or
16 *      (at your option) any later version.
17 *
18 *      This program is distributed in the hope that it will be useful,
19 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
20 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21 *      GNU General Public License for more details.
22 *
23 *      You should have received a copy of the GNU General Public License
24 *      along with this program; if not, write to the Free Software
25 *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
26
27 Version : 0.01
28
29
30                            Mods
31 ----------------------------------------------------------------------------
32  Date     By                Description
33 ----------------------------------------------------------------------------
34
35 ***************************************************************************/
36
37#ifndef _pkt_h
38#define _pkt_h 1
39
40
41#ifdef SCCS_LABELS
42#ifndef lint
43/* static char *_rio_pkt_h_sccs = "@(#)pkt.h	1.8"; */
44#endif
45#endif
46
47#define MAX_TTL         0xf
48#define PKT_CMD_BIT     ((ushort) 0x080)
49#define PKT_CMD_DATA    ((ushort) 0x080)
50
51#define PKT_ACK         ((ushort) 0x040)
52
53#define PKT_TGL         ((ushort) 0x020)
54
55#define PKT_LEN_MASK    ((ushort) 0x07f)
56
57#define DATA_WNDW       ((ushort) 0x10)
58#define PKT_TTL_MASK    ((ushort) 0x0f)
59
60#define PKT_MAX_DATA_LEN   72
61
62#define PKT_LENGTH         sizeof(struct PKT)
63#define SYNC_PKT_LENGTH    (PKT_LENGTH + 4)
64
65#define CONTROL_PKT_LEN_MASK PKT_LEN_MASK
66#define CONTROL_PKT_CMD_BIT  PKT_CMD_BIT
67#define CONTROL_PKT_ACK (PKT_ACK << 8)
68#define CONTROL_PKT_TGL (PKT_TGL << 8)
69#define CONTROL_PKT_TTL_MASK (PKT_TTL_MASK << 8)
70#define CONTROL_DATA_WNDW  (DATA_WNDW << 8)
71
72struct PKT    {
73#ifdef INKERNEL
74                   BYTE    dest_unit ;    /* Destination Unit Id */
75                   BYTE    dest_port ;    /* Destination POrt */
76                   BYTE    src_unit ;     /* Source Unit Id */
77                   BYTE    src_port ;     /* Source POrt */
78#else
79                   union
80                   {
81                       ushort destination;         /* Complete destination */
82                       struct
83                       {
84                           unsigned char unit;     /* Destination unit */
85                           unsigned char port;     /* Destination port */
86                       } s1;
87                   } u1;
88                   union
89                   {
90                       ushort source;              /* Complete source */
91                       struct
92                       {
93                           unsigned char unit;     /* Source unit */
94                           unsigned char port;     /* Source port */
95                       } s2;
96                   } u2;
97#endif
98#ifdef INKERNEL
99                   BYTE len ;
100                   BYTE control;
101#else
102                   union
103                   {
104                        ushort      control;
105                        struct
106                        {
107                            unsigned char len;
108                            unsigned char control;
109                        } s3;
110                    } u3;
111#endif
112                   BYTE    data[PKT_MAX_DATA_LEN] ;
113                                                   /* Actual data :-) */
114                   WORD  csum ;                  /* C-SUM */
115               } ;
116#endif
117
118/*********** end of file ***********/
119
120
121