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