Annotation of 43BSDReno/contrib/isode-beta/rosap/test/rospinit.c, revision 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.