|
|
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.