|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T p
Length: 5238 (0x1476) Types: TextFile Names: »ppkt.h«
└─⟦3d0c2be1b⟧ Bits:30001254 ISODE-5.0 Tape └─⟦eba4602b1⟧ »./isode-5.0.tar.Z« └─⟦d3ac74d73⟧ └─⟦this⟧ »isode-5.0/h/ppkt.h«
/* ppkt.h - include file for presentation providers (PS-PROVIDER) */ /* * $Header: /f/osi/h/RCS/ppkt.h,v 6.0 89/03/18 23:32:11 mrose Rel $ * * * $Log: ppkt.h,v $ * Revision 6.0 89/03/18 23:32:11 mrose * Release 5.0 * */ /* * NOTICE * * Acquisition, use, and distribution of this module and related * materials are subject to the restrictions of a license agreement. * Consult the Preface in the User's Manual for the full terms of * this agreement. * */ #ifndef _PSAP2_ #include "psap2.h" /* definitions for PS-USERs */ #endif #include "ssap.h" /* definitinos for SS-USERs */ /* \f */ #define psapPsig(pb, sd) \ { \ if ((pb = findpblk (sd)) == NULL) { \ (void) sigiomask (smask); \ return psaplose (pi, PC_PARAMETER, NULLCP, \ "invalid presentation descriptor"); \ } \ if (!(pb -> pb_flags & PB_CONN)) { \ (void) sigiomask (smask); \ return psaplose (pi, PC_OPERATION, NULLCP, \ "presentation descriptor not connected"); \ } \ if (pb -> pb_flags & PB_FINN) { \ (void) sigiomask (smask); \ return psaplose (pi, PC_OPERATION, NULLCP, \ "presentation descriptor finishing"); \ } \ } #define psapFsig(pb, sd) \ { \ if ((pb = findpblk (sd)) == NULL) { \ (void) sigiomask (smask); \ return psaplose (pi, PC_PARAMETER, NULLCP, \ "invalid presentation descriptor"); \ } \ if (!(pb -> pb_flags & PB_CONN)) { \ (void) sigiomask (smask); \ return psaplose (pi, PC_OPERATION, NULLCP, \ "presentation descriptor not connected"); \ } \ if (!(pb -> pb_flags & PB_FINN)) { \ (void) sigiomask (smask); \ return psaplose (pi, PC_OPERATION, NULLCP, \ "presentation descriptor not finishing"); \ } \ } #define toomuchP(b,n,m,p) \ { \ if (b == NULL) \ n = 0; \ else \ if (n > m) \ return psaplose (pi, PC_PARAMETER, NULLCP, \ "too many %s user data elements", p); \ } #define missingP(p) \ { \ if (p == NULL) \ return psaplose (pi, PC_PARAMETER, NULLCP, \ "mandatory parameter \"%s\" missing", "p"); \ } #ifndef lint #ifndef __STDC__ #define copyPSAPdata(base,len,d) \ { \ register int i = len; \ if ((d -> d/* */_cc = min (i, sizeof d -> d/* */_data)) > 0) \ bcopy (base, d -> d/* */_data, d -> d/* */_cc); \ } #else #define copyPSAPdata(base,len,d) \ { \ register int i = len; \ if ((d -> d##_cc = min (i, sizeof d -> d##_data)) > 0) \ bcopy (base, d -> d##_data, d -> d##_cc); \ } #endif #else #define copyPSAPdata(base,len,d) bcopy (base, (char *) d, len) #endif #define pylose(p) \ ppktlose (pb, pi, PC_UNRECOGNIZED, (p), NULLCP, "%s", PY_pepy) int ppktlose (), psaplose (); /* \f */ #define DFLT_ASN "iso asn.1 abstract syntax" #define DFLT_ATN BER #define atn_is_ok(pb,atn) atn_is_ber ((pb), (atn)) #define atn_is_ber(pb,atn) (!oid_cmp (pb -> pb_ber, atn)) struct psapblk { struct psapblk *pb_forw; /* doubly-linked list */ struct psapblk *pb_back; /* .. */ int pb_fd; /* session descriptor */ short pb_flags; /* our state */ #define PB_NULL 0x00 #define PB_CONN 0x01 /* connected */ #define PB_FINN 0x02 /* other side wants to finish */ #define PB_ASYN 0x04 /* asynchronous */ #define PB_DFLT 0x10 /* respond with default context result */ char *pb_retry; /* initial ppkt */ int pb_ncontext; /* presentation context set */ struct PSAPcontext pb_contexts[NPCTX]; OID pb_asn; /* default: abstract syntax name */ OID pb_atn; /* .. abstract transfer name */ int pb_result; /* response */ OID pb_ber; /* BER */ int pb_prequirements; /* presentation requirements */ int pb_srequirements; /* our session requirements */ int pb_urequirements; /* user's session requirements */ int pb_owned; /* session tokens we own */ int pb_avail; /* session tokens available */ int pb_ssdusize; /* largest atomic SSDU */ struct PSAPaddr pb_responding; /* responder */ IFP pb_DataIndication; /* INDICATION handlers */ IFP pb_TokenIndication; /* .. */ IFP pb_SyncIndication; /* .. */ IFP pb_ActivityIndication; /* .. */ IFP pb_ReportIndication; /* .. */ IFP pb_ReleaseIndication; /* .. */ IFP pb_AbortIndication; /* .. */ }; #define NULLPB ((struct psapblk *) 0) int freepblk (); struct psapblk *newpblk (), *findpblk (); #define PC_PROV_BASE PC_NOTSPECIFIED #define PC_ABORT_BASE \ (PC_UNRECOGNIZED - int_PS_Abort__reason_unrecognized__ppdu) #define PC_REASON_BASE \ (PC_ABSTRACT - int_PS_provider__reason_abstract__syntax__not__supported) struct type_PS_User__data *info2ppdu (); int ppdu2info (); int info2ssdu (), ssdu2info (), qbuf2info (); struct qbuf *info2qb (); int qb2info (); struct type_PS_Identifier__list *silly_list (); int ss2pslose (), ss2psabort (); struct pair { int p_mask; int p_bitno; }; extern struct pair preq_pairs[], sreq_pairs[]; /* \f */ #define REASON_BASE PC_NOTSPECIFIED #define PPDU_NONE (-1) #define PPDU_CP 0 #define PPDU_CPA 1 #define PPDU_CPR 2 #define PPDU_ARU 3 #define PPDU_ARP 4 #define PPDU_TD 7 #define PPDU_RS 12 #define PPDU_RSA 13