|
|
1.1 root 1: /* acsap.h - include file for association control users (AcS-USER) */
2:
3: /*
4: * $Header: /f/osi/h/RCS/acsap.h,v 7.0 89/11/23 21:55:39 mrose Rel $
5: *
6: *
7: * $Log: acsap.h,v $
8: * Revision 7.0 89/11/23 21:55:39 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: #ifndef _AcSAP_
25: #define _AcSAP_
26:
27: #ifndef _MANIFEST_
28: #include "manifest.h"
29: #endif
30: #ifndef _GENERAL_
31: #include "general.h"
32: #endif
33:
34: #ifndef _PSAP2_
35: #include "psap2.h" /* definitions for PS-USERs */
36: #endif
37:
38: /* */
39:
40: #define NACDATA 3 /* arbitrary */
41:
42: struct AcSAPstart { /* A-CONNECT.INDICATION */
43: int acs_sd; /* association descriptor */
44:
45: OID acs_context; /* application context name */
46:
47: AEInfo acs_callingtitle; /* info on calling application-entity */
48: AEInfo acs_calledtitle; /* info on called application-entity */
49:
50: struct PSAPstart acs_start; /* info from P-CONNECT.INDICATION */
51:
52: /* initial information from peer */
53: int acs_ninfo; /* number of elements */
54: PE acs_info[NACDATA]; /* data */
55: };
56: #define ACSFREE(acs) { \
57: register int ACSI; \
58: \
59: if ((acs) -> acs_context) \
60: oid_free ((acs) -> acs_context), (acs) -> acs_context = NULLOID; \
61: \
62: AEIFREE (&(acs) -> acs_callingtitle); \
63: AEIFREE (&(acs) -> acs_calledtitle); \
64: \
65: PSFREE (&(acs) -> acs_start); \
66: \
67: for (ACSI = (acs) -> acs_ninfo - 1; ACSI >= 0; ACSI--) \
68: if ((acs) -> acs_info[ACSI]) \
69: pe_free ((acs) -> acs_info[ACSI]), \
70: (acs) -> acs_info[ACSI] = NULLPE; \
71: (acs) -> acs_ninfo = 0; \
72: }
73:
74:
75: struct AcSAPconnect {
76: int acc_sd; /* association descriptor */
77:
78: int acc_result; /* result */
79: #define ACS_ACCEPT 0 /* Accepted */
80: #define ACS_REJECT (-1) /* Release rejected */
81: /* Rejected by responder: */
82: #define ACS_PERMANENT 1 /* Permanent */
83: #define ACS_TRANSIENT 2 /* Transient */
84:
85: int acc_diagnostic; /* source-diagnostic */
86: /* service-user */
87: #define ACS_USER_NULL 3 /* null */
88: #define ACS_USER_NOREASON 4 /* no reason given */
89: #define ACS_CONTEXT 5 /* application context name not supported*/
90: #define ACS_CALLING_AP_TITLE 6 /* calling AP title not recognized */
91: #define ACS_CALLING_AP_ID 7 /* calling AP invocation-ID not recognized */
92: #define ACS_CALLING_AE_QUAL 8 /* calling AE qualifier not recognized */
93: #define ACS_CALLING_AE_ID 9 /* calling AE invocation-ID not recognized */
94: #define ACS_CALLED_AP_TITLE 10 /* called AP title not recognized */
95: #define ACS_CALLED_AP_ID 11 /* called AP invocation-ID not recognized */
96: #define ACS_CALLED_AE_QUAL 12 /* called AE qualifier not recognized */
97: #define ACS_CALLED_AE_ID 13 /* called AE invocation-ID not recognized */
98: /* service-provider */
99: #define ACS_PROV_NULL 14 /* null */
100: #define ACS_PROV_NOREASON 15 /* no reason given */
101: #define ACS_VERSION 16 /* no common acse version */
102:
103: /* begin UNOFFICIAL */
104: #define ACS_ADDRESS 17 /* Address unknown */
105: #define ACS_REFUSED 18 /* Connect request refused on this network
106: connection */
107: #define ACS_CONGEST 19 /* Local limit exceeded */
108: #define ACS_PRESENTATION 20 /* Presentation disconnect */
109: #define ACS_PROTOCOL 21 /* Protocol error */
110: #define ACS_ABORTED 22 /* Peer aborted association */
111: #define ACS_PARAMETER 23 /* Invalid parameter */
112: #define ACS_OPERATION 24 /* Invalid operation */
113: #define ACS_TIMER 25 /* Timer expired */
114: /* end UNOFFICIAL */
115:
116: #define ACS_FATAL(r) ((r) < ACS_PARAMETER)
117: #define ACS_OFFICIAL(r) ((r) < ACS_ADDRESS)
118:
119: OID acc_context; /* application context name */
120:
121: AEInfo acc_respondtitle; /* info on responding application-entity */
122:
123: struct PSAPconnect acc_connect;/* info from P-CONNECT.CONFIRMATION */
124:
125: /* initial information from peer */
126: int acc_ninfo; /* number of elements */
127: PE acc_info[NACDATA]; /* data */
128: };
129: #define ACCFREE(acc) { \
130: register int ACCI; \
131: \
132: if ((acc) -> acc_context) \
133: oid_free ((acc) -> acc_context), (acc) -> acc_context = NULLOID; \
134: \
135: AEIFREE (&(acc) -> acc_respondtitle); \
136: \
137: PCFREE (&(acc) -> acc_connect); \
138: \
139: for (ACCI = (acc) -> acc_ninfo - 1; ACCI >= 0; ACCI--) \
140: if ((acc) -> acc_info[ACCI]) \
141: pe_free ((acc) -> acc_info[ACCI]), \
142: (acc) -> acc_info[ACCI] = NULLPE; \
143: (acc) -> acc_ninfo = 0; \
144: }
145:
146:
147:
148: struct AcSAPfinish { /* A-RELEASE.INDICATION */
149: int acf_reason; /* reason for release */
150: #define ACF_NORMAL 0 /* normal */
151: #define ACF_URGENT 1 /* urgent */
152: #define ACF_USERDEFINED 30 /* user-defined */
153:
154: /* release information from peer */
155: int acf_ninfo; /* number of elements */
156: PE acf_info[NACDATA]; /* data */
157: };
158: #define ACFFREE(acf) \
159: { \
160: register int ACFI; \
161: \
162: for (ACFI = (acf) -> acf_ninfo - 1; ACFI >= 0; ACFI--) \
163: if ((acf) -> acf_info[ACFI]) \
164: pe_free ((acf) -> acf_info[ACFI]), \
165: (acf) -> acf_info[ACFI] = NULLPE; \
166: (acf) -> acf_ninfo = 0; \
167: }
168:
169:
170: struct AcSAPrelease { /* A-RELEASE.CONFIRMATION */
171: int acr_affirmative; /* T = connection released
172: NIL = request refused */
173:
174: int acr_reason; /* reason for result */
175: #define ACR_NORMAL 0 /* normal */
176: #define ACR_NOTFINISHED 1 /* not finished */
177: #define ACR_USERDEFINED 30 /* user-defined */
178:
179: /* release information from peer */
180: int acr_ninfo; /* number of elements */
181: PE acr_info[NACDATA]; /* data */
182: };
183: #define ACRFREE(acr) \
184: { \
185: register int ACRI; \
186: \
187: for (ACRI = (acr) -> acr_ninfo - 1; ACRI >= 0; ACRI--) \
188: if ((acr) -> acr_info[ACRI]) \
189: pe_free ((acr) -> acr_info[ACRI]), \
190: (acr) -> acr_info[ACRI] = NULLPE; \
191: (acr) -> acr_ninfo = 0; \
192: }
193:
194:
195: struct AcSAPabort { /* A-{U,P}-ABORT.INDICATION */
196: int aca_source; /* abort source */
197: #define ACA_USER 0 /* service-user */
198: #define ACA_PROVIDER 1 /* service-provider */
199: #define ACA_LOCAL 2 /* local ACPM (UNOFFICIAL) */
200:
201: int aca_reason; /* same codes as acc_result */
202:
203: /* abort information from peer */
204: int aca_ninfo; /* number of elements */
205: PE aca_info[NACDATA]; /* data */
206:
207: /* diagnostics from provider */
208: #define ACA_SIZE 512
209: int aca_cc; /* length */
210: char aca_data[ACA_SIZE]; /* data */
211: };
212: #define ACAFREE(aca) \
213: { \
214: register int ACAI; \
215: \
216: for (ACAI = (aca) -> aca_ninfo - 1; ACAI >= 0; ACAI--) \
217: if ((aca) -> aca_info[ACAI]) \
218: pe_free ((aca) -> aca_info[ACAI]), \
219: (aca) -> aca_info[ACAI] = NULLPE; \
220: (aca) -> aca_ninfo = 0; \
221: }
222:
223:
224: struct AcSAPindication {
225: int aci_type; /* the union element present */
226: #define ACI_FINISH 0x00
227: #define ACI_ABORT 0x01
228:
229: union {
230: struct AcSAPfinish aci_un_finish;
231: struct AcSAPabort aci_un_abort;
232: } aci_un;
233: #define aci_finish aci_un.aci_un_finish
234: #define aci_abort aci_un.aci_un_abort
235: };
236:
237: /* */
238:
239: extern char *acsapversion;
240:
241:
242: int AcInit (); /* A-ASSOCIATE.INDICATION */
243:
244: int AcAssocResponse (); /* A-ASSOCIATE.RESPONSE */
245: /* A-ASSOCIATE.REQUEST
246: (backwards-compatible) */
247: #define AcAssocRequest(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17) \
248: AcAsynAssocRequest (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,0)
249: int AcAsynAssocRequest (); /* A-(ASYN-)ASSOCIATE.REQUEST */
250: int AcAsynRetryRequest (); /* A-ASYN-RETRY.REQUEST (pseudo) */
251: int AcRelRequest (); /* A-RELEASE.REQUEST */
252: int AcRelRetryRequest (); /* A-RELEASE-RETRY.REQUEST (pseudo) */
253: int AcRelResponse (); /* A-RELEASE.RESPONSE */
254: int AcUAbortRequest (); /* A-ABORT.REQUEST */
255:
256: int AcFINISHser (); /* handle P-RELEASE.INDICATION */
257: int AcABORTser (); /* handle P-{U,P}-ABORT.INDICATION */
258:
259: int AcFindPCI (); /* return PCI used by ACSE */
260:
261: char *AcErrString (); /* return AcSAP error code in string form */
262:
263: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.