Annotation of 43BSDReno/contrib/isode-beta/h/rosap.h, revision 1.1.1.1

1.1       root        1: /* rosap.h - include file for remote operation users (RoS-USER) */
                      2: 
                      3: /* 
                      4:  * $Header: /f/osi/h/RCS/rosap.h,v 7.0 89/11/23 21:55:56 mrose Rel $
                      5:  *
                      6:  * Based on an TCP-based implementation by George Michaelson of University
                      7:  * College London.
                      8:  *
                      9:  *
                     10:  * $Log:       rosap.h,v $
                     11:  * Revision 7.0  89/11/23  21:55:56  mrose
                     12:  * Release 6.0
                     13:  * 
                     14:  */
                     15: 
                     16: /*
                     17:  *                               NOTICE
                     18:  *
                     19:  *    Acquisition, use, and distribution of this module and related
                     20:  *    materials are subject to the restrictions of a license agreement.
                     21:  *    Consult the Preface in the User's Manual for the full terms of
                     22:  *    this agreement.
                     23:  *
                     24:  */
                     25: 
                     26: 
                     27: #ifndef        _RoSAP_
                     28: #define        _RoSAP_
                     29: 
                     30: #ifndef        _MANIFEST_
                     31: #include "manifest.h"
                     32: #endif
                     33: #ifndef        _GENERAL_
                     34: #include "general.h"
                     35: #endif
                     36: 
                     37: #ifndef        _AcSAP_
                     38: #include "acsap.h"             /* definitions for AcS-USERs */
                     39: #endif
                     40: 
                     41: /*  */
                     42: 
                     43: struct RoSAPaddr {             /* RoSAP address (old-style)*/
                     44:     struct SSAPaddr roa_addr;
                     45: 
                     46:     u_short    roa_port;
                     47: };
                     48: #define        NULLRoA                 ((struct RoSAPaddr *) 0)
                     49: 
                     50: /*  */
                     51: 
                     52: #define        ROS_MYREQUIRE   SR_DUPLEX/* for direct users of ACSE */
                     53: 
                     54: 
                     55: struct RoSAPstart {            /* RO-BEGIN.INDICATION */
                     56:     int            ros_sd;             /* ROS descriptor */
                     57: 
                     58:     struct RoSAPaddr ros_initiator;/* unique identifier */
                     59: 
                     60:     u_short ros_port;          /* application number */
                     61: 
                     62:     PE     ros_data;           /* initial DATA from peer */
                     63: };
                     64: #define        ROSFREE(ros) \
                     65: { \
                     66:     if ((ros) -> ros_data) \
                     67:        pe_free ((ros) -> ros_data), (ros) -> ros_data = NULLPE; \
                     68: }
                     69: 
                     70: struct RoSAPconnect {          /* RO-BEGIN.CONFIRMATION */
                     71:     int            roc_sd;             /* ROS descriptor */
                     72: 
                     73:     int            roc_result;         /* result */
                     74: #define        ROS_ACCEPT      (-1)
                     75: 
                     76:                                /* RO-BEGIN.REQUEST */
                     77: #define        ROS_VALIDATE    0       /* Authentication failure */
                     78: #define        ROS_BUSY        1       /* Busy */
                     79: 
                     80:                                /* General Problem */
                     81: #define        ROS_GP_UNRECOG  2       /* Unrecognized APDU */
                     82: #define        ROS_GP_MISTYPED 3       /* Mistyped APDU */
                     83: #define        ROS_GP_STRUCT   4       /* Badly structured APDU */
                     84: 
                     85:                                /* Invoke Problem */
                     86: #define        ROS_IP_DUP      5       /* Duplicate invocation */
                     87: #define        ROS_IP_UNRECOG  6       /* Unrecognized operation */
                     88: #define        ROS_IP_MISTYPED 7       /* Mistyped argument */
                     89: #define        ROS_IP_LIMIT    8       /* Resource limitation */
                     90: #define        ROS_IP_RELEASE  9       /* Initiator releasing */
                     91: #define        ROS_IP_UNLINKED 10      /* Unrecognized linked ID */
                     92: #define        ROS_IP_LINKED   11      /* Linked response unexpected */
                     93: #define        ROS_IP_CHILD    12      /* Unexpected child operation */
                     94: 
                     95:                                /* Return Result Problem */
                     96: #define        ROS_RRP_UNRECOG 13      /* Unrecognized invocation */
                     97: #define        ROS_RRP_UNEXP   14      /* Result response unexpected */
                     98: #define        ROS_RRP_MISTYPED 15     /* Mistyped result */
                     99: 
                    100:                                /* Return Error Problem */
                    101: #define        ROS_REP_UNRECOG 16      /* Unrecognized invocation */
                    102: #define        ROS_REP_UNEXP   17      /* Error response unexpected */
                    103: #define        ROS_REP_RECERR  18      /* Unrecognized error */
                    104: #define        ROS_REP_UNEXPERR 19     /* Unexpected error */
                    105: #define        ROS_REP_MISTYPED 20     /* Mistyped parameter */
                    106: 
                    107:                                /* begin UNOFFICIAL */
                    108: #define        ROS_ADDRESS     21      /* Address unknown */
                    109: #define        ROS_REFUSED     22      /* Connect request refused on this network
                    110:                                   connection */
                    111: #define        ROS_SESSION     23      /* Session disconnect */
                    112: #define        ROS_PROTOCOL    24      /* Protocol error */
                    113: #define        ROS_CONGEST     25      /* Congestion at RoSAP */
                    114: #define        ROS_REMOTE      26      /* Remote system problem */
                    115: #define        ROS_DONE        27      /* Association done via async handler */
                    116: #define        ROS_ABORTED     28      /* Peer aborted association */
                    117: #define        ROS_RTS         29      /* RTS disconnect */
                    118: #define        ROS_PRESENTATION 30     /* Presentation disconnect */
                    119: #define        ROS_ACS         31      /* ACS disconnect */
                    120: #define        ROS_PARAMETER   32      /* Invalid parameter */
                    121: #define        ROS_OPERATION   33      /* Invalid operation */
                    122: #define        ROS_TIMER       34      /* Timer expired */
                    123: #define        ROS_WAITING     35      /* Indications waiting */
                    124: #define        ROS_APDU        36      /* APDU not transferred */
                    125: #define        ROS_INTERRUPTED 37      /* stub interrupted */
                    126:                                /* end UNOFFICIAL */
                    127: 
                    128: #define        ROS_FATAL(r)    (!(ROS_OFFICIAL (r)) && (r) < ROS_PARAMETER)
                    129: #define        ROS_OFFICIAL(r) ((r) < ROS_ADDRESS)
                    130: 
                    131:     PE     roc_data;           /* initial DATA from peer */
                    132: };
                    133: #define        ROCFREE(roc) \
                    134: { \
                    135:     if ((roc) -> roc_data) \
                    136:        pe_free ((roc) -> roc_data), (roc) -> roc_data = NULLPE; \
                    137: }
                    138: 
                    139: 
                    140:                                /* Operation Classes */
                    141: #define        ROS_SYNC        0       /* synchronous mode with result or error */
                    142: #define        ROS_ASYNC       1       /* asynchronous mode with result or error */
                    143: 
                    144:                                /* APDU priorities */
                    145: #define        ROS_NOPRIO      0       /* no priority */
                    146: 
                    147:     
                    148: struct RoSAPinvoke {           /* RO-INVOKE.INDICATION */
                    149:     int            rox_id;             /*   invokeID */
                    150: 
                    151:     int            rox_linkid;         /*   linkedID */
                    152:     int     rox_nolinked;      /*   non-zero if no linkedID present */
                    153: 
                    154:     int            rox_op;             /*   operation */
                    155:     PE     rox_args;           /*   arguments */
                    156: };
                    157: #define        ROXFREE(rox) \
                    158: { \
                    159:     if ((rox) -> rox_args) \
                    160:        pe_free ((rox) -> rox_args), (rox) -> rox_args = NULLPE; \
                    161: }
                    162: 
                    163: 
                    164: struct RoSAPresult {           /* RO-RESULT.INDICATION */
                    165:     int            ror_id;             /*   invokeID */
                    166: 
                    167:     int            ror_op;             /*   operation */
                    168:     PE     ror_result;         /*   result */
                    169: };
                    170: #define        RORFREE(ror) \
                    171: { \
                    172:     if ((ror) -> ror_result) \
                    173:        pe_free ((ror) -> ror_result), (ror) -> ror_result = NULLPE; \
                    174: }
                    175: 
                    176: 
                    177: struct RoSAPerror {            /* RO-ERROR.INDICATION */
                    178:     int            roe_id;             /*   invokeID */
                    179: 
                    180:     int            roe_error;          /*   error */
                    181:     PE     roe_param;          /*   parameter */
                    182: };
                    183: #define        ROEFREE(roe) \
                    184: { \
                    185:     if ((roe) -> roe_param) \
                    186:        pe_free ((roe) -> roe_param), (roe) -> roe_param = NULLPE; \
                    187: }
                    188: 
                    189: 
                    190: struct RoSAPureject {          /* RO-U-REJECT.INDICATION */
                    191:     int            rou_id;             /*   invokeID */
                    192:     int            rou_noid;           /*     .. is not present */
                    193: 
                    194:     int            rou_reason;         /*   reason (same as roc_result) */
                    195: };
                    196: 
                    197: 
                    198: struct RoSAPpreject {          /* RO-P-REJECT.INDICATION */
                    199:     int            rop_reason;         /*   reason (same as roc_result) */
                    200: 
                    201:                                /* APDU not transferred (reason is ROS_APDU) */
                    202:     int            rop_id;             /*   invokeID */
                    203:     PE     rop_apdu;           /*   APDU */
                    204: 
                    205:                                /*   additional failure data from provider */
                    206: #define        ROP_SIZE        512
                    207:     int            rop_cc;             /*   length */
                    208:     char    rop_data[ROP_SIZE];        /*   data */
                    209: };
                    210: #define        ROPFREE(rop) \
                    211: { \
                    212:     if ((rop) -> rop_apdu) \
                    213:        pe_free ((rop) -> rop_apdu), (rop) -> rop_apdu = NULLPE; \
                    214: }
                    215: 
                    216: 
                    217: struct RoSAPend {              /* RO-END.INDICATION */
                    218:     int            roe_dummy;          /*   not used */
                    219: };
                    220: 
                    221: 
                    222: struct RoSAPindication {
                    223:     int            roi_type;           /* the union element present */
                    224: #define        ROI_INVOKE      0x00
                    225: #define        ROI_RESULT      0x01
                    226: #define        ROI_ERROR       0x02
                    227: #define        ROI_UREJECT     0x03
                    228: #define        ROI_PREJECT     0x04
                    229: #define        ROI_END         0x05
                    230: #define        ROI_FINISH      0x06
                    231: 
                    232:     union {
                    233:        struct RoSAPinvoke roi_un_invoke;
                    234:        struct RoSAPresult roi_un_result;
                    235:        struct RoSAPerror roi_un_error;
                    236:        struct RoSAPureject roi_un_ureject;
                    237:        struct RoSAPpreject roi_un_preject;
                    238:        struct RoSAPend roi_un_end;
                    239:        struct AcSAPfinish roi_un_finish;
                    240:     }  roi_un;
                    241: #define        roi_invoke      roi_un.roi_un_invoke
                    242: #define        roi_result      roi_un.roi_un_result
                    243: #define        roi_error       roi_un.roi_un_error
                    244: #define        roi_ureject     roi_un.roi_un_ureject
                    245: #define        roi_preject     roi_un.roi_un_preject
                    246: #define        roi_end         roi_un.roi_un_end
                    247: #define        roi_finish      roi_un.roi_un_finish
                    248: };
                    249:     
                    250: /*  */
                    251: 
                    252: extern char *rosapversion;
                    253: 
                    254: int    RoExec ();              /* SERVER only */
                    255: int    RoInit ();              /* RO-BEGIN.INDICATION */
                    256: 
                    257: int    RoBeginResponse ();     /* RO-BEGIN.RESPONSE */
                    258: int    RoBeginRequest ();      /* RO-BEGIN.REQUEST */
                    259: int    RoEndRequest ();        /* RO-END.REQUEST */
                    260: int    RoEndResponse ();       /* RO-END.RESPONSE */
                    261: 
                    262: int    RoInvokeRequest ();     /* RO-INVOKE.REQUEST */
                    263: int    RoResultRequest ();     /* RO-RESULT.REQUEST */
                    264: int    RoErrorRequest ();      /* RO-ERROR.REQUEST */
                    265: int    RoURejectRequest ();    /* RO-U-REJECT.REQUEST */
                    266: #define        RoRejectURequest        RoURejectRequest
                    267: int    RoIntrRequest ();       /* RO-INVOKE.REQUEST (interruptable) */
                    268: int    RoWaitRequest ();       /* RO-WAIT.REQUEST (pseudo) */
                    269: 
                    270: int    RoSetIndications ();    /* define vectors for INDICATION events */
                    271: int    RoSelectMask ();        /* map remote operation descriptors for
                    272:                                   select() */
                    273: 
                    274: int    RoSetService ();        /* bind underlying service */
                    275: int    RoRtService (), RoPService (), RoSService ();
                    276: int    RoSetThorn ();
                    277: 
                    278: char   *RoErrString ();        /* return RoSAP error code in string form */
                    279: #endif

unix.superglobalmegacorp.com

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