xref: /original-bsd/sys/netccitt/pk.h (revision 208c3823)
1 /* Copyright (c) University of British Columbia, 1984 */
2 
3 /*
4  *
5  *  X.25 Packet Level Definitions:
6  *
7  */
8 
9 /* Packet type identifier field defintions. */
10 
11 #define X25_CALL                         11
12 #define X25_CALL_ACCEPTED                15
13 #define X25_CLEAR                        19
14 #define X25_CLEAR_CONFIRM                23
15 #define X25_DATA                          0
16 #define X25_INTERRUPT                    35
17 #define X25_INTERRUPT_CONFIRM            39
18 
19 #define X25_RR                            1
20 #define X25_RNR                           5
21 #define X25_RESET                        27
22 #define X25_RESET_CONFIRM                31
23 
24 #define X25_RESTART                     251
25 #define X25_RESTART_CONFIRM		255
26 
27 /* Restart cause field definitions. */
28 
29 #define X25_RESTART_LOCAL_PROCEDURE_ERROR 1
30 #define X25_RESTART_NETWORK_CONGESTION	  3
31 #define X25_RESTART_NETWORK_OPERATIONAL	  7
32 
33 /* Miscellaneous definitions. */
34 
35 #define DATA_PACKET_DESIGNATOR		0x01
36 #define RR_OR_RNR_PACKET_DESIGNATOR	0x02
37 #define RR_PACKET_DESIGNATOR		0x04
38 
39 #define DEFAULT_WINDOW_SIZE		2
40 #define MODULUS				8
41 
42 #define ADDRLN				1
43 #define MAXADDRLN			15
44 #define FACILITIESLN			1
45 #define MAXFACILITIESLN			10
46 #define MAXUSERDATA			16
47 #define MAXCALLINFOLN			1+15+1+10+16
48 
49 #define PACKET_OK			0
50 #define IGNORE_PACKET			1
51 #define ERROR_PACKET			2
52 
53 typedef char    bool;
54 #define FALSE	0
55 #define TRUE	1
56 
57 /*
58  *  X.25 Packet format definitions
59  */
60 
61 typedef u_char octet;
62 
63 struct x25_calladdr {
64 #ifdef vax
65 	unsigned called_addrlen:4;
66 	unsigned calling_addrlen:4;
67 #endif
68 #ifdef sun
69 	unsigned calling_addrlen:4;
70 	unsigned called_addrlen:4;
71 #endif
72 	char address_field[MAXADDRLN];
73 };
74 
75 #define FACILITIES_REVERSE_CHARGE	0x1
76 #define FACILITIES_THROUGHPUT		0x2
77 #define FACILITIES_PACKETSIZE		0x42
78 #define FACILITIES_WINDOWSIZE		0x43
79 
80 #define PKHEADERLN	3
81 
82 struct x25_packet {
83 #ifdef vax
84 	unsigned lc_group_number:4;
85 	unsigned fmt_identifier:3;
86 	unsigned q_bit:1;
87 #endif
88 #ifdef sun
89 	unsigned q_bit:1;
90 	unsigned fmt_identifier:3;
91 	unsigned lc_group_number:4;
92 #endif
93 	octet logical_channel_number;
94 	octet packet_type;
95 	octet packet_data;
96 };
97 
98 struct data_packet {
99 #ifdef vax
100 	unsigned z:1;
101 	unsigned ps:3;
102 	unsigned m_bit:1;
103 	unsigned pr:3;
104 #endif
105 #ifdef sun
106 	unsigned pr:3;
107 	unsigned m_bit:1;
108 	unsigned ps:3;
109 	unsigned z:1;
110 #endif
111 };
112 
113 #define PR(xp)		(((struct data_packet *)&xp -> packet_type)->pr)
114 #define PS(xp)		(((struct data_packet *)&xp -> packet_type)->ps)
115 #define MBIT(xp)	(((struct data_packet *)&xp -> packet_type)->m_bit)
116 
117 struct x25_packet *pk_template ();
118 
119 /* Define X.25 packet level states. */
120 
121 /* Call setup and clearing substates.  */
122 
123 #define LISTEN           0
124 #define READY            1
125 #define RECEIVED_CALL    2
126 #define SENT_CALL        3
127 #define DATA_TRANSFER    4
128 #define RECEIVED_CLEAR   5
129 #define SENT_CLEAR       6
130 
131 /* DTE states. */
132 
133 #define DTE_WAITING		7
134 #define DTE_RECEIVED_RESTART	8
135 #define DTE_SENT_RESTART	9
136 #define DTE_READY		0
137 
138 #define MAXSTATES		10
139 
140 /*
141  *  The following definitions are used in a switch statement after
142  *  determining the packet type.  These values are returned by the
143  *  pk_decode procedure.
144  */
145 
146 #define CALL             0 * MAXSTATES
147 #define CALL_ACCEPTED    1 * MAXSTATES
148 #define CLEAR            2 * MAXSTATES
149 #define CLEAR_CONF       3 * MAXSTATES
150 #define DATA             4 * MAXSTATES
151 #define INTERRUPT        5 * MAXSTATES
152 #define INTERRUPT_CONF   6 * MAXSTATES
153 #define RR               7 * MAXSTATES
154 #define RNR              8 * MAXSTATES
155 #define RESET            9 * MAXSTATES
156 #define RESET_CONF      10 * MAXSTATES
157 #define RESTART         11 * MAXSTATES
158 #define RESTART_CONF    12 * MAXSTATES
159 #define INVALID_PACKET  13 * MAXSTATES
160 #define DELETE_PACKET	INVALID_PACKET
161