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

1.1     ! root        1: /* ssap.h - include file for session users (SS-USER) */
        !             2: 
        !             3: /* 
        !             4:  * $Header: /f/osi/h/RCS/ssap.h,v 7.0 89/11/23 21:56:02 mrose Rel $
        !             5:  *
        !             6:  *
        !             7:  * $Log:       ssap.h,v $
        !             8:  * Revision 7.0  89/11/23  21:56:02  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        _SSAP_
        !            25: #define        _SSAP_
        !            26: 
        !            27: #ifndef        _MANIFEST_
        !            28: #include "manifest.h"
        !            29: #endif
        !            30: #ifndef        _GENERAL_
        !            31: #include "general.h"
        !            32: #endif
        !            33: #ifndef        _ISOADDRS_
        !            34: #include "isoaddrs.h"
        !            35: #endif
        !            36: 
        !            37: /*  */
        !            38: 
        !            39: struct SSAPactid {             /* Activity Identifier */
        !            40: #define        SID_DATA_SIZE   6
        !            41:     u_char  sd_len;
        !            42:     char    sd_data[SID_DATA_SIZE];
        !            43: };
        !            44: 
        !            45: struct SSAPref {               /* SSAP reference */
        !            46:                                /* USER reference */
        !            47: #define        SREF_USER_SIZE          64
        !            48:     u_char  sr_ulen;
        !            49:     char    sr_udata[SREF_USER_SIZE];
        !            50: 
        !            51:                                /* COMMON reference */
        !            52: #define        SREF_COMM_SIZE          64
        !            53:     u_char  sr_clen;
        !            54:     char    sr_cdata[SREF_COMM_SIZE];
        !            55: 
        !            56:                                /* ADDITIONAL reference */
        !            57: #define        SREF_ADDT_SIZE  4
        !            58:     u_char  sr_alen;
        !            59:     char    sr_adata[SREF_ADDT_SIZE];
        !            60: 
        !            61:                                /* for S-ACTIVITY-RESUME */
        !            62:     u_char  sr_vlen;
        !            63:     char    sr_vdata[SREF_USER_SIZE];
        !            64: 
        !            65: #define        sr_calling      sr_udata
        !            66: #define        sr_calling_len  sr_ulen
        !            67: #define        sr_called       sr_vdata
        !            68: #define        sr_called_len   sr_vlen
        !            69: };
        !            70: 
        !            71: /*  */
        !            72: 
        !            73: struct SSAPstart {             /* S-CONNECT.INDICATION */
        !            74:     int            ss_sd;              /* SESSION descriptor */
        !            75: 
        !            76:     struct SSAPref  ss_connect;        /* session connection identifier */
        !            77:     
        !            78:     struct SSAPaddr ss_calling;        /* address of peer calling */
        !            79:     struct SSAPaddr ss_called; /* address of peer called */
        !            80: 
        !            81:     int            ss_requirements;    /* session requirements */
        !            82:     int            ss_settings;        /* initial settings of tokens */
        !            83:     long    ss_isn;            /* initial serial number */
        !            84: 
        !            85:     int            ss_ssdusize;        /* largest atomic SSDU */
        !            86: 
        !            87:     struct QOStype ss_qos;     /* quality of service */
        !            88: 
        !            89:                                /* initial DATA from peer */
        !            90: #define        SS_SIZE         512
        !            91:     int            ss_cc;              /*   length */
        !            92:     char   *ss_data;           /*   data */
        !            93: };
        !            94: #define        SSFREE(ss) \
        !            95: { \
        !            96:     if ((ss) -> ss_data) \
        !            97:        free ((ss) -> ss_data), (ss) -> ss_data = NULL; \
        !            98: }
        !            99: 
        !           100:     
        !           101: struct SSAPconnect {           /* S-CONNECT.CONFIRMATION */
        !           102:     int            sc_sd;              /* SESSION descriptor */
        !           103: 
        !           104:     struct SSAPref  sc_connect;        /* session connection identifier */
        !           105:     
        !           106:     struct SSAPaddr sc_responding;/* address of peer responding */
        !           107: 
        !           108:     int            sc_result;          /* result */
        !           109: #define        SC_ACCEPT       (-1)
        !           110: 
        !           111: #define        SC_BASE         0x80            /* reject by SSAP-provider */
        !           112: #define        SC_SSAPID       (SC_BASE + 1)   /* SSAP identifier unknown */
        !           113: #define        SC_SSUSER       (SC_BASE + 2)   /* SS-user not attached to SSAP */
        !           114: #define        SC_CONGEST      (SC_BASE + 3)   /* Congestion at SSAP */
        !           115: #define        SC_VERSION      (SC_BASE + 4)   /* Proposed protocol versions not
        !           116:                                           supported */
        !           117: 
        !           118:                                        /* begin UNOFFICIAL */
        !           119: #define        SC_ADDRESS      (SC_BASE + 5)   /* Address unknown */
        !           120: #define        SC_REFUSED      (SC_BASE + 6)   /* Connect request refused on this
        !           121:                                           network connection */
        !           122: #define        SC_TRANSPORT    (SC_BASE + 7)   /* Transport disconnect */
        !           123: #define        SC_ABORT        (SC_BASE + 8)   /* Provider-initiated abort */
        !           124: #define        SC_PROTOCOL     (SC_BASE + 9)   /* Protocol error */
        !           125: #define        SC_PARAMETER    (SC_BASE + 10)  /* Invalid parameter */
        !           126: #define        SC_OPERATION    (SC_BASE + 11)  /* Invalid operation */
        !           127: #define        SC_TIMER        (SC_BASE + 12)  /* Timer expired */
        !           128: #define        SC_WAITING      (SC_BASE + 13)  /* Indications waiting */
        !           129:                                        /* end UNOFFICIAL */
        !           130: 
        !           131:                                        /* reject by SSAP-user */
        !           132: #define        SC_NOTSPECIFIED 0               /* Reason not specified */
        !           133: #define        SC_CONGESTION   1               /* Temporary congestion */
        !           134: #define        SC_REJECTED     2               /* Rejected */
        !           135: 
        !           136: #ifdef notdef
        !           137: #define        SC_FATAL(r)     ((r) < SC_BASE || (r) < SC_PARAMETER)
        !           138: #define        SC_OFFICIAL(r)  ((r) < SC_BASE || (r) < SC_ADDRESS)
        !           139: #else
        !           140: #define        SC_FATAL(r)     ((r) < SC_PARAMETER)
        !           141: #define        SC_OFFICIAL(r)  ((r) < SC_ADDRESS)
        !           142: #endif
        !           143: 
        !           144:     int            sc_requirements;    /* session requirements */
        !           145:     int            sc_settings;        /* initial assignment of tokens */
        !           146:     int            sc_please;          /* tokens requested by SS-user
        !           147:                                   (S-TOKEN-PLEASE.INDICATION) */
        !           148:     long    sc_isn;            /* initial serial number */
        !           149: 
        !           150:     int            sc_ssdusize;        /* largest atomic SSDU */
        !           151: 
        !           152:     struct QOStype sc_qos;     /* quality of service */
        !           153: 
        !           154:                                /* initial DATA from peer */
        !           155: #ifdef HPUX
        !           156: #undef SC_SIZE
        !           157: #endif
        !           158: #define        SC_SIZE         512
        !           159:     int            sc_cc;              /*   length */
        !           160:     char   *sc_data;           /*   data */
        !           161:     char   *sc_realdata;       /*   real head of data */
        !           162: };
        !           163: #define        SCFREE(sc) \
        !           164: { \
        !           165:     if ((sc) -> sc_realdata) \
        !           166:        free ((sc) -> sc_realdata), \
        !           167:            (sc) -> sc_realdata = (sc) -> sc_data = NULL; \
        !           168:     else \
        !           169:        if ((sc) -> sc_data) \
        !           170:            free ((sc) -> sc_data), (sc) -> sc_data = NULL; \
        !           171: }
        !           172: 
        !           173: 
        !           174:                                        /* SESSION requirements */
        !           175: #define        SR_HALFDUPLEX   0x0001  /* half-duplex */
        !           176: #define        SR_DUPLEX       0x0002  /* full-duplex */
        !           177: #define        SR_EXPEDITED    0x0004  /* expedited data transfer */
        !           178: #define        SR_MINORSYNC    0x0008  /* minor synchronize */
        !           179: #define        SR_MAJORSYNC    0x0010  /* major synchronize */
        !           180: #define        SR_RESYNC       0x0020  /* resynchronize */
        !           181: #define        SR_ACTIVITY     0x0040  /* activity management */
        !           182: #define        SR_NEGOTIATED   0x0080  /* negotiated release */
        !           183: #define        SR_CAPABILITY   0x0100  /* capability data transfer */
        !           184: #define        SR_EXCEPTIONS   0x0200  /* exceptions reporting */
        !           185: #define        SR_TYPEDATA     0x0400  /* typed data transfer */
        !           186: #define        SR_SYMMETRIC    0x0800  /* symmetric synchronize */
        !           187: 
        !           188: #define        SR_RLS_EXISTS   SR_NEGOTIATED
        !           189: #define        SR_MAJ_EXISTS   (SR_MAJORSYNC | SR_ACTIVITY)
        !           190: #define        SR_ACT_EXISTS   SR_ACTIVITY
        !           191: #define        SR_MIN_EXISTS   SR_MINORSYNC
        !           192: #define        SR_DAT_EXISTS   SR_HALFDUPLEX
        !           193: 
        !           194: #define        SR_TOKENS       (SR_RLS_EXISTS | SR_MAJ_EXISTS | SR_ACT_EXISTS \
        !           195:                            | SR_MIN_EXISTS | SR_DAT_EXISTS)
        !           196: 
        !           197: #define        SR_BASUBSET     (SR_HALFDUPLEX | SR_TYPEDATA | SR_CAPABILITY \
        !           198:                            | SR_MINORSYNC | SR_EXCEPTIONS | SR_ACTIVITY)
        !           199: #define        SR_BCSUBSET     (SR_HALFDUPLEX | SR_DUPLEX)
        !           200: #define        SR_BSSUBSET     (SR_NEGOTIATED | SR_HALFDUPLEX | SR_DUPLEX \
        !           201:                            | SR_TYPEDATA | SR_MINORSYNC | SR_MAJORSYNC \
        !           202:                            | SR_RESYNC)
        !           203: #define        SR_MYREQUIRE    (SR_BASUBSET | SR_BCSUBSET | SR_BSSUBSET \
        !           204:                            | SR_EXPEDITED)
        !           205: #define        SR_DEFAULT      (SR_HALFDUPLEX | SR_MINORSYNC | SR_ACTIVITY \
        !           206:                            | SR_CAPABILITY | SR_EXCEPTIONS)
        !           207: 
        !           208:                                        /* SESSION tokens */
        !           209: #define        ST_INIT_VALUE   0x00    /* initiator's side */
        !           210: #define        ST_RESP_VALUE   0x01    /* responder's side */
        !           211: #define        ST_CALL_VALUE   0x02    /* called SS-user's choice */
        !           212: #define        ST_RSVD_VALUE   0x03    /* reserved */
        !           213: 
        !           214: #define        ST_MASK         0x03
        !           215: 
        !           216: #define        ST_RLS_SHIFT    6       /* release token */
        !           217: #define        ST_MAJ_SHIFT    4       /* major/activity token */
        !           218: #define        ST_ACT_SHIFT    ST_MAJ_SHIFT
        !           219: #define        ST_MIN_SHIFT    2       /* synchronize-minor token */
        !           220: #define        ST_DAT_SHIFT    0       /* data token */
        !           221: 
        !           222: #define        dotokens() \
        !           223: { \
        !           224:     dotoken (SR_RLS_EXISTS, ST_RLS_SHIFT, ST_RLS_TOKEN, "release"); \
        !           225:     dotoken (SR_MAJ_EXISTS, ST_MAJ_SHIFT, ST_MAJ_TOKEN, "majorsync"); \
        !           226:     dotoken (SR_MIN_EXISTS, ST_MIN_SHIFT, ST_MIN_TOKEN, "minorsync"); \
        !           227:     dotoken (SR_DAT_EXISTS, ST_DAT_SHIFT, ST_DAT_TOKEN, "data"); \
        !           228: }
        !           229: 
        !           230: 
        !           231: struct SSAPdata {              /* S-READ.INDICATION */
        !           232:     int            sx_type;            /* type of indication */
        !           233: #define        SX_NORMAL       0x00    /* S-DATA.INDICATION */
        !           234: #define        SX_EXPEDITED    0x01    /* S-EXPEDITED-DATA.INDICATION */
        !           235: #define        SX_TYPED        0x02    /* S-TYPED-DATA.INDICATION */
        !           236: #define        SX_CAPDIND      0x03    /* S-CAPABILITY-DATA.INDICATION */
        !           237: #define        SX_CAPDCNF      0x04    /* S-CAPABILITY-DATA.CONFIRMATION */
        !           238: 
        !           239: #define        SX_EXSIZE       14      /* EXPEDITED DATA (XSSDU) only */
        !           240: #define        SX_CDSIZE       512     /* CAPABILITY DATA only */
        !           241: #define        SX_CDASIZE      512     /* CAPABILITY DATA ACK only */
        !           242:     int            sx_cc;              /*   total length */
        !           243:     struct qbuf sx_qbuf;       /*   chained data */
        !           244: };
        !           245: #define        SXFREE(sx)      QBFREE (&((sx) -> sx_qbuf))
        !           246: 
        !           247: 
        !           248: struct SSAPtoken {             /* S-{TOKEN-*,GIVE-CONTROL}.INDICATION */
        !           249:     int            st_type;            /* type of indication */
        !           250: #define        ST_GIVE         0x00    /* S-TOKEN-GIVE.INDICATION */
        !           251: #define        ST_PLEASE       0x01    /* S-TOKEN-PLEASE.INDICATION */
        !           252: #define        ST_CONTROL      0x02    /* S-GIVE-CONTROL.INDICATION */
        !           253: 
        !           254:     u_char  st_tokens;         /* tokens offered/wanted */
        !           255: #define        ST_RLS_TOKEN    (0x01 << ST_RLS_SHIFT)
        !           256: #define        ST_MAJ_TOKEN    (0x01 << ST_MAJ_SHIFT)
        !           257: #define        ST_ACT_TOKEN    (0x01 << ST_ACT_SHIFT)
        !           258: #define        ST_MIN_TOKEN    (0x01 << ST_MIN_SHIFT)
        !           259: #define        ST_DAT_TOKEN    (0x01 << ST_DAT_SHIFT)
        !           260: 
        !           261:     u_char  st_owned;          /* tokens owned by user */
        !           262: 
        !           263: #define        ST_SIZE         512     /* PLEASE TOKEN only */
        !           264:     int            st_cc;              /*   length */
        !           265:     char   *st_data;           /*   data */
        !           266: };
        !           267: #define        STFREE(st) \
        !           268: { \
        !           269:     if ((st) -> st_data) \
        !           270:        free ((st) -> st_data), (st) -> st_data = NULL; \
        !           271: }
        !           272: 
        !           273: 
        !           274: struct SSAPsync {              /* S-*-SYNC.{INDICATION,CONFIRMATION} */
        !           275:     int            sn_type;            /* type of indication/confirmation */
        !           276: #define        SN_MAJORIND     0x00    /* S-MAJOR-SYNC.INDICATION */
        !           277: #define        SN_MAJORCNF     0x01    /* S-MAJOR-SYNC.CONFIRMATION */
        !           278: #define        SN_MINORIND     0x02    /* S-MINOR-SYNC.INDICATION */
        !           279: #define        SN_MINORCNF     0x03    /* S-MINOR-SYNC.CONFIRMATION */
        !           280: #define        SN_RESETIND     0x04    /* S-RESYNCHRONIZE.INDICATION */
        !           281: #define        SN_RESETCNF     0x05    /* S-RESYNCHRONIZE.CONFIRMATION */
        !           282: 
        !           283:     int            sn_options;         /* options (!!) */
        !           284:                                /* for S-MINOR-SYNC.INDICATION */
        !           285: #define        SYNC_CONFIRM    1       /* wants confirmation */
        !           286: #define        SYNC_NOCONFIRM  0       /*   .. nope */
        !           287:                                /* for S-RESYNCHRONIZE.INDICATION */
        !           288: #define        SYNC_RESTART    0       /* restart */
        !           289: #define        SYNC_ABANDON    1       /* abandon */
        !           290: #define        SYNC_SET        2       /* set */
        !           291: 
        !           292:     long    sn_ssn;            /* serial number */
        !           293: #define        SERIAL_NONE     (-1L)   /* No SSN */
        !           294: #define        SERIAL_MIN      000000L /* the min SSN */
        !           295: #define        SERIAL_MAX      999998L /* the max SSN */
        !           296: 
        !           297:     int            sn_settings;        /* new token settings (RESYNC only) */
        !           298: 
        !           299:                                /* sync data from peer */
        !           300: #define        SN_SIZE         512
        !           301:     int            sn_cc;              /*   length */
        !           302:     char   *sn_data;           /*   data */
        !           303: };
        !           304: #define        SNFREE(sn) \
        !           305: { \
        !           306:     if ((sn) -> sn_data) \
        !           307:        free ((sn) -> sn_data), (sn) -> sn_data = NULL; \
        !           308: }
        !           309: 
        !           310: 
        !           311: struct SSAPactivity {          /* S-ACTIVITY-*.{INDICATION,CONFIRMATION} */
        !           312:     int            sv_type;            /* type of indication/confirmation */
        !           313: #define        SV_START        0x00    /* S-ACTIVITY-START.INDICATION */
        !           314: #define        SV_RESUME       0x01    /* S-ACTIVITY-RESUME.INDICATION */
        !           315: #define        SV_INTRIND      0x02    /* S-ACTIVITY-INTERRUPT.INDICATION */
        !           316: #define        SV_INTRCNF      0x03    /* S-ACTIVITY-INTERRUPT.CONFIRMATION */
        !           317: #define        SV_DISCIND      0x04    /* S-ACTIVITY-DISCARD.INDICATION */
        !           318: #define        SV_DISCCNF      0x05    /* S-ACTIVITY-DISCARD.CONFIRMATION */
        !           319: #define        SV_ENDIND       0x06    /* S-ACTIVITY-END.INDICATION */
        !           320: #define        SV_ENDCNF       0x07    /* S-ACTIVITY-END.CONFIRMATION */
        !           321: 
        !           322:     struct SSAPactid sv_id;    /* START/RESUME activity identifier */
        !           323: 
        !           324:     struct SSAPactid sv_oid;   /* RESUME old activity identifier */
        !           325:     struct SSAPref   sv_connect;/*       old connection identifier */
        !           326: 
        !           327:     long    sv_ssn;            /* RESUME/END Serial number */
        !           328: 
        !           329:     int            sv_reason;          /* INTERRUPT/DISCARD */
        !           330:                                /* same values as sp_reason */
        !           331:         
        !           332:                                /* activity DATA from peer */
        !           333: #define        SV_SIZE         512
        !           334:     int            sv_cc;              /*   length */
        !           335:     char   *sv_data;           /*   data */
        !           336: };
        !           337: #define        SVFREE(sv) \
        !           338: { \
        !           339:     if ((sv) -> sv_data) \
        !           340:        free ((sv) -> sv_data), (sv) -> sv_data = NULL; \
        !           341: }
        !           342: 
        !           343: 
        !           344: struct SSAPreport {            /* S-{U,P}-EXCEPTION-REPORT.INDICATION */
        !           345:     int            sp_peer;            /* T   = S-U-EXCEPTION-REPORT.INDICATION:
        !           346:                                        sp_reason/sp_data both meaningful
        !           347:                                   NIL = S-P-EXCEPTION-REPORT.INDICATION:
        !           348:                                        sp_reason == SP_NOREASON, or
        !           349:                                        sp_reason == SP_PROTOCOL */
        !           350:     int            sp_reason;
        !           351: #define        SP_NOREASON     0       /* No specific reason stated */
        !           352: #define        SP_JEOPARDY     1       /* User receiving ability jeopardized */
        !           353: #define        SP_RSVD1        2       /* reserved */
        !           354: #define        SP_SEQUENCE     3       /* User sequence error */
        !           355: #define        SP_RSVD2        4       /* reserved */
        !           356: #define        SP_LOCAL        5       /* Local SS-user error */
        !           357: #define        SP_PROCEDURAL   6       /* Unrecoverable procedural error */
        !           358: #define        SP_DEMAND       128     /* Demand data token */
        !           359: 
        !           360: #define        SP_PROTOCOL     (-1)    /* SS-provider protocol error */
        !           361: 
        !           362:                                /* report DATA from peer */
        !           363: #define        SP_SIZE         512
        !           364:     int            sp_cc;              /*   length */
        !           365:     char   *sp_data;           /*   data */
        !           366: };
        !           367: #define        SPFREE(sp) \
        !           368: { \
        !           369:     if ((sp) -> sp_data) \
        !           370:        free ((sp) -> sp_data), (sp) -> sp_data = NULL; \
        !           371: }
        !           372: 
        !           373: 
        !           374: struct SSAPfinish {            /* S-RELEASE.INDICATION */
        !           375:                                /* release DATA from peer */
        !           376: #define        SF_SIZE         512
        !           377:     int            sf_cc;              /*   length */
        !           378:     char   *sf_data;           /*   data */
        !           379: };
        !           380: #define        SFFREE(sf) \
        !           381: { \
        !           382:     if ((sf) -> sf_data) \
        !           383:        free ((sf) -> sf_data), (sf) -> sf_data = NULL; \
        !           384: }
        !           385: 
        !           386: 
        !           387: struct SSAPrelease {           /* S-RELEASE.CONFIRMATION */
        !           388:     int            sr_affirmative;     /* T   = connection released
        !           389:                                   NIL = request refused */
        !           390: 
        !           391:                                /* release DATA from peer */
        !           392: #define        SR_SIZE         512
        !           393:     int            sr_cc;              /*   length */
        !           394:     char   *sr_data;           /*   data */
        !           395: };
        !           396: #define        SRFREE(sr) \
        !           397: { \
        !           398:     if ((sr) -> sr_data) \
        !           399:        free ((sr) -> sr_data), (sr) -> sr_data = NULL; \
        !           400: }
        !           401: 
        !           402: 
        !           403: struct SSAPabort {             /* S-{U,P}-ABORT.INDICATION */
        !           404:     int            sa_peer;            /* T   = S-U-ABORT.INDICATION:
        !           405:                                             sa_info/sa_cc is meaningful
        !           406:                                   NIL = S-P-ABORT.INDICATION:
        !           407:                                             sa_reason is meaningful,
        !           408:                                             sa_data/sa_cc contains diagnostics */
        !           409: 
        !           410:     int            sa_reason;          /* same codes as sc_result */
        !           411: 
        !           412:                                /* abort DATA from peer */
        !           413: #define        SA_SIZE         512     /* N.B.: the ISO DIS says 9, but we use
        !           414:                                   512 instead so ASE-level aborts will work
        !           415:                                   reasonably */
        !           416:     int            sa_cc;              /*   length */
        !           417:     char   *sa_info;           /*   data (from the peer) */
        !           418:     char   *sa_realinfo;       /*   real head of data */
        !           419:     char    sa_data[512];      /*   data (for messages from provider) */
        !           420: };
        !           421: #define        SAFREE(sa) \
        !           422: { \
        !           423:     if ((sa) -> sa_realinfo) \
        !           424:        free ((sa) -> sa_realinfo), (sa) -> sa_realinfo = NULL; \
        !           425: }
        !           426: 
        !           427: 
        !           428: struct SSAPindication {
        !           429:     int            si_type;            /* the union element present */
        !           430: #define        SI_DATA         0x00
        !           431: #define        SI_TOKEN        0x01
        !           432: #define        SI_SYNC         0x02
        !           433: #define        SI_ACTIVITY     0x03
        !           434: #define        SI_REPORT       0x04
        !           435: #define        SI_FINISH       0x05
        !           436: #define        SI_ABORT        0x06
        !           437: 
        !           438:     union {
        !           439:        struct SSAPdata si_un_data;
        !           440:        struct SSAPtoken si_un_token;
        !           441:        struct SSAPsync si_un_sync;
        !           442:        struct SSAPactivity si_un_activity;
        !           443:        struct SSAPreport si_un_report;
        !           444:        struct SSAPfinish si_un_finish;
        !           445:        struct SSAPabort si_un_abort;
        !           446:     }  si_un;
        !           447: #define        si_data         si_un.si_un_data
        !           448: #define        si_token        si_un.si_un_token
        !           449: #define        si_sync         si_un.si_un_sync
        !           450: #define        si_activity     si_un.si_un_activity
        !           451: #define        si_report       si_un.si_un_report
        !           452: #define        si_finish       si_un.si_un_finish
        !           453: #define        si_abort        si_un.si_un_abort
        !           454: };
        !           455: 
        !           456: /*  */
        !           457: 
        !           458: extern char *ssapversion;
        !           459: 
        !           460: 
        !           461: int    SExec ();               /* SERVER only */
        !           462: int    SInit ();               /* S-CONNECT.INDICATION */
        !           463: 
        !           464: int    SConnResponse ();       /* S-CONNECT.RESPONSE */
        !           465: int    SConnRequest ();        /* S-CONNECT.REQUEST (backwards-compatible) */
        !           466: #define        SConnRequest(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) \
        !           467:        SAsynConnRequest (a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,0)
        !           468: int    SAsynConnRequest ();    /* S-(ASYN-)CONNECT.REQUEST */
        !           469: int    SAsynRetryRequest ();   /* S-ASYN-RETRY.REQUEST (pseudo) */
        !           470: int    SDataRequest ();        /* S-DATA.REQUEST */
        !           471: int    SWriteRequest ();       /* S-WRITE.REQUEST (pseudo) */
        !           472: int    SExpdRequest ();        /* S-EXPEDITED-DATA.REQUEST */
        !           473: int    STypedRequest ();       /* S-TYPED-DATA.REQUEST */
        !           474: int    SCapdRequest ();        /* S-CAPABILITY-DATA.REQUEST */
        !           475: int    SCapdResponse ();       /* S-CAPABILITY-DATA.RESPONSE */
        !           476: int    SReadRequest ();        /* S-READ.REQUEST (pseudo) */
        !           477: int    SGTokenRequest ();      /* S-TOKEN-GIVE.REQUEST */
        !           478: int    SPTokenRequest ();      /* S-TOKEN-PLEASE.REQUEST */
        !           479: int    SGControlRequest ();    /* S-CONTROL-GIVE.REQUEST */
        !           480: int    SMajSyncRequest ();     /* S-MAJOR-SYNC.REQUEST */
        !           481: int    SMajSyncResponse ();    /* S-MAJOR-SYNC.RESPONSE */
        !           482: int    SMinSyncRequest ();     /* S-MINOR-SYNC.REQUEST */
        !           483: int    SMinSyncResponse ();    /* S-MINOR-SYNC.RESPONSE */
        !           484: int    SReSyncRequest ();      /* S-RESYNCHRONIZE.REQUEST */
        !           485: int    SReSyncResponse ();     /* S-RESYNCHRONIZE.RESPONSE */
        !           486: int    SActStartRequest ();    /* S-ACTIVITY-START.REQUEST */
        !           487: int    SActResumeRequest ();   /* S-ACTIVITY-RESUME.REQUEST */
        !           488: int    SActIntrRequest ();     /* S-ACTIVITY-INTERRUPT.REQUEST */
        !           489: int    SActIntrResponse ();    /* S-ACTIVITY-INTERRUPT.RESPONSE */
        !           490: int    SActDiscRequest ();     /* S-ACTIVITY-DISCARD.REQUEST */
        !           491: int    SActDiscResponse ();    /* S-ACTIVITY-DISCARD.RESPONSE */
        !           492: int    SActEndRequest ();      /* S-ACTIVITY-END.REQUEST */
        !           493: int    SActEndResponse ();     /* S-ACTIVITY-END.RESPONSE */
        !           494: int    SUAbortRequest ();      /* S-U-ABORT.REQUEST */
        !           495: int    SUReportRequest ();     /* S-U-EXCEPTION-REPORT.REQUEST */
        !           496: int    SRelRequest ();         /* S-RELEASE.REQUEST */
        !           497: int    SRelRetryRequest ();    /* S-RELEASE-RETRY.REQUEST (pseudo) */
        !           498: int    SRelResponse ();        /* S-RELEASE.RESPONSE */
        !           499: 
        !           500: int    SSetIndications ();     /* define vectors for INDICATION events */
        !           501: int    SSelectMask ();         /* map session descriptors for select() */
        !           502: 
        !           503: char   *SErrString ();         /* return SSAP error code in string form */
        !           504: 
        !           505: #define        SLocalHostName  getlocalhost
        !           506: char   *SLocalHostName ();     /* return name of local host (sigh) */
        !           507: #endif

unix.superglobalmegacorp.com

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