1 
2 /*
3  * DECnet Network Services Protocol definitions,
4  * per Network Services Protocol Functional Specification,
5  * Version 3.2.0, October 1980.
6  */
7 
8 /*
9  * NSP message types
10  */
11 #define	NSP_DATA	0x00		/* data segment message */
12 #define	NSP_LS		0x10		/* link service message */
13 #define	NSP_INTR	0x30		/* interrupt message */
14 #define	NSP_DATACK	0x04		/* data segment ack */
15 #define	NSP_OTHACK	0x14		/* other data ack */
16 #define	NSP_CONACK	0x24		/* connect ack */
17 #define	NSP_NOP		0x08		/* no op */
18 #define	NSP_CI		0x18		/* connect initiate */
19 #define	NSP_CC		0x28		/* connect confirm */
20 #define	NSP_DI		0x38		/* disconnect initiate */
21 #define	NSP_DC		0x48		/* disconnect confirm */
22 
23 /* flags for data segment messages */
24 #define	NSP_BOM		0x20		/* beginning-of-message segment */
25 #define	NSP_EOM		0x40		/* end-of-message segment */
26 
27 /*
28  * Data segment message
29  */
30 struct nspd {
31 	char	nsp_msgflg;		/* message type and flags */
32 	d_short	nsp_dstaddr;		/* destination address *
33 	d_short	nsp_srcaddr;		/* source address */
34 	d_short	nsp_acknum;		/* number of ack'ed message */
35 	d_short	nsp_segnum;		/* this message's segment number */
36 };
37 
38 /*
39  * Interrupt message
40  */
41 struct nspi {
42 	char	nsp_msgflg;		/* message type and flags */
43 	d_short	nsp_dstaddr;		/* destination address *
44 	d_short	nsp_srcaddr;		/* source address */
45 	d_short	nsp_acknum;		/* number of ack'ed message */
46 	d_short	nsp_segnum;		/* this message's segment number */
47 /* optional data follows */
48 };
49 
50 /*
51  * Link Service message
52  */
53 struct nspls {
54 	char	nsp_msgflg;		/* message type and flags */
55 	d_short	nsp_dstaddr;		/* destination address *
56 	d_short	nsp_srcaddr;		/* source address */
57 	d_short	nsp_acknum;		/* number of ack'ed message */
58 	d_short	nsp_segnum;		/* this message's segment number */
59 	char	nsp_lsflags;		/* link service flags */
60 	char	nsp_fcval;		/* flow control change value */
61 };
62 
63 #define	NSPLS_FCVALINT	0x0c		/* fcval field interpretation: */
64 #define	NSPLS_DATREQ	0x00		/*   data segment request */
65 #define	NSPLS_INTREQ	0x04		/*   interrupt request */
66 #define	NSPLS_FCMOD	0x03		/* flow control modification: */
67 #define	NSPLS_NOCHANGE	0x00		/*   no change */
68 #define	NSPLS_OFF	0x01		/*   do not send data */
69 #define	NSPLS_ON	0x02		/*   send data */
70 
71 /*
72  * Data or Other Data Ack
73  */
74 struct nspack {
75 	char	nsp_msgflg;		/* message type and flags */
76 	d_short	nsp_dstaddr;		/* destination address *
77 	d_short	nsp_srcaddr;		/* source address */
78 	d_short	nsp_acknum;		/* number of ack'ed message */
79 };
80 
81 #define	NSPA_ACK	0x8000		/* ack flag for acknum */
82 #define	NSPA_NAK	0x9000		/* nak flag for acknum */
83 #define	NSPA_QUAL	0xf000		/* qual field for acknum */
84 #define	NSPA_NUM	0x0fff		/* num field for acknum */
85 
86 /*
87  * Connect Ack
88  */
89 struct nspcack {
90 	char	nsp_msgflg;		/* message type and flags */
91 	d_short	nsp_dstaddr;		/* destination address *
92 };
93 
94 /*
95  * No Op message
96  */
97 struct nspnop {
98 	char	nsp_msgflg;		/* message type and flags */
99 /* tstdata follows */
100 };
101 
102 /*
103  * Connect Initiate message
104  */
105 struct nspci {
106 	char	nsp_msgflg;		/* message type and flags */
107 	d_short	nsp_dstaddr;		/* destination address *
108 	d_short	nsp_srcaddr;		/* source address */
109 	char	nsp_services;		/* flow control options */
110 	char	nsp_info;		/* NSP version info */
111 	d_short	nsp_segsize;		/* requested segment size */
112 /* connect data follows */
113 };
114 
115 /*
116  * Connect Confirm message
117  */
118 struct nspcc {
119 	char	nsp_msgflg;		/* message type and flags */
120 	d_short	nsp_dstaddr;		/* destination address *
121 	d_short	nsp_srcaddr;		/* source address */
122 	char	nsp_services;		/* flow control options */
123 	char	nsp_info;		/* NSP version info */
124 	d_short	nsp_segsize;		/* requested segment size */
125 	char	nsp_cnt;		/* size of optional data field */
126 /* optional connect data follows */
127 };
128 
129 /*
130  * Disconnect Initiate message
131  */
132 struct nspdi {
133 	char	nsp_msgflg;		/* message type and flags */
134 	d_short	nsp_dstaddr;		/* destination address *
135 	d_short	nsp_srcaddr;		/* source address */
136 	d_short	nsp_reason;		/* reason for disconnect */
137 	char	nsp_dcnt;		/* size of optional data field */
138 /* optional disconnect data follows */
139 };
140 
141 /*
142  * Disconnect Confirm message
143  */
144 struct nspdc {
145 	char	nsp_msgflg;		/* message type and flags */
146 	d_short	nsp_dstaddr;		/* destination address *
147 	d_short	nsp_srcaddr;		/* source address */
148 	d_short	nsp_reason;		/* disconnect reason */
149 };
150