Annotation of 43BSDReno/contrib/isode-beta/rosap/test/rospinit.c, revision 1.1.1.1

1.1       root        1: #include <stdio.h>
                      2: #include "generic.h"           /* defines OPERATIONS and ERRORS */
                      3: #include <isode/rosap.h>
                      4: 
                      5: #define error  printf
                      6: 
                      7:                                /* e.g., "directory" */
                      8: static char *myservice = "ROSPTEST";
                      9: 
                     10:                                /* e.g., "directory services" */
                     11: static char *mycontext = "isode chic read";
                     12: static char *mypci = "isode chic read pci";
                     13: 
                     14: 
                     15: #define INVOKE 1       /* do a RoInvokeRequest */
                     16: #define INTREQ 2       /* do a RoIntrRequest */
                     17: #define INVERR 3       /* request an error */
                     18: #define INVURJ 4       /* request a user reject */
                     19: #define INVPRJ 5       /* request a provider reject */
                     20: 
                     21: main (argc, argv, envp)
                     22: int    argc;
                     23: char  **argv,
                     24:       **envp;
                     25: {
                     26:     int            sd;
                     27:     struct SSAPref sfs;
                     28:     register struct SSAPref *sf;
                     29:     register struct PSAPaddr *pa;
                     30:     struct AcSAPconnect accs;
                     31:     register struct AcSAPconnect   *acc = &accs;
                     32:     struct AcSAPrelease acrs;
                     33:     register struct AcSAPrelease   *acr = &acrs;
                     34:     struct AcSAPindication  acis;
                     35:     register struct AcSAPindication *aci = &acis;
                     36:     register struct AcSAPabort *aca = &aci -> aci_abort;
                     37:     struct RoSAPindication  rois;
                     38:     register struct RoSAPpreject   *rop = &rois.roi_preject;
                     39:     register AEI aei;
                     40:     register OID ctx, pci;
                     41:     struct PSAPctxlist pcs;
                     42:     register struct PSAPctxlist *pc = &pcs;
                     43:     int        servicetype = RoP;
                     44: 
                     45:     if ((aei = str2aei (argv[1], myservice)) == NULLAEI)
                     46:        error ("%s-%s: unknown application-entity", argv[1], myservice);
                     47:     if ((pa = aei2addr (aei)) == NULLPA)
                     48:        error ("address translation failed");
                     49:     if ((ctx = ode2oid (mycontext)) == NULLOID)
                     50:        error ("%s: unknown object descriptor", mycontext);
                     51:     if ((ctx = oid_cpy (ctx)) == NULLOID)
                     52:        error ("oid_cpy");
                     53:     if ((pci = ode2oid (mypci)) == NULLOID)
                     54:        error ("%s: unknown object descriptor", mypci);
                     55:     if ((pci = oid_cpy (pci)) == NULLOID)
                     56:        error ("oid_cpy");
                     57:     pc -> pc_nctx = 1;
                     58:     pc -> pc_ctx[0].pc_id = 1;
                     59:     pc -> pc_ctx[0].pc_asn = pci;
                     60:     pc -> pc_ctx[0].pc_atn = NULLOID;
                     61: 
                     62: 
                     63:     if ((sf = addr2ref (PLocalHostName ())) == NULL) {
                     64:        sf = &sfs;
                     65:        (void) bzero ((char *) sf, sizeof *sf);
                     66:     }
                     67:     
                     68:     if (AcAssocRequest (ctx, NULLAEI, NULLAEI, NULLPA, pa, pc, NULLOID,
                     69:                0, ROS_MYREQUIRE, SERIAL_NONE, 0, sf, NULLPEP, 0, NULLQOS,
                     70:                acc, aci)
                     71:            == NOTOK)
                     72:        error ("A-ASSOCIATE.REQUEST: %s", AcErrString (aca -> aca_reason));
                     73: 
                     74:     if (acc -> acc_result != ACS_ACCEPT)
                     75:        error ("association rejected: %s", AcErrString (aca -> aca_reason));
                     76: 
                     77:     sd = acc -> acc_sd;
                     78: 
                     79:     if (RoSetService (sd, RoPService, &rois) == NOTOK)
                     80:        error ("RoSetService: %s", RoErrString (rop -> rop_reason));
                     81: 
                     82:     invoke (sd, INVOKE);       /* invoke the operations, etc. */
                     83:     
                     84:     invoke (sd, INTREQ);       /* invoke the operations, etc. */
                     85: 
                     86:     invoke (sd, INVERR);       /* invoke the operations, etc. */
                     87: 
                     88:     invoke (sd, INVURJ);       /* invoke the operations, etc. */
                     89: 
                     90:     invoke (sd, INVPRJ);       /* invoke the operations, etc. */
                     91: 
                     92:     if (AcRelRequest (sd, ACF_NORMAL, NULLPEP, 0, NOTOK, acr, aci) == NOTOK)
                     93:        error ("A-RELEASE.REQUEST: %s", AcErrString (aca -> aca_reason));
                     94: 
                     95:     if (!acr -> acr_affirmative) {
                     96:        (void) AcUAbortRequest (sd, NULLPEP, 0, aci);
                     97:        error ("release rejected by peer: %d", acr -> acr_reason);
                     98:     }
                     99: 
                    100:     ACRFREE (acr);
                    101: 
                    102:     exit (0);
                    103: }
                    104: 
                    105: /*
                    106:  * Test example
                    107:  */
                    108: invoke(sd, type)
                    109: int    sd;
                    110: int    type;   /* of invocation */
                    111: {
                    112:     int        invoke;
                    113:     struct RoSAPindication     rind;
                    114:     int        res;
                    115: 
                    116:     invoke = 1;
                    117: 
                    118:     switch (type) {
                    119:     case INVOKE:
                    120:        res = RoInvokeRequest(sd, APDU_OP1, ROS_SYNC, NULLPE, invoke, NULLIP,
                    121:        ROS_NOPRIO, &rind);
                    122:        break;
                    123: 
                    124:     case INTREQ:
                    125:        res = RoIntrRequest(sd, APDU_OP1, NULLPE, invoke, NULLIP, ROS_NOPRIO,
                    126:        &rind);
                    127:        break;
                    128: 
                    129:     case INVERR:
                    130:        res = RoInvokeRequest(sd, APDU_ERR, ROS_SYNC, NULLPE, invoke, NULLIP,
                    131:        ROS_NOPRIO, &rind);
                    132:        break;
                    133: 
                    134:     case INVURJ:
                    135:        res = RoInvokeRequest(sd, APDU_URJ, ROS_SYNC, NULLPE, invoke, NULLIP,
                    136:        ROS_NOPRIO, &rind);
                    137:        break;
                    138: 
                    139:     case INVPRJ:
                    140:        res = RoInvokeRequest(sd, APDU_PRJ, ROS_SYNC, NULLPE, invoke, NULLIP,
                    141:        ROS_NOPRIO, &rind);
                    142:        break;
                    143: 
                    144:     default:
                    145:        fprintf(stderr, "invoke called with illegal type %d\n", type);
                    146:        exit(1);
                    147: 
                    148:     }
                    149: 
                    150:     switch (res) {
                    151:     case NOTOK:
                    152:        if (rind.roi_type == ROI_PREJECT)
                    153:            error("RO-INVOKE.REQUEST: %s\n",
                    154:                RoErrString(rind.roi_preject.rop_reason));
                    155:        else
                    156:            error("RO-INVOKE.REQUEST:failed: unexpected returned type %d\n",
                    157:                rind.roi_type);
                    158:        exit(1);
                    159:     
                    160:     case OK:
                    161:        break;
                    162: 
                    163:     default:
                    164:        error("RO-INVOKE.REQUEST:failed(%d): unexpected returned type %d\n",
                    165:            res, rind.roi_type);
                    166:        exit(2);
                    167: 
                    168:     }
                    169: 
                    170:     switch (rind.roi_type) {
                    171:     case ROI_RESULT:
                    172:        if (rind.roi_result.ror_id == invoke)
                    173:            printf("Result received\n");
                    174:        else
                    175:            printf("Result for wrong request %d\n", rind.roi_result.ror_id);
                    176:        break;
                    177:     
                    178:     case ROI_ERROR:
                    179:        if (rind.roi_error.roe_id == invoke)
                    180:            printf("Error received\n");
                    181:        else
                    182:            printf("Error for wrong request %d\n", rind.roi_error.roe_id);
                    183:        break;
                    184: 
                    185:     case ROI_UREJECT:
                    186:        if (rind.roi_ureject.rou_id == invoke)
                    187:            printf("User Reject received reason %d\n",
                    188:                rind.roi_ureject.rou_reason);
                    189:        else
                    190:            printf("User Reject for wrong request %d\n",
                    191:                rind.roi_ureject.rou_id);
                    192:        break;
                    193: 
                    194:     case ROI_PREJECT:
                    195:        if (rind.roi_preject.rop_id == invoke)
                    196:            printf("Provider Reject received %s\n",
                    197:            RoErrString(rind.roi_preject.rop_reason));
                    198:        else
                    199:            printf("Provider Reject for wrong request %d\n",
                    200:                rind.roi_preject.rop_id);
                    201:        break;
                    202: 
                    203:     default:
                    204:        printf("Unexpected reply received %d\n", rind.roi_type);
                    205:        break;
                    206:     }
                    207: 
                    208: }

unix.superglobalmegacorp.com

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