xref: /openbsd-src/usr.sbin/tcpdump/decnet.h (revision 2068f6866b8079dd0e3bc8189f056d1db3480a77)
1*2068f686Sderaadt /*	$OpenBSD: decnet.h,v 1.7 2007/10/07 16:41:05 deraadt Exp $	*/
2cf4e9b47Sho 
3df930be7Sderaadt /*
4c15d59edSmickey  * Copyright (c) 1992, 1994, 1996
5df930be7Sderaadt  *	The Regents of the University of California.  All rights reserved.
6df930be7Sderaadt  *
7df930be7Sderaadt  * Redistribution and use in source and binary forms, with or without
8df930be7Sderaadt  * modification, are permitted provided that: (1) source code distributions
9df930be7Sderaadt  * retain the above copyright notice and this paragraph in its entirety, (2)
10df930be7Sderaadt  * distributions including binary code include the above copyright notice and
11df930be7Sderaadt  * this paragraph in its entirety in the documentation or other materials
12df930be7Sderaadt  * provided with the distribution, and (3) all advertising materials mentioning
13df930be7Sderaadt  * features or use of this software display the following acknowledgement:
14df930be7Sderaadt  * ``This product includes software developed by the University of California,
15df930be7Sderaadt  * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
16df930be7Sderaadt  * the University nor the names of its contributors may be used to endorse
17df930be7Sderaadt  * or promote products derived from this software without specific prior
18df930be7Sderaadt  * written permission.
19df930be7Sderaadt  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
20df930be7Sderaadt  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
21df930be7Sderaadt  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
22df930be7Sderaadt  *
23*2068f686Sderaadt  * @(#) $Id: decnet.h,v 1.7 2007/10/07 16:41:05 deraadt Exp $ (LBL)
24df930be7Sderaadt  */
25df930be7Sderaadt 
26df930be7Sderaadt typedef unsigned char byte[1];		/* single byte field */
27df930be7Sderaadt typedef unsigned char word[2];		/* 2 byte field */
28df930be7Sderaadt typedef unsigned char longword[4];	/* 4 bytes field */
29df930be7Sderaadt 
30df930be7Sderaadt /*
31df930be7Sderaadt  * Definitions for DECNET Phase IV protocol headers
32df930be7Sderaadt  */
33df930be7Sderaadt union etheraddress {
34df930be7Sderaadt 	unsigned char   dne_addr[6];		/* full ethernet address */
35df930be7Sderaadt 	struct {
36df930be7Sderaadt 		unsigned char dne_hiord[4];	/* DECnet HIORD prefix */
37df930be7Sderaadt 		unsigned char dne_nodeaddr[2];	/* DECnet node address */
38df930be7Sderaadt 	} dne_remote;
39df930be7Sderaadt };
40df930be7Sderaadt 
41df930be7Sderaadt typedef union etheraddress etheraddr;	/* Ethernet address */
42df930be7Sderaadt 
43df930be7Sderaadt #define HIORD 0x000400aa		/* high 32-bits of address (swapped) */
44df930be7Sderaadt 
45df930be7Sderaadt #define AREAMASK	0176000		/* mask for area field */
46df930be7Sderaadt #define	AREASHIFT	10		/* bit-offset for area field */
47df930be7Sderaadt #define NODEMASK	01777		/* mask for node address field */
48df930be7Sderaadt 
49df930be7Sderaadt #define DN_MAXADDL	20		/* max size of DECnet address */
50df930be7Sderaadt struct dn_naddr {
51df930be7Sderaadt 	unsigned short	a_len;		/* length of address */
52df930be7Sderaadt 	unsigned char a_addr[DN_MAXADDL]; /* address as bytes */
53df930be7Sderaadt };
54df930be7Sderaadt 
55df930be7Sderaadt /*
56df930be7Sderaadt  * Define long and short header formats.
57df930be7Sderaadt  */
58df930be7Sderaadt struct shorthdr
59df930be7Sderaadt   {
60df930be7Sderaadt     byte	sh_flags;		/* route flags */
61df930be7Sderaadt     word	sh_dst;			/* destination node address */
62df930be7Sderaadt     word	sh_src;			/* source node address */
63df930be7Sderaadt     byte	sh_visits;		/* visit count */
64df930be7Sderaadt   };
65df930be7Sderaadt 
66df930be7Sderaadt struct longhdr
67df930be7Sderaadt   {
68df930be7Sderaadt     byte	lg_flags;		/* route flags */
69df930be7Sderaadt     byte	lg_darea;		/* destination area (reserved) */
70df930be7Sderaadt     byte	lg_dsarea;		/* destination subarea (reserved) */
71df930be7Sderaadt     etheraddr	lg_dst;			/* destination id */
72df930be7Sderaadt     byte	lg_sarea;		/* source area (reserved) */
73df930be7Sderaadt     byte	lg_ssarea;		/* source subarea (reserved) */
74df930be7Sderaadt     etheraddr	lg_src;			/* source id */
75df930be7Sderaadt     byte	lg_nextl2;		/* next level 2 router (reserved) */
76df930be7Sderaadt     byte	lg_visits;		/* visit count */
77df930be7Sderaadt     byte	lg_service;		/* service class (reserved) */
78df930be7Sderaadt     byte	lg_pt;			/* protocol type (reserved) */
79df930be7Sderaadt   };
80df930be7Sderaadt 
81df930be7Sderaadt union routehdr
82df930be7Sderaadt   {
83df930be7Sderaadt     struct shorthdr rh_short;		/* short route header */
84df930be7Sderaadt     struct longhdr rh_long;		/* long route header */
85df930be7Sderaadt   };
86df930be7Sderaadt 
87df930be7Sderaadt /*
88df930be7Sderaadt  * Define the values of various fields in the protocol messages.
89df930be7Sderaadt  *
90df930be7Sderaadt  * 1. Data packet formats.
91df930be7Sderaadt  */
92df930be7Sderaadt #define RMF_MASK	7		/* mask for message type */
93df930be7Sderaadt #define RMF_SHORT	2		/* short message format */
94df930be7Sderaadt #define RMF_LONG	6		/* long message format */
95df930be7Sderaadt #ifndef RMF_RQR
96df930be7Sderaadt #define RMF_RQR		010		/* request return to sender */
97df930be7Sderaadt #define RMF_RTS		020		/* returning to sender */
98df930be7Sderaadt #define RMF_IE		040		/* intra-ethernet packet */
99df930be7Sderaadt #endif /* RMR_RQR */
100df930be7Sderaadt #define RMF_FVER	0100		/* future version flag */
101df930be7Sderaadt #define RMF_PAD		0200		/* pad field */
102df930be7Sderaadt #define RMF_PADMASK	0177		/* pad field mask */
103df930be7Sderaadt 
104df930be7Sderaadt #define VIS_MASK	077		/* visit field mask */
105df930be7Sderaadt 
106df930be7Sderaadt /*
107df930be7Sderaadt  * 2. Control packet formats.
108df930be7Sderaadt  */
109df930be7Sderaadt #define RMF_CTLMASK	017		/* mask for message type */
110df930be7Sderaadt #define RMF_CTLMSG	01		/* control message indicator */
111c15d59edSmickey #define RMF_INIT	01		/* initialization message */
112df930be7Sderaadt #define RMF_VER		03		/* verification message */
113df930be7Sderaadt #define RMF_TEST	05		/* hello and test message */
114df930be7Sderaadt #define RMF_L1ROUT	07		/* level 1 routing message */
115df930be7Sderaadt #define RMF_L2ROUT	011		/* level 2 routing message */
116df930be7Sderaadt #define RMF_RHELLO	013		/* router hello message */
117df930be7Sderaadt #define RMF_EHELLO	015		/* endnode hello message */
118df930be7Sderaadt 
119df930be7Sderaadt #define TI_L2ROUT	01		/* level 2 router */
120df930be7Sderaadt #define TI_L1ROUT	02		/* level 1 router */
121df930be7Sderaadt #define TI_ENDNODE	03		/* endnode */
122df930be7Sderaadt #define TI_VERIF	04		/* verification required */
123df930be7Sderaadt #define TI_BLOCK	010		/* blocking requested */
124df930be7Sderaadt 
125df930be7Sderaadt #define VE_VERS		2		/* version number (2) */
126df930be7Sderaadt #define VE_ECO		0		/* ECO number */
127df930be7Sderaadt #define VE_UECO		0		/* user ECO number (0) */
128df930be7Sderaadt 
129df930be7Sderaadt #define P3_VERS		1		/* phase III version number (1) */
130df930be7Sderaadt #define P3_ECO		3		/* ECO number (3) */
131df930be7Sderaadt #define P3_UECO		0		/* user ECO number (0) */
132df930be7Sderaadt 
133df930be7Sderaadt #define II_L2ROUT	01		/* level 2 router */
134df930be7Sderaadt #define II_L1ROUT	02		/* level 1 router */
135df930be7Sderaadt #define II_ENDNODE	03		/* endnode */
136df930be7Sderaadt #define II_VERIF	04		/* verification required */
137df930be7Sderaadt #define II_NOMCAST	040		/* no multicast traffic accepted */
138df930be7Sderaadt #define II_BLOCK	0100		/* blocking requested */
139df930be7Sderaadt #define II_TYPEMASK	03		/* mask for node type */
140df930be7Sderaadt 
141df930be7Sderaadt #define TESTDATA	0252		/* test data bytes */
142df930be7Sderaadt #define TESTLEN		1		/* length of transmitted test data */
143df930be7Sderaadt 
144df930be7Sderaadt /*
145df930be7Sderaadt  * Define control message formats.
146df930be7Sderaadt  */
147c15d59edSmickey struct initmsgIII			/* phase III initialization message */
148df930be7Sderaadt   {
149df930be7Sderaadt     byte	inIII_flags;		/* route flags */
150df930be7Sderaadt     word	inIII_src;		/* source node address */
151df930be7Sderaadt     byte	inIII_info;		/* routing layer information */
152df930be7Sderaadt     word	inIII_blksize;		/* maximum data link block size */
153df930be7Sderaadt     byte	inIII_vers;		/* version number */
154df930be7Sderaadt     byte	inIII_eco;		/* ECO number */
155df930be7Sderaadt     byte	inIII_ueco;		/* user ECO number */
156df930be7Sderaadt     byte	inIII_rsvd;		/* reserved image field */
157df930be7Sderaadt   };
158df930be7Sderaadt 
159c15d59edSmickey struct initmsg				/* initialization message */
160df930be7Sderaadt   {
161df930be7Sderaadt     byte	in_flags;		/* route flags */
162df930be7Sderaadt     word	in_src;			/* source node address */
163df930be7Sderaadt     byte	in_info;		/* routing layer information */
164df930be7Sderaadt     word	in_blksize;		/* maximum data link block size */
165df930be7Sderaadt     byte	in_vers;		/* version number */
166df930be7Sderaadt     byte	in_eco;			/* ECO number */
167df930be7Sderaadt     byte	in_ueco;		/* user ECO number */
168df930be7Sderaadt     word	in_hello;		/* hello timer */
169df930be7Sderaadt     byte	in_rsvd;		/* reserved image field */
170df930be7Sderaadt   };
171df930be7Sderaadt 
172df930be7Sderaadt struct verifmsg				/* verification message */
173df930be7Sderaadt   {
174df930be7Sderaadt     byte	ve_flags;		/* route flags */
175df930be7Sderaadt     word	ve_src;			/* source node address */
176df930be7Sderaadt     byte	ve_fcnval;		/* function value image field */
177df930be7Sderaadt   };
178df930be7Sderaadt 
179df930be7Sderaadt struct testmsg				/* hello and test message */
180df930be7Sderaadt   {
181df930be7Sderaadt     byte	te_flags;		/* route flags */
182df930be7Sderaadt     word	te_src;			/* source node address */
183df930be7Sderaadt     byte	te_data;		/* test data image field */
184df930be7Sderaadt   };
185df930be7Sderaadt 
186df930be7Sderaadt struct l1rout				/* level 1 routing message */
187df930be7Sderaadt   {
188df930be7Sderaadt     byte	r1_flags;		/* route flags */
189df930be7Sderaadt     word	r1_src;			/* source node address */
190df930be7Sderaadt     byte	r1_rsvd;		/* reserved field */
191df930be7Sderaadt   };
192df930be7Sderaadt 
193df930be7Sderaadt struct l2rout				/* level 2 routing message */
194df930be7Sderaadt   {
195df930be7Sderaadt     byte	r2_flags;		/* route flags */
196df930be7Sderaadt     word	r2_src;			/* source node address */
197df930be7Sderaadt     byte	r2_rsvd;		/* reserved field */
198df930be7Sderaadt   };
199df930be7Sderaadt 
200df930be7Sderaadt struct rhellomsg			/* router hello message */
201df930be7Sderaadt   {
202df930be7Sderaadt     byte	rh_flags;		/* route flags */
203df930be7Sderaadt     byte	rh_vers;		/* version number */
204df930be7Sderaadt     byte	rh_eco;			/* ECO number */
205df930be7Sderaadt     byte	rh_ueco;		/* user ECO number */
206df930be7Sderaadt     etheraddr	rh_src;			/* source id */
207df930be7Sderaadt     byte	rh_info;		/* routing layer information */
208df930be7Sderaadt     word	rh_blksize;		/* maximum data link block size */
209df930be7Sderaadt     byte	rh_priority;		/* router's priority */
210df930be7Sderaadt     byte	rh_area;		/* reserved */
211df930be7Sderaadt     word	rh_hello;		/* hello timer */
212df930be7Sderaadt     byte	rh_mpd;			/* reserved */
213df930be7Sderaadt   };
214df930be7Sderaadt 
215df930be7Sderaadt struct ehellomsg			/* endnode hello message */
216df930be7Sderaadt   {
217df930be7Sderaadt     byte	eh_flags;		/* route flags */
218df930be7Sderaadt     byte	eh_vers;		/* version number */
219df930be7Sderaadt     byte	eh_eco;			/* ECO number */
220df930be7Sderaadt     byte	eh_ueco;		/* user ECO number */
221df930be7Sderaadt     etheraddr	eh_src;			/* source id */
222df930be7Sderaadt     byte	eh_info;		/* routing layer information */
223df930be7Sderaadt     word	eh_blksize;		/* maximum data link block size */
224df930be7Sderaadt     byte	eh_area;		/* area (reserved) */
225df930be7Sderaadt     byte	eh_seed[8];		/* verification seed */
226df930be7Sderaadt     etheraddr	eh_router;		/* designated router */
227df930be7Sderaadt     word	eh_hello;		/* hello timer */
228df930be7Sderaadt     byte	eh_mpd;			/* (reserved) */
229df930be7Sderaadt     byte	eh_data;		/* test data image field */
230df930be7Sderaadt   };
231df930be7Sderaadt 
232df930be7Sderaadt union controlmsg
233df930be7Sderaadt   {
234c15d59edSmickey     struct initmsg	cm_init;	/* initialization message */
235df930be7Sderaadt     struct verifmsg	cm_ver;		/* verification message */
236df930be7Sderaadt     struct testmsg	cm_test;	/* hello and test message */
237df930be7Sderaadt     struct l1rout	cm_l1rou;	/* level 1 routing message */
238df930be7Sderaadt     struct l2rout	cm_l2rout;	/* level 2 routing message */
239df930be7Sderaadt     struct rhellomsg	cm_rhello;	/* router hello message */
240df930be7Sderaadt     struct ehellomsg	cm_ehello;	/* endnode hello message */
241df930be7Sderaadt   };
242df930be7Sderaadt 
243df930be7Sderaadt /* Macros for decoding routing-info fields */
244df930be7Sderaadt #define	RI_COST(x)	((x)&0777)
245df930be7Sderaadt #define	RI_HOPS(x)	(((x)>>10)&037)
246df930be7Sderaadt 
247df930be7Sderaadt /*
248df930be7Sderaadt  * NSP protocol fields and values.
249df930be7Sderaadt  */
250df930be7Sderaadt 
251df930be7Sderaadt #define NSP_TYPEMASK 014		/* mask to isolate type code */
252df930be7Sderaadt #define NSP_SUBMASK 0160		/* mask to isolate subtype code */
253df930be7Sderaadt #define NSP_SUBSHFT 4			/* shift to move subtype code */
254df930be7Sderaadt 
255df930be7Sderaadt #define MFT_DATA 0			/* data message */
256df930be7Sderaadt #define MFT_ACK  04			/* acknowledgement message */
257df930be7Sderaadt #define MFT_CTL  010			/* control message */
258df930be7Sderaadt 
259df930be7Sderaadt #define MFS_ILS  020			/* data or I/LS indicator */
260df930be7Sderaadt #define MFS_BOM  040			/* beginning of message (data) */
261df930be7Sderaadt #define MFS_MOM  0			/* middle of message (data) */
262df930be7Sderaadt #define MFS_EOM  0100			/* end of message (data) */
263df930be7Sderaadt #define MFS_INT  040			/* interrupt message */
264df930be7Sderaadt 
265df930be7Sderaadt #define MFS_DACK 0			/* data acknowledgement */
266df930be7Sderaadt #define MFS_IACK 020			/* I/LS acknowledgement */
267df930be7Sderaadt #define MFS_CACK 040			/* connect acknowledgement */
268df930be7Sderaadt 
269df930be7Sderaadt #define MFS_NOP  0			/* no operation */
270df930be7Sderaadt #define MFS_CI   020			/* connect initiate */
271df930be7Sderaadt #define MFS_CC   040			/* connect confirm */
272df930be7Sderaadt #define MFS_DI   060			/* disconnect initiate */
273df930be7Sderaadt #define MFS_DC   0100			/* disconnect confirm */
274df930be7Sderaadt #define MFS_RCI  0140			/* retransmitted connect initiate */
275df930be7Sderaadt 
276df930be7Sderaadt #define SGQ_ACK  0100000		/* ack */
277df930be7Sderaadt #define SGQ_NAK  0110000		/* negative ack */
278df930be7Sderaadt #define SGQ_OACK 0120000		/* other channel ack */
279df930be7Sderaadt #define SGQ_ONAK 0130000		/* other channel negative ack */
280df930be7Sderaadt #define SGQ_MASK 07777			/* mask to isolate seq # */
281df930be7Sderaadt #define SGQ_OTHER 020000		/* other channel qualifier */
282df930be7Sderaadt #define SGQ_DELAY 010000		/* ack delay flag */
283df930be7Sderaadt 
284df930be7Sderaadt #define SGQ_EOM  0100000		/* pseudo flag for end-of-message */
285df930be7Sderaadt 
286df930be7Sderaadt #define LSM_MASK 03			/* mask for modifier field */
287df930be7Sderaadt #define LSM_NOCHANGE 0			/* no change */
288df930be7Sderaadt #define LSM_DONOTSEND 1			/* do not send data */
289df930be7Sderaadt #define LSM_SEND 2			/* send data */
290df930be7Sderaadt 
291df930be7Sderaadt #define LSI_MASK 014			/* mask for interpretation field */
292df930be7Sderaadt #define LSI_DATA 0			/* data segment or message count */
293df930be7Sderaadt #define LSI_INTR 4			/* interrupt request count */
294df930be7Sderaadt #define LSI_INTM 0377			/* funny marker for int. message */
295df930be7Sderaadt 
296df930be7Sderaadt #define COS_MASK 014			/* mask for flow control field */
297df930be7Sderaadt #define COS_NONE 0			/* no flow control */
298df930be7Sderaadt #define COS_SEGMENT 04			/* segment flow control */
299df930be7Sderaadt #define COS_MESSAGE 010			/* message flow control */
300df930be7Sderaadt #define COS_CRYPTSER 020		/* cryptographic services requested */
301df930be7Sderaadt #define COS_DEFAULT 1			/* default value for field */
302df930be7Sderaadt 
303df930be7Sderaadt #define COI_MASK 3			/* mask for version field */
304df930be7Sderaadt #define COI_32 0			/* version 3.2 */
305df930be7Sderaadt #define COI_31 1			/* version 3.1 */
306df930be7Sderaadt #define COI_40 2			/* version 4.0 */
307df930be7Sderaadt #define COI_41 3			/* version 4.1 */
308df930be7Sderaadt 
309df930be7Sderaadt #define MNU_MASK 140			/* mask for session control version */
310df930be7Sderaadt #define MNU_10 000				/* session V1.0 */
311df930be7Sderaadt #define MNU_20 040				/* session V2.0 */
312df930be7Sderaadt #define MNU_ACCESS 1			/* access control present */
313df930be7Sderaadt #define MNU_USRDATA 2			/* user data field present */
314df930be7Sderaadt #define MNU_INVKPROXY 4			/* invoke proxy field present */
315df930be7Sderaadt #define MNU_UICPROXY 8			/* use uic-based proxy */
316df930be7Sderaadt 
317df930be7Sderaadt #define DC_NORESOURCES 1		/* no resource reason code */
318df930be7Sderaadt #define DC_NOLINK 41			/* no link terminate reason code */
319df930be7Sderaadt #define DC_COMPLETE 42			/* disconnect complete reason code */
320df930be7Sderaadt 
321df930be7Sderaadt #define DI_NOERROR 0			/* user disconnect */
322df930be7Sderaadt #define DI_SHUT 3			/* node is shutting down */
323df930be7Sderaadt #define DI_NOUSER 4			/* destination end user does not exist */
324df930be7Sderaadt #define DI_INVDEST 5			/* invalid end user destination */
325df930be7Sderaadt #define DI_REMRESRC 6			/* insufficient remote resources */
326df930be7Sderaadt #define DI_TPA 8			/* third party abort */
327df930be7Sderaadt #define DI_PROTOCOL 7			/* protocol error discovered */
328df930be7Sderaadt #define DI_ABORT 9			/* user abort */
329df930be7Sderaadt #define DI_LOCALRESRC 32		/* insufficient local resources */
330df930be7Sderaadt #define DI_REMUSERRESRC 33		/* insufficient remote user resources */
331df930be7Sderaadt #define DI_BADACCESS 34			/* bad access control information */
332df930be7Sderaadt #define DI_BADACCNT 36			/* bad ACCOUNT information */
333df930be7Sderaadt #define DI_CONNECTABORT 38		/* connect request cancelled */
334df930be7Sderaadt #define DI_TIMEDOUT 38			/* remote node or user crashed */
335df930be7Sderaadt #define DI_UNREACHABLE 39		/* local timers expired due to ... */
336df930be7Sderaadt #define DI_BADIMAGE 43			/* bad image data in connect */
337df930be7Sderaadt #define DI_SERVMISMATCH 54		/* cryptographic service mismatch */
338df930be7Sderaadt 
339df930be7Sderaadt #define UC_OBJREJECT 0			/* object rejected connect */
340df930be7Sderaadt #define UC_USERDISCONNECT 0		/* user disconnect */
341df930be7Sderaadt #define UC_RESOURCES 1			/* insufficient resources (local or remote) */
342c15d59edSmickey #define UC_NOSUCHNODE 2			/* unrecognized node name */
343df930be7Sderaadt #define UC_REMOTESHUT 3			/* remote node shutting down */
344c15d59edSmickey #define UC_NOSUCHOBJ 4			/* unrecognized object */
345df930be7Sderaadt #define UC_INVOBJFORMAT 5		/* invalid object name format */
346df930be7Sderaadt #define UC_OBJTOOBUSY 6			/* object too busy */
347df930be7Sderaadt #define UC_NETWORKABORT 8		/* network abort */
348df930be7Sderaadt #define UC_USERABORT 9			/* user abort */
349df930be7Sderaadt #define UC_INVNODEFORMAT 10		/* invalid node name format */
350df930be7Sderaadt #define UC_LOCALSHUT 11			/* local node shutting down */
351df930be7Sderaadt #define UC_ACCESSREJECT 34		/* invalid access control information */
352df930be7Sderaadt #define UC_NORESPONSE 38		/* no response from object */
353df930be7Sderaadt #define UC_UNREACHABLE 39		/* node unreachable */
354df930be7Sderaadt 
355df930be7Sderaadt /*
356df930be7Sderaadt  * NSP message formats.
357df930be7Sderaadt  */
358df930be7Sderaadt struct nsphdr				/* general nsp header */
359df930be7Sderaadt   {
360df930be7Sderaadt     byte	nh_flags;		/* message flags */
361df930be7Sderaadt     word	nh_dst;			/* destination link address */
362df930be7Sderaadt     word	nh_src;			/* source link address */
363df930be7Sderaadt   };
364df930be7Sderaadt 
365df930be7Sderaadt struct seghdr				/* data segment header */
366df930be7Sderaadt   {
367df930be7Sderaadt     byte	sh_flags;		/* message flags */
368df930be7Sderaadt     word	sh_dst;			/* destination link address */
369df930be7Sderaadt     word	sh_src;			/* source link address */
370df930be7Sderaadt     word	sh_seq[3];		/* sequence numbers */
371df930be7Sderaadt   };
372df930be7Sderaadt 
373df930be7Sderaadt struct minseghdr			/* minimum data segment header */
374df930be7Sderaadt   {
375df930be7Sderaadt     byte	ms_flags;		/* message flags */
376df930be7Sderaadt     word	ms_dst;			/* destination link address */
377df930be7Sderaadt     word	ms_src;			/* source link address */
378df930be7Sderaadt     word	ms_seq;			/* sequence number */
379df930be7Sderaadt   };
380df930be7Sderaadt 
381df930be7Sderaadt struct lsmsg				/* link service message (after hdr) */
382df930be7Sderaadt   {
383df930be7Sderaadt     byte	ls_lsflags;		/* link service flags */
384df930be7Sderaadt     byte	ls_fcval;		/* flow control value */
385df930be7Sderaadt   };
386df930be7Sderaadt 
387df930be7Sderaadt struct ackmsg				/* acknowledgement message */
388df930be7Sderaadt   {
389df930be7Sderaadt     byte	ak_flags;		/* message flags */
390df930be7Sderaadt     word	ak_dst;			/* destination link address */
391df930be7Sderaadt     word	ak_src;			/* source link address */
392df930be7Sderaadt     word	ak_acknum[2];		/* acknowledgement numbers */
393df930be7Sderaadt   };
394df930be7Sderaadt 
395df930be7Sderaadt struct minackmsg			/* minimum acknowledgement message */
396df930be7Sderaadt   {
397df930be7Sderaadt     byte	mk_flags;		/* message flags */
398df930be7Sderaadt     word	mk_dst;			/* destination link address */
399df930be7Sderaadt     word	mk_src;			/* source link address */
400df930be7Sderaadt     word	mk_acknum;		/* acknowledgement number */
401df930be7Sderaadt   };
402df930be7Sderaadt 
403df930be7Sderaadt struct ciackmsg				/* connect acknowledgement message */
404df930be7Sderaadt   {
405df930be7Sderaadt     byte	ck_flags;		/* message flags */
406df930be7Sderaadt     word	ck_dst;			/* destination link address */
407df930be7Sderaadt   };
408df930be7Sderaadt 
409df930be7Sderaadt struct cimsg				/* connect initiate message */
410df930be7Sderaadt   {
411df930be7Sderaadt     byte	ci_flags;		/* message flags */
412df930be7Sderaadt     word	ci_dst;			/* destination link address (0) */
413df930be7Sderaadt     word	ci_src;			/* source link address */
414df930be7Sderaadt     byte	ci_services;		/* requested services */
415df930be7Sderaadt     byte	ci_info;		/* information */
416df930be7Sderaadt     word	ci_segsize;		/* maximum segment size */
417df930be7Sderaadt   };
418df930be7Sderaadt 
419df930be7Sderaadt struct ccmsg				/* connect confirm message */
420df930be7Sderaadt   {
421df930be7Sderaadt     byte	cc_flags;		/* message flags */
422df930be7Sderaadt     word	cc_dst;			/* destination link address */
423df930be7Sderaadt     word	cc_src;			/* source link address */
424df930be7Sderaadt     byte	cc_services;		/* requested services */
425df930be7Sderaadt     byte	cc_info;		/* information */
426df930be7Sderaadt     word	cc_segsize;		/* maximum segment size */
427df930be7Sderaadt     byte	cc_optlen;		/* optional data length */
428df930be7Sderaadt   };
429df930be7Sderaadt 
430df930be7Sderaadt struct cnmsg				/* generic connect message */
431df930be7Sderaadt   {
432df930be7Sderaadt     byte	cn_flags;		/* message flags */
433df930be7Sderaadt     word	cn_dst;			/* destination link address */
434df930be7Sderaadt     word	cn_src;			/* source link address */
435df930be7Sderaadt     byte	cn_services;		/* requested services */
436df930be7Sderaadt     byte	cn_info;		/* information */
437df930be7Sderaadt     word	cn_segsize;		/* maximum segment size */
438df930be7Sderaadt   };
439df930be7Sderaadt 
440df930be7Sderaadt struct dimsg				/* disconnect initiate message */
441df930be7Sderaadt   {
442df930be7Sderaadt     byte	di_flags;		/* message flags */
443df930be7Sderaadt     word	di_dst;			/* destination link address */
444df930be7Sderaadt     word	di_src;			/* source link address */
445df930be7Sderaadt     word	di_reason;		/* reason code */
446df930be7Sderaadt     byte	di_optlen;		/* optional data length */
447df930be7Sderaadt   };
448df930be7Sderaadt 
449df930be7Sderaadt struct dcmsg				/* disconnect confirm message */
450df930be7Sderaadt   {
451df930be7Sderaadt     byte	dc_flags;		/* message flags */
452df930be7Sderaadt     word	dc_dst;			/* destination link address */
453df930be7Sderaadt     word	dc_src;			/* source link address */
454df930be7Sderaadt     word	dc_reason;		/* reason code */
455df930be7Sderaadt   };
456