Annotation of 43BSDReno/contrib/isode-beta/h/psap2.h, revision 1.1

1.1     ! root        1: /* psap2.h - include file for presentation users (PS-USER) continued  */
        !             2: 
        !             3: /* 
        !             4:  * $Header: /f/osi/h/RCS/psap2.h,v 7.0 89/11/23 21:55:53 mrose Rel $
        !             5:  *
        !             6:  *
        !             7:  * $Log:       psap2.h,v $
        !             8:  * Revision 7.0  89/11/23  21:55:53  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        _PSAP2_
        !            25: #define        _PSAP2_
        !            26: 
        !            27: #ifndef        _PSAP_
        !            28: #include "psap.h"              /* definitions for PS-USERs */
        !            29: #endif
        !            30: #ifndef        _SSAP_
        !            31: #include "ssap.h"              /* definitions for SS-USERs */
        !            32: #endif
        !            33: #ifndef        _ISOADDRS_
        !            34: #include "isoaddrs.h"          /* definitions of ISO addresses */
        !            35: #endif
        !            36: 
        !            37: /*  */
        !            38: 
        !            39: #define        NPDATA          25      /* arbitrary */
        !            40: 
        !            41: 
        !            42: struct PSAPcontext {           /* presentation context */
        !            43:     int            pc_id;              /* identifier */
        !            44: 
        !            45:     OID            pc_asn;             /* abstract syntax name */
        !            46: 
        !            47:     OID            pc_atn;             /* abstract transfer name */
        !            48:                                /*   NULLOID if provider should handle it */
        !            49:     
        !            50:     int            pc_result;          /* same codes as pc_result below */
        !            51: };
        !            52: 
        !            53: struct PSAPctxlist {           /* list of presentation contexts */
        !            54:     int            pc_nctx;            /* number of contexts */
        !            55: 
        !            56: #define        NPCTX   10              /* arbitrary */
        !            57:     struct PSAPcontext pc_ctx[NPCTX];
        !            58: };
        !            59: #define        NULLPC  ((struct PSAPctxlist *) 0)
        !            60: 
        !            61: 
        !            62: #define        BER     "basic encoding of a single asn.1 type"
        !            63: 
        !            64: 
        !            65: struct SSAPref *addr2ref ();   /* address to session reference */
        !            66: 
        !            67: char   *sprintref ();          /* return session reference in string form */
        !            68: 
        !            69: /*  */
        !            70: 
        !            71: struct PSAPstart {             /* P-CONNECT.INDICATION */
        !            72:     int            ps_sd;              /* PRESENTATION descriptor */
        !            73: 
        !            74: 
        !            75:     struct PSAPaddr ps_calling;        /* address of peer calling */
        !            76:     struct PSAPaddr ps_called; /* address of peer called */
        !            77: 
        !            78:     struct PSAPctxlist ps_ctxlist;/* list of proposed contexts */
        !            79: 
        !            80:     OID            ps_defctx;          /* name of proposed default context */
        !            81:     int            ps_defctxresult;    /* what the provider thinks about it */
        !            82:     
        !            83:     int            ps_prequirements;   /* presentation requirements */
        !            84: 
        !            85:     int            ps_srequirements;   /* session requirements */
        !            86:     int            ps_settings;        /* initial settings of tokens */
        !            87:     long    ps_isn;            /* initial serial number */
        !            88:     
        !            89:     struct SSAPref  ps_connect;        /* session connection identifier */
        !            90: 
        !            91:     int            ps_ssdusize;        /* largest atomic SSDU */
        !            92:     
        !            93:     struct QOStype ps_qos;     /* quality of service */
        !            94:     
        !            95:                                /* initial data from peer */
        !            96:     int            ps_ninfo;           /*   number of elements */
        !            97:     PE     ps_info[NPDATA];    /*   data */
        !            98: };
        !            99: #define        PSFREE(ps) \
        !           100: { \
        !           101:     register int PSI; \
        !           102:  \
        !           103:     for (PSI = (ps) -> ps_ctxlist.pc_nctx - 1; PSI >= 0; PSI--) { \
        !           104:        oid_free ((ps) -> ps_ctxlist.pc_ctx[PSI].pc_asn); \
        !           105:        oid_free ((ps) -> ps_ctxlist.pc_ctx[PSI].pc_atn); \
        !           106:        (ps) -> ps_ctxlist.pc_ctx[PSI].pc_asn = \
        !           107:            (ps) -> ps_ctxlist.pc_ctx[PSI].pc_atn = NULLOID; \
        !           108:     } \
        !           109:     (ps) -> ps_ctxlist.pc_nctx = 0; \
        !           110:     if ((ps) -> ps_defctx) \
        !           111:        oid_free ((ps) -> ps_defctx), (ps) -> ps_defctx = NULLOID; \
        !           112:     for (PSI = (ps) -> ps_ninfo - 1; PSI >= 0; PSI--) \
        !           113:        if ((ps) -> ps_info[PSI]) \
        !           114:            pe_free ((ps) -> ps_info[PSI]), (ps) -> ps_info[PSI] = NULLPE; \
        !           115:     (ps) -> ps_ninfo = 0; \
        !           116: }
        !           117: 
        !           118: 
        !           119: struct PSAPconnect {           /* P-CONNECT.CONFIRMATION */
        !           120:     int            pc_sd;              /* PRESENTATION descriptor */
        !           121: 
        !           122:     struct PSAPaddr pc_responding;/* address of peer responding */
        !           123: 
        !           124:     struct PSAPctxlist pc_ctxlist;/* the list of negotiated contexts */
        !           125: 
        !           126:     int            pc_defctxresult;    /* result for proposed default context name */
        !           127:     
        !           128:     int            pc_prequirements;   /* presentation requirements */
        !           129: 
        !           130:     int            pc_srequirements;   /* session requirements */
        !           131:     int            pc_settings;        /* initial settings of tokens */
        !           132:     int            pc_please;          /* tokens requested by PS-user */
        !           133:     long    pc_isn;            /* initial serial number */
        !           134: 
        !           135:     struct SSAPref pc_connect; /* session connection identifier */
        !           136: 
        !           137:     int            pc_ssdusize;        /* largest atomic SSDU */
        !           138: 
        !           139:     struct QOStype pc_qos;     /* quality of service */
        !           140:     
        !           141:     int            pc_result;          /* result */
        !           142: #define        PC_ACCEPT       (-1)
        !           143: 
        !           144: #define        PC_REJECTED     0       /* Rejected by peer */
        !           145:                                /* Provider-reason */
        !           146: #define        PC_NOTSPECIFIED 1       /* Reason not specified */
        !           147: #define        PC_CONGEST      2       /* Temporary congestion */
        !           148: #define        PC_EXCEEDED     3       /* Local limit exceeded */
        !           149: #define        PC_ADDRESS      4       /* Called presentation address unknown */
        !           150: #define        PC_VERSION      5       /* Protocol version not supported */
        !           151: #define        PC_DEFAULT      6       /* Default context not supported */
        !           152: #define        PC_READABLE     7       /* User-data not readable */
        !           153: #define        PC_AVAILABLE    8       /* No PSAP available */
        !           154:                                /* Abort-reason */
        !           155: #define        PC_UNRECOGNIZED 9       /* Unrecognized PPDU */
        !           156: #define        PC_UNEXPECTED   10      /* Unexpected PPDU */
        !           157: #define        PC_SSPRIMITIVE  11      /* Unexpected session service primitive */
        !           158: #define        PC_PPPARAM1     12      /* Unrecognized PPDU parameter */
        !           159: #define        PC_PPPARAM2     13      /* Unexpected PPDU parameter */
        !           160: #define        PC_INVALID      14      /* Invalid PPDU parameter value */
        !           161:                                /* Provider-reason */
        !           162: #define        PC_ABSTRACT     15      /* Abstract syntax not supported */
        !           163: #define        PC_TRANSFER     16      /* Proposed transfer syntaxes not supported */
        !           164: #define        PC_DCSLIMIT     17      /* Local limit on DCS exceeded */
        !           165:                                /* begin UNOFFICIAL */
        !           166: #define        PC_REFUSED      18      /* Connect request refused on this network
        !           167:                                   connection */
        !           168: #define        PC_SESSION      19      /* Session disconnect */
        !           169: #define        PC_PROTOCOL     20      /* Protocol error */
        !           170: #define        PC_ABORTED      21      /* Peer aborted connection */
        !           171: #define        PC_PARAMETER    22      /* Invalid parameter */
        !           172: #define        PC_OPERATION    23      /* Invalid operation */
        !           173: #define        PC_TIMER        24      /* Timer expired */
        !           174: #define        PC_WAITING      25      /* Indications waiting */
        !           175:                                /* end UNOFFICIAL */
        !           176: 
        !           177: #define        PC_FATAL(r)     ((r) < PC_PARAMETER)
        !           178: #define        PC_OFFICIAL(r)  ((r) < PC_REFUSED)
        !           179:     
        !           180:                                /* initial data from peer */
        !           181:     int            pc_ninfo;           /*   number of elements */
        !           182:     PE     pc_info[NPDATA];    /*   data */
        !           183: };
        !           184: #define        PCFREE(pc) \
        !           185: { \
        !           186:     register int PCI; \
        !           187:  \
        !           188:     for (PCI = (pc) -> pc_ctxlist.pc_nctx - 1; PCI >= 0; PCI--) { \
        !           189:        oid_free ((pc) -> pc_ctxlist.pc_ctx[PCI].pc_asn); \
        !           190:        oid_free ((pc) -> pc_ctxlist.pc_ctx[PCI].pc_atn); \
        !           191:        (pc) -> pc_ctxlist.pc_ctx[PCI].pc_asn = \
        !           192:            (pc) -> pc_ctxlist.pc_ctx[PCI].pc_atn = NULLOID; \
        !           193:     } \
        !           194:     (pc) -> pc_ctxlist.pc_nctx = 0; \
        !           195:     for (PCI = (pc) -> pc_ninfo - 1; PCI >= 0; PCI--) \
        !           196:        if ((pc) -> pc_info[PCI]) \
        !           197:            pe_free ((pc) -> pc_info[PCI]), (pc) -> pc_info[PCI] = NULLPE; \
        !           198:     (pc) -> pc_ninfo = 0; \
        !           199: }
        !           200:     
        !           201: 
        !           202:                                        /* PRESENTATION requirements */
        !           203: #define        PR_MANAGEMENT   0x0001  /* context management */
        !           204: #define        PR_RESTORATION  0x0002  /* context restoration */
        !           205: 
        !           206: #define        PR_MYREQUIRE    0x0000
        !           207: 
        !           208: 
        !           209: struct PSAPdata {              /* P-READ.INDICATION */
        !           210:     int            px_type;            /* type of indication */
        !           211:                                /* same values as sx_type */
        !           212: 
        !           213:     int            px_ninfo;           /* number of elements */
        !           214:     PE     px_info[NPDATA];    /* data */
        !           215: };
        !           216: #define        PXFREE(px) \
        !           217: { \
        !           218:     register int PXI; \
        !           219:  \
        !           220:     for (PXI = (px) -> px_ninfo - 1; PXI >= 0; PXI--) \
        !           221:        if ((px) -> px_info[PXI]) \
        !           222:            pe_free ((px) -> px_info[PXI]), (px) -> px_info[PXI] = NULLPE; \
        !           223:     (px) -> px_ninfo = 0; \
        !           224: }
        !           225: 
        !           226: 
        !           227: struct PSAPtoken {             /* P-{TOKEN-*,GIVE-CONTROL}.INDICATION */
        !           228:     int            pt_type;            /* type of indication */
        !           229:                                /* same values as st_type */
        !           230: 
        !           231:     u_char  pt_tokens;         /* tokens offered/wanted */
        !           232:                                /* same values as st_tokens */
        !           233: 
        !           234:     u_char  pt_owned;          /* tokens owned by user */
        !           235: 
        !           236: 
        !           237:                                /* PLEASE TOKEN only */
        !           238:     int            pt_ninfo;           /*   number of elements */
        !           239:     PE     pt_info[NPDATA];    /*   data */
        !           240: };
        !           241: #define        PTFREE(pt) \
        !           242: { \
        !           243:     register int PTI; \
        !           244:  \
        !           245:     for (PTI = (pt) -> pt_ninfo - 1; PTI >= 0; PTI--) \
        !           246:        if ((pt) -> pt_info[PTI]) \
        !           247:            pe_free ((pt) -> pt_info[PTI]), (pt) -> pt_info[PTI] = NULLPE; \
        !           248:     (pt) -> pt_ninfo = 0; \
        !           249: }
        !           250: 
        !           251: 
        !           252: struct PSAPsync {              /* P-*-SYNC.{INDICATION,CONFIRMATION} */
        !           253:     int            pn_type;            /* type of indication/confirmation */
        !           254:                                /* same values as sn_type */
        !           255: 
        !           256:     int            pn_options;         /* options (!!) */
        !           257:                                /* same values as sn_options */
        !           258: 
        !           259:     long    pn_ssn;            /* serial number */
        !           260:                                /* same values as sn_ssn */
        !           261: 
        !           262:     int            pn_settings;        /* new token settings (RESYNC only) */
        !           263: 
        !           264:                                /* sync data from peer */
        !           265:     int            pn_ninfo;           /*   number of elements */
        !           266:     PE     pn_info[NPDATA];    /*   data */
        !           267: };
        !           268: #define        PNFREE(pn) \
        !           269: { \
        !           270:     register int PNI; \
        !           271:  \
        !           272:     for (PNI = (pn) -> pn_ninfo - 1; PNI >= 0; PNI--) \
        !           273:        if ((pn) -> pn_info[PNI]) \
        !           274:            pe_free ((pn) -> pn_info[PNI]), (pn) -> pn_info[PNI] = NULLPE; \
        !           275:     (pn) -> pn_ninfo = 0; \
        !           276: }
        !           277: 
        !           278: 
        !           279: struct PSAPactivity {          /* P-ACTIVITY-*.{INDICATION,CONFIRMATION} */
        !           280:     int            pv_type;            /* type of indication/confirmation */
        !           281:                                /* same values as sv_type */
        !           282: 
        !           283:     struct SSAPactid pv_id;    /* START/RESUME activity identifier */
        !           284: 
        !           285:     struct SSAPactid pv_oid;   /* RESUME old activity identifier */
        !           286:     struct SSAPref   pv_connect;/*       old connection identifier */
        !           287: 
        !           288:     long    pv_ssn;            /* RESUME/END Serial number */
        !           289: 
        !           290:     int            pv_reason;          /* INTERRUPT/DISCARD */
        !           291:                                /* same values as sp_reason */
        !           292:         
        !           293:                                /* activity DATA from peer */
        !           294:     int            pv_ninfo;           /*   number of elements */
        !           295:     PE     pv_info[NPDATA];    /*   data */
        !           296: };
        !           297: #define        PVFREE(pv) \
        !           298: { \
        !           299:     register int PVI; \
        !           300:  \
        !           301:     for (PVI = (pv) -> pv_ninfo - 1; PVI >= 0; PVI--) \
        !           302:        if ((pv) -> pv_info[PVI]) \
        !           303:            pe_free ((pv) -> pv_info[PVI]), (pv) -> pv_info[PVI] = NULLPE; \
        !           304:     (pv) -> pv_ninfo = 0; \
        !           305: }
        !           306: 
        !           307: 
        !           308: struct PSAPreport {            /* P-{U,P}-EXCEPTION-REPORT.INDICATION */
        !           309:     int            pp_peer;            /* T   = P-U-EXCEPTION-REPORT.INDICATION:
        !           310:                                        pp_reason/pp_info both meaningful
        !           311:                                   NIL = P-P-EXCEPTION-REPORT.INDICATION:
        !           312:                                        pp_reason == SP_NOREASON, or
        !           313:                                        pp_reason == SP_PROTOCOL */
        !           314:     int            pp_reason;          /* same values as sp_reason */
        !           315: 
        !           316:                                /* report DATA from peer */
        !           317:     int            pp_ninfo;           /*   number of elements */
        !           318:     PE     pp_info[NPDATA];    /*   data */
        !           319: };
        !           320: #define        PPFREE(pp) \
        !           321: { \
        !           322:     register int PPI; \
        !           323:  \
        !           324:     for (PPI = (pp) -> pp_ninfo - 1; PPI >= 0; PPI--) \
        !           325:        if ((pp) -> pp_info[PPI]) \
        !           326:            pe_free ((pp) -> pp_info[PPI]), (pp) -> pp_info[PPI] = NULLPE; \
        !           327:     (pp) -> pp_ninfo = 0; \
        !           328: }
        !           329: 
        !           330: 
        !           331: struct PSAPfinish {            /* P-RELEASE.INDICATION */
        !           332:                                /* release DATA from peer */
        !           333:     int            pf_ninfo;           /*   number of elements */
        !           334:     PE     pf_info[NPDATA];    /*   data */
        !           335: };
        !           336: #define        PFFREE(pf) \
        !           337: { \
        !           338:     register int PFI; \
        !           339:  \
        !           340:     for (PFI = (pf) -> pf_ninfo - 1; PFI >= 0; PFI--) \
        !           341:        if ((pf) -> pf_info[PFI]) \
        !           342:            pe_free ((pf) -> pf_info[PFI]), (pf) -> pf_info[PFI] = NULLPE; \
        !           343:     (pf) -> pf_ninfo = 0; \
        !           344: }
        !           345: 
        !           346: 
        !           347: struct PSAPrelease {           /* P-RELEASE.CONFIRMATION */
        !           348:     int            pr_affirmative;     /* T   = connection released
        !           349:                                   NIL = request refused */
        !           350: 
        !           351:                                /* release DATA from peer */
        !           352:     int            pr_ninfo;           /*   number of elements */
        !           353:     PE     pr_info[NPDATA];    /*   data */
        !           354: };
        !           355: #define        PRFREE(pr) \
        !           356: { \
        !           357:     register int PRI; \
        !           358:  \
        !           359:     for (PRI = (pr) -> pr_ninfo - 1; PRI >= 0; PRI--) \
        !           360:        if ((pr) -> pr_info[PRI]) \
        !           361:            pe_free ((pr) -> pr_info[PRI]), (pr) -> pr_info[PRI] = NULLPE; \
        !           362:     (pr) -> pr_ninfo = 0; \
        !           363: }
        !           364: 
        !           365: 
        !           366: struct PSAPabort {             /* P-{U,P}-ABORT.INDICATION */
        !           367:     int            pa_peer;            /* T   = P-U-ABORT.INDICATION:
        !           368:                                            pa_info/pa_ninfo is meaningful
        !           369:                                   NIL = P-P-ABORT.INDICATION:
        !           370:                                            pa_reason/pa_ppdu is meaningful,
        !           371:                                            pa_data contains diagnostics */
        !           372: 
        !           373:     int            pa_reason;          /* same codes as pc_result */
        !           374: 
        !           375:                                /* abort information from peer */
        !           376:     int            pa_ninfo;           /*   number of elements */
        !           377:     PE     pa_info[NPDATA];    /*   data */
        !           378: 
        !           379:                                /* diagnostics from provider */
        !           380: #define        PA_SIZE         512
        !           381:     int            pa_cc;              /*   length */
        !           382:     char    pa_data[PA_SIZE];  /*   data */
        !           383: };
        !           384: #define        PAFREE(pa) \
        !           385: { \
        !           386:     register int PAI; \
        !           387:  \
        !           388:     for (PAI = (pa) -> pa_ninfo - 1; PAI >= 0; PAI--) \
        !           389:        if ((pa) -> pa_info[PAI]) \
        !           390:            pe_free ((pa) -> pa_info[PAI]), (pa) -> pa_info[PAI] = NULLPE; \
        !           391:     (pa) -> pa_ninfo = 0; \
        !           392: }
        !           393: 
        !           394: 
        !           395: struct PSAPindication {
        !           396:     int            pi_type;            /* the union element present */
        !           397: #define        PI_DATA         0x00
        !           398: #define        PI_TOKEN        0x01
        !           399: #define        PI_SYNC         0x02
        !           400: #define        PI_ACTIVITY     0x03
        !           401: #define        PI_REPORT       0x04
        !           402: #define        PI_FINISH       0x05
        !           403: #define        PI_ABORT        0x06
        !           404: 
        !           405:     union {
        !           406:        struct PSAPdata pi_un_data;
        !           407:        struct PSAPtoken pi_un_token;
        !           408:        struct PSAPsync pi_un_sync;
        !           409:        struct PSAPactivity pi_un_activity;
        !           410:        struct PSAPreport pi_un_report;
        !           411:        struct PSAPfinish pi_un_finish;
        !           412:        struct PSAPabort pi_un_abort;
        !           413:     }  pi_un;
        !           414: #define        pi_data         pi_un.pi_un_data
        !           415: #define        pi_token        pi_un.pi_un_token
        !           416: #define        pi_sync         pi_un.pi_un_sync
        !           417: #define        pi_activity     pi_un.pi_un_activity
        !           418: #define        pi_report       pi_un.pi_un_report
        !           419: #define        pi_finish       pi_un.pi_un_finish
        !           420: #define        pi_abort        pi_un.pi_un_abort
        !           421: };
        !           422: 
        !           423: /*  */
        !           424: 
        !           425: extern char *psap2version;
        !           426: 
        !           427: 
        !           428: int    PExec ();               /* SERVER only */
        !           429: int    PInit ();               /* P-CONNECT.INDICATION */
        !           430: 
        !           431: int    PConnResponse ();       /* P-CONNECT.RESPONSE */
        !           432:                                /* P-CONNECT.REQUEST (backwards-compatible) */
        !           433: #define        PConnRequest(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) \
        !           434:        PAsynConnRequest (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,0)
        !           435: int    PAsynConnRequest ();    /* P-(ASYN-)CONNECT.REQUEST */
        !           436: int    PAsynRetryRequest ();   /* P-ASYN-RETRY.REQUEST (pseudo) */
        !           437: int    PDataRequest ();        /* P-DATA.REQUEST */
        !           438: int    PDataRequestAux ();     /* P-[*-]DATA.REQUEST */
        !           439: #define        PPDU_TTD        8
        !           440: #define        PPDU_TE         9
        !           441: #define        PPDU_TC        10
        !           442: #define        PPDU_TCC       11
        !           443: 
        !           444: #define        PExpdRequest(s,d,n,p) \
        !           445:        PDataRequestAux ((s), (d), (n), (p), "expedited", SExpdRequest, \
        !           446:                        "SExpdRequest", "P-EXPEDITED-DATA user-data", PPDU_TE)
        !           447: 
        !           448: #define        PTypedRequest(s,d,n,p) \
        !           449:        PDataRequestAux ((s), (d), (n), (p), "typed", STypedRequest, \
        !           450:                        "STypedRequest", "P-TYPED-DATA user-data", PPDU_TTD)
        !           451: 
        !           452: #define        PCapdRequest(s,d,n,p) \
        !           453:        PDataRequestAux ((s), (d), (n), (p), "capability", SCapdRequest, \
        !           454:                        "SCapdRequest", "P-CAPABILITY-DATA user-data", PPDU_TC)
        !           455: 
        !           456: #define        PCapdResponse(s,d,n,p) \
        !           457:        PDataRequestAux ((s), (d), (n), (p), "capability", SCapdResponse, \
        !           458:                        "SCapdResponse","P-CAPABILITY-DATA user-data",PPDU_TCC)
        !           459: 
        !           460: int    PReadRequest ();        /* P-READ.REQUEST (pseudo) */
        !           461: int    PGTokenRequest ();      /* P-TOKEN-GIVE.REQUEST */
        !           462: int    PPTokenRequest ();      /* P-TOKEN-PLEASE.REQUEST */
        !           463: int    PGControlRequest ();    /* P-CONTROL-GIVE.REQUEST */
        !           464: int    PMajSyncRequestAux ();  /* P-{MAJOR-SYNC,ACTIVITY-END}.REQUEST */
        !           465: 
        !           466: #define        PMajSyncRequest(s,i,d,n,p) \
        !           467:        PMajSyncRequestAux ((s), (i), (d), (n), (p), "majorsync", \
        !           468:                        SMajSyncRequest, "SMajSyncRequest")
        !           469: 
        !           470: #define        PActEndRequest(s,i,d,n,p) \
        !           471:        PMajSyncRequestAux ((s), (i), (d), (n), (p), "activity end", \
        !           472:                        SActEndRequest, "SActEndRequest")
        !           473: 
        !           474: int    PMajSyncResponseAux (); /* P-{MAJOR-SYNC,ACTIVITY-END}.RESPONSE */
        !           475: 
        !           476: #define        PMajSyncResponse(s,d,n,p) \
        !           477:        PMajSyncResponseAux ((s), (d), (n), (p), "majorsync", \
        !           478:                        SMajSyncResponse, "SMajSyncResponse")
        !           479: 
        !           480: #define        PActEndResponse(s,d,n,p) \
        !           481:        PMajSyncResponseAux ((s), (d), (n), (p), "activity end", \
        !           482:                        SActEndResponse, "SActEndResponse")
        !           483: 
        !           484: int    PMinSyncRequest ();     /* P-MINOR-SYNC.REQUEST */
        !           485: int    PMinSyncResponse ();    /* P-MINOR-SYNC.RESPONSE */
        !           486: int    PReSyncRequest ();      /* P-RESYNCHRONIZE.REQUEST */
        !           487: int    PReSyncResponse ();     /* P-RESYNCHRONIZE.RESPONSE */
        !           488: int    PActStartRequest ();    /* P-ACTIVITY-START.REQUEST */
        !           489: int    PActResumeRequest ();   /* P-ACTIVITY-RESUME.REQUEST */
        !           490: int    PActIntrRequestAux ();  /* P-ACTIVITY-{INTERRUPT,DISCARD}.REQUEST */
        !           491: 
        !           492: #define        PActIntrRequest(s,r,p) \
        !           493:        PActIntrRequestAux ((s), (r), (p), \
        !           494:                        SActIntrRequest, "SActIntrRequest")
        !           495: 
        !           496: #define        PActDiscRequest(s,r,p) \
        !           497:        PActIntrRequestAux ((s), (r), (p), \
        !           498:                        SActDiscRequest, "SActDiscRequest")
        !           499: 
        !           500: int    PActIntrResponseAux (); /* P-ACTIVITY-{INTERRUPT,DISCARD}.RESPONSE */
        !           501: 
        !           502: #define        PActIntrResponse(s,p) \
        !           503:        PActIntrResponseAux ((s), (p), \
        !           504:                        SActIntrResponse, "SActIntrResponse")
        !           505: 
        !           506: #define        PActDiscResponse(s,p) \
        !           507:        PActIntrResponseAux ((s), (p), \
        !           508:                        SActDiscResponse, "SActDiscResponse")
        !           509: 
        !           510: int    PUAbortRequest ();      /* P-U-ABORT.REQUEST */
        !           511: int    PUReportRequest ();     /* P-U-EXCEPTION-REPORT.REQUEST */
        !           512: int    PRelRequest ();         /* P-RELEASE.REQUEST */
        !           513: int    PRelRetryRequest ();    /* P-RELEASE-RETRY.REQUEST (pseudo) */
        !           514: int    PRelResponse ();        /* P-RELEASE.RESPONSE */
        !           515: 
        !           516: int    PSetIndications ();     /* define vectors for INDICATION events */
        !           517: int    PSelectMask ();         /* map presentation descriptors for select() */
        !           518: 
        !           519: char   *PErrString ();         /* return PSAP error code in string form */
        !           520: 
        !           521: #define        PLocalHostName  getlocalhost
        !           522: char   *PLocalHostName ();     /* return name of local host (sigh) */
        !           523: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.