|
|
1.1 root 1: /* vtpm.h - VTPM: definitions */
2:
3: /*
4: * $Header: /f/osi/vt/RCS/vtpm.h,v 7.0 89/11/23 22:31:58 mrose Rel $
5: *
6: *
7: * $Log: vtpm.h,v $
8: * Revision 7.0 89/11/23 22:31:58 mrose
9: * Release 6.0
10: *
11: */
12:
13: /*
14: * NOTICE
15: *
16: * Acquisition, use, and distribution of this module and related
17: * materials are subject to the restrictions of a license agreement.
18: * Consult the Preface in the User's Manual for the full terms of
19: * this agreement.
20: *
21: */
22:
23:
24: #include <errno.h>
25: #include <stdio.h>
26:
27: #include "acsap.h" /* definitions for AcS-USERs */
28: #include "logger.h"
29:
30: /* Make sure this is here in new versions */
31: /*#include "sector1.h"*/
32:
33:
34: #define TRUE 1
35: #define FALSE 0
36:
37: #define ERR -1
38: #define E_ERROR -1
39: #define E_EOF -2
40:
41: #define E_NOEVENT 1
42: #define E_READ 2
43:
44: #define INPUT 1
45: #define OUTPUT 2
46:
47: #define DEFINED 1
48: #define UNDEFINED 0
49:
50: #define BASIC 1
51:
52: #define WACI_WACA 0
53: #define WAVAR 1
54:
55: #define FAILURE 0
56: #define SUCCESS 1
57: #define WARNING 2
58:
59: #define ECHO_NOW 0
60: #define NOT_ECHO_NOW 1
61:
62: #define DISPLAY 0
63: #define CONTROL 2
64:
65: #define SEQUENCED 1
66: #define NONSEQUENCED 2
67:
68: #define COLL_DET 1
69: #define PROFILE_NG 4
70:
71: #define TEXT 5
72:
73: #define WOULDBLOCK -3
74:
75: /* type identifiers */
76: #define G_COLLISION_WINNER 1
77: #define G_PARM_VLIST 6
78: #define G_RESULT3 11
79:
80: /* Incoming Events -- Table 25, ISO 9041 */
81:
82: #define VASSreq 1 /*VT-ASSOCIATE request*/
83: #define VASSrsp 2 /*VT-ASSOCIATE response*/
84: #define VBRKreq 3 /*VT-BREAK request*/
85: #define VBRKrsp 4 /*VT-BREAK response*/
86: #define VDACKreq 5 /*VT-ACK-RECEIPT request*/
87: #define VDATreq_u 6 /*VT-DATA request urgent priority*/
88: #define VDATreq_h 7 /*VT-DATA request high priority*/
89: #define VDATreq_n 8 /*VT-DATA request normal*/
90: #define VDATreq_sqtr 9 /*VT-DATA request trigger control*/
91: #define VDELreq 10 /*VT-DELIVER request*/
92: #define VENEGreq 11 /*VT-END-NEG request*/
93: #define VENEGrsp 12 /*VT-END-NEG response*/
94: #define VGVTreq 13 /*VT-GIVE-TOKENS request*/
95: #define VNACCreq 14 /*VT-NEG-ACCEPT (negotiation accept)*/
96: #define VNINVreq 15 /*Negotiation Invitaion*/
97: #define VNOFFreq 16 /*Negotiation Offer*/
98: #define VNREJreq 17 /*Negotiation Reject*/
99: #define VRELreq 18 /*VT-RELEASE request*/
100: #define VRELrsp 19 /*VT-RELEASE response*/
101: #define VRQTreq 20 /*VT-REQUEST-TOKENS request*/
102: #define VSNEGreq 21 /*Start Negotiation request*/
103: #define VSNEGrsp 22 /*Start Negotiation response*/
104: #define VSWPreq 23 /*Switch Profile request*/
105: #define VSWPrsp 24 /*Switch Profile response*/
106: #define VUABreq 25 /*VT-U-ABORT request*/
107: #define APQ 26 /*VT-P-ABORT request*/
108: #define ASQ 27 /*Associate Request*/
109: #define ASR 28 /*Associate Response*/
110: #define AUQ 29 /*VT-U-ABORT request*/
111: #define BKQ 30 /*Break Request*/
112: #define BKR 31 /*Break Response*/
113: #define DAQ 32 /*VT-ACK-RECEIPT*/
114: #define DLQ 33 /*VT-DELIVER*/
115: #define HDQ 34 /*VT-EXPEDITED-DATA*/
116: #define ENQ 35 /*End Negotiation Request*/
117: #define ENR 36 /*End Negotiation Response*/
118: #define GTQ 37 /*VT-GIVE-TOKEN*/
119: #define NAQ 38 /*Negotiation Accept Request*/
120: #define NDQ_ntr 39 /*VT-DATA -- No Trigger Update*/
121: #define NDQ_tr 40 /*VT-DATA -- Trigger Update*/
122: #define NJQ 41 /*Negotiation Reject Request*/
123: #define NIQ 42 /*Negotiation Invite Request*/
124: #define NOQ 43 /*Negotiation Offer Request*/
125: #define RLQ 44 /*VT-RELEASE-REQ*/
126: #define RLR 45 /*VT-RELEASE-RESP*/
127: #define RTQ 46 /*VT-REQUEST-TOKEN*/
128: #define SPQ 47 /*VT-SWITCH-PROFILE-REQ*/
129: #define SPR 48 /*VT-SWITCH-PROFILE-RESP*/
130: #define SNQ 49 /*Start Negotiation Request*/
131: #define SNR 50 /*Start Negotiation Response*/
132: #define UDQ 51 /*VT-UNCONTROLLED-DATA*/
133: #define AUTO 52 /*Internal event not defined by VTP*/
134: #define VTAB 53 /*Irrecoverable exception condition*/
135: #define PAB 54 /*Failure Indication*/
136:
137: /* Outgoing Events -- Table 27, ISO 9041 */
138:
139: #define VACKind 55 /*VT-ACK-RECEIPT Indication*/
140: #define VASSind 56 /*VT-ASSOCIATE Indication*/
141: #define VASScnf 57 /*VT-ASSOCIATE Confirm*/
142: #define VBRKind 58 /*VT-BREAK Indication*/
143: #define VBRKcnf 59 /*VT-BREAK Confirm*/
144: #define VDATind_u 60 /*VT-DATA indication -- urgent object*/
145: #define VDATind_h 61 /*VT-DATA indication -- high object*/
146: #define VDATind_n 62 /*VT-DATA indication -- normal object*/
147: #define VDATind_Vnt 63 /*Sequence of Vnt VT-DATA normal*/
148: #define VDELind 64 /*VT-DELIVER indication*/
149: #define VENEGind 65 /*VT-END-NEG indication*/
150: #define VENEGcnf 66 /*VT-END-NEG confirm*/
151: #define VGVTind 67 /*VT-GIVE-TOKENS indication*/
152: #define VNINVind 68 /*VT-NEG-INVITE indication*/
153: #define VNOFFind 69 /*VT-NEG-OFFER indication*/
154: #define VNACCind 70 /*VT-NEG-ACCEPT indication*/
155: #define VNREJind 71 /*VT-NEG-REJECT indication*/
156: #define VPABind 72 /*VT-P-ABORT indication*/
157: #define VRELind 73 /*VT-RELEASE indication*/
158: #define VRELcnf 74 /*VT-RELEASE confirm*/
159: #define VRQTind 75 /*VT-REQUEST-TOKENS indication*/
160: #define VSNEGind 76 /*VT-START-NEG indication*/
161: #define VSNEGcnf 77 /*VT-START-NEG confirm*/
162: #define VSWPind 78 /*VT-SWITCH-PROFILE indication*/
163: #define VSWPcnf 79 /*VT-SWITCH-PROFILE confirm*/
164: #define VUABind 80 /*VT-U-ABORT indication*/
165: #define NDQseq_ntr 81 /*Sequence of NDQ-ntr to xmit updates*/
166: #define NDQseq_tr 82 /*1 NDQ-tr preceeded by >=1 NDQ-ntr*/
167: #define NDQ_x_tr 83
168: #define NDQ_x_ntr 84
169:
170:
171:
172: /* Sector 1 States */
173:
174: #define S1_01 0 /*No Association*/
175: #define S1_02B 1 /*Associate -- Awaiting target*/
176: #define S1_02S 2 /*Associate -- Awaiting target*/
177: #define S1_03B 3 /*Associate -- Awaiting User*/
178: #define S1_03S 4 /*Associate -- Awaiting User*/
179: #define S1_10B 5 /*Environment Not Agreed*/
180: #define S1_10N 6
181: #define S1_10T 7
182: #define S1_50B 8
183: #define S1_51Q 9 /*Release -- Awaiting Peer*/
184: #define S1_51R 10 /*Release -- Awaiting User*/
185: #define S1_51N 11 /*Release -- Awaiting User*/
186: #define S1_51T 12 /*Release -- Awaiting Peer*/
187:
188:
189: /* Sector 5 States */
190:
191: #define S5_400B 0 /*Data Transfer*/
192: #define S5_402B 1 /*Data Xfer -- Awaiting Ack from user*/
193: #define S5_420B 2 /*Data Xfer -- Awaiting Ack from peer*/
194: #define S5_422B 3 /*Data xfer -- Awaiting Ack (Both)*/
195: #define S5_40N 4 /*Data Transfer*/
196: #define S5_40T 5 /*Data Transfer*/
197: #define S5_42T 6 /*Data Xfer -- Awaiting Ack from peer*/
198: #define S5_42N 7 /*Data Xfer -- Awaiting Ack from user*/
199: #define S5_61 8 /*Break Request rcv'd from User*/
200: #define S5_62 9 /*Break Request rcv'd from Peer*/
201:
202:
203: #define INITIATOR 0
204: #define ACCEPTOR 1
205: #define ACHOICE 2
206:
207:
208:
209: /* PDU Types (Table 4, ISO 9041) */
210:
211: #define ASQ_PDU 0
212: #define ASR_PDU 1
213: #define RLR_PDU 2
214: #define AUQ_PDU 3
215: #define APQ_PDU 4
216: #define HDQ_PDU 5
217: #define NDQ_PDU 6
218: #define UDQ_PDU 7
219: #define BKQ_PDU 8
220: #define BKR_PDU 9
221: #define DLQ_PDU 10
222: #define DAQ_PDU 11
223: #define SPQ_PDU 12
224: #define SPR_PDU 13
225: #define SNQ_PDU 14
226: #define SNR_PDU 15
227: #define ENQ_PDU 16
228: #define ENR_PDU 17
229: #define NIQ_PDU 18
230: #define NOQ_PDU 19
231: #define NAQ_PDU 20
232: #define NJQ_PDU 21
233:
234: #define PEPYPARM int *
235:
236: PE pre, pwe;
237: PE mkdeliver();
238: int fd,
239: readfds,
240: writefds,
241: exfds,
242: sd,
243: connected,
244: netfile;
245:
246: char *dprofile, *cprofile;
247: char *myname, ttyname();
248: extern PE p_ondq;
249: extern LLog _vt_log, *vt_log;
250:
251:
252: extern int errno;
253: extern unsigned state, sector;
254:
255: int vns,
256: allpmde, /* all draft VTE parameters defined */
257: allpmdu, /* all draft VTE parameters defined or undefined */
258: cnw, /* collision winner right assigned to this VTPM */
259: dcno, /* no delivery control */
260: dcqua, /* quarantine delivery control */
261: dcsim, /* simple delivery control */
262: pmacc, /* parameter values acceptable */
263: dr_pm_st,/* draft parameter status:
264: DEFINED,
265: UNDEFINED,
266: OFI, (offered, initiator)
267: OFR, (offered, responder)
268: COFI, (counter-offered, initiator)
269: COFR, (counter-offered, responder)
270: INVI, (invited, initiator)
271: INVR (invited, responder)
272: */
273: pracc,
274: vtpma,
275: vcwa, /* whether the collision winner right is owned */
276: vena, /* agreement on current VTE */
277: vnt, /* number of VT service data units held for local delivery */
278: vns, /* number of VT service data units held for transmission */
279: vacc, /*action choice: switch, restore, or not specified*/
280: vacp, /*action proposal: switch, restore, or responder
281: choice*/
282: vrea, /*failure reason: collision detected or profile not
283: supplied*/
284: vrjo, /*rejection option: retain, discard, or responder
285: choice*/
286: vrsl, /*result: succes, failure, or success with warning*/
287: vsmd, /*1 if S-Mode, 0 if A-Mode*/
288: vtok, /*1 if tokens held, 0 otherwise*/
289: vtkp, /*token parameters*/
290: waca, /*WACA right*/
291: vra, /*Boolean recording of acknowledgement request*/
292: G_Func_Units, /*Bit map of Functional Units requested*/
293: wavar, /* boolean, this VTPM has the token */
294: waci, /* boolean, this VTPM is assigned the waci right */
295: del_cont; /* type of delivery control */
296:
297:
298: /*
299: profile is name of the profile. This is also used for the draft profile.
300: */
301:
302: int s1_01(),
303: s1_02B(),
304: s1_02S(),
305: s1_03B(),
306: s1_03S(),
307: s1_10B(),
308: s1_10N(),
309: s1_10T(),
310: s1_50B(),
311: s1_51Q(),
312: s1_51R(),
313: s1_51N(),
314: s1_51T();
315:
316: int s5_400B(),
317: s5_402B(),
318: s5_420B(),
319: s5_422B(),
320: s5_40N(),
321: s5_40T(),
322: s5_42N(),
323: s5_42T(),
324: s5_61(),
325: s5_62();
326:
327:
328: extern struct SSAPref sfs;
329: extern struct SSAPref *sf;
330: extern struct PSAPaddr *pa;
331: extern struct AcSAPconnect accs;
332: extern struct AcSAPconnect *acc;
333: extern struct AcSAPrelease acrs;
334: extern struct AcSAPrelease *acr;
335: extern struct AcSAPindication acis;
336: extern struct AcSAPindication *aci;
337: extern struct AcSAPabort *aca;
338: extern AEI aei;
339: extern OID ctx,
340: pci;
341:
342: extern struct AcSAPstart acss;
343: extern struct AcSAPstart *acs;
344: extern struct PSAPstart *ps;
345: extern struct PSAPindication pi;
346: extern struct PSAPdata px;
347: extern struct PSAPfinish *pf;
348:
349: void finalbye ();
350: void adios (), advise ();
351: void acs_adios (), acs_advise ();
352: void ps_adios (), ps_advise ();
353:
354: int connected; /*TEMP -- for sector 1 testing only -- will be supplied by VTP*/
355:
356: char *malloc();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.