Annotation of 43BSDReno/contrib/isode-beta/dsap/net/dsapcontexts.c, revision 1.1.1.1

1.1       root        1: /* dsapcontexts.c - Directory context checking routines */
                      2: 
                      3: #ifndef        lint
                      4: static char *rcsid = "$Header: /f/osi/dsap/net/RCS/dsapcontexts.c,v 7.0 90/07/26 14:45:50 mrose Exp $";
                      5: #endif
                      6: 
                      7: /* 
                      8:  * $Header: /f/osi/dsap/net/RCS/dsapcontexts.c,v 7.0 90/07/26 14:45:50 mrose Exp $
                      9:  *
                     10:  *
                     11:  * $Log:       dsapcontexts.c,v $
                     12:  * Revision 7.0  90/07/26  14:45:50  mrose
                     13:  * *** empty log message ***
                     14:  * 
                     15:  */
                     16: 
                     17: /*
                     18:  *                                NOTICE
                     19:  *
                     20:  *    Acquisition, use, and distribution of this module and related
                     21:  *    materials are subject to the restrictions of a license agreement.
                     22:  *    Consult the Preface in the User's Manual for the full terms of
                     23:  *    this agreement.
                     24:  *
                     25:  */
                     26: 
                     27: 
                     28: /* LINTLIBRARY */
                     29: 
                     30: #include "quipu/util.h"
                     31: #include "quipu/dsap.h"
                     32: #include "tsap.h"
                     33: 
                     34: extern LLog * log_dsap;
                     35: #ifndef NO_STATS
                     36: extern LLog * log_stat;
                     37: #endif
                     38: 
                     39: 
                     40: extern OID     acse_pci;
                     41: extern OID     x500_da_as;
                     42: extern OID     x500_ds_as;
                     43: extern OID     quipu_ds_as;
                     44: extern OID     x500_da_ac;
                     45: extern OID     x500_ds_ac;
                     46: extern OID     quipu_ds_ac;
                     47: extern struct PSAPctxlist      * x500_da_pcdl;
                     48: extern struct PSAPctxlist      * x500_ds_pcdl;
                     49: extern struct PSAPctxlist      * quipu_ds_pcdl;
                     50: 
                     51: int      select_context (app_ctx)
                     52: OID                      app_ctx;
                     53: {
                     54:        if(oid_cmp(app_ctx, x500_da_ac) == 0)
                     55:        {
                     56:                return(DS_CTX_X500_DAP);
                     57:        }
                     58: 
                     59:        if(oid_cmp(app_ctx, x500_ds_ac) == 0)
                     60:        {
                     61:                return(DS_CTX_X500_DSP);
                     62:        }
                     63: 
                     64:        if(oid_cmp(app_ctx, quipu_ds_ac) == 0)
                     65:        {
                     66:                return(DS_CTX_QUIPU_DSP);
                     67:        }
                     68: 
                     69:        return (NOTOK);
                     70: }
                     71: 
                     72: /* ARGSUSED */
                     73: int      judge_ctxlist(req_ctxlist, ok_ctxlist)
                     74: struct PSAPctxlist      * req_ctxlist;
                     75: struct PSAPctxlist      * ok_ctxlist;
                     76: {
                     77:     int                          ctxlist_notok = OK;
                     78:     int                   i;
                     79:     int                   j;
                     80:     OID                   ok_asn;
                     81:     OID                   req_asn;
                     82: 
                     83:     DLOG (log_dsap, LLOG_TRACE, ("judge_ctxlist"));
                     84: 
                     85:     for(i=0; i<req_ctxlist->pc_nctx; i++)
                     86:     {
                     87:        DLOG (log_dsap, LLOG_DEBUG, ("Context (%d): id=%d, %s",
                     88:                i,
                     89:                req_ctxlist->pc_ctx[i].pc_id,
                     90:                oid2ode (req_ctxlist->pc_ctx[i].pc_asn)));
                     91: 
                     92:        if(req_ctxlist->pc_ctx[i].pc_result == PC_ACCEPT)
                     93:            req_ctxlist->pc_ctx[i].pc_result = PC_REJECTED;
                     94:     }
                     95: 
                     96:     for(j=0; j<ok_ctxlist->pc_nctx; j++)
                     97:     {
                     98:        ok_asn = ok_ctxlist->pc_ctx[j].pc_asn;
                     99:        for(i=0; i<req_ctxlist->pc_nctx; i++)
                    100:        {
                    101:            if((req_asn = req_ctxlist->pc_ctx[i].pc_asn) == NULLOID) {
                    102:                LLOG (log_dsap,LLOG_EXCEPTIONS,( "Reject: asn is NULLOID"));
                    103:                continue;
                    104:            }
                    105: 
                    106:            if((oid_cmp(req_asn, ok_asn) == 0))
                    107:                break;
                    108:        }
                    109:        if(i < req_ctxlist->pc_nctx) {
                    110:            req_ctxlist->pc_ctx[i].pc_result = PC_ACCEPT;
                    111:        } else {
                    112:            LLOG (log_dsap, LLOG_EXCEPTIONS, ("Missing Context: %s", oid2ode (ok_asn)));
                    113:            ctxlist_notok = NOTOK;
                    114:        }
                    115:     }
                    116: 
                    117: #ifdef DEBUG
                    118:     for(i=0; i<req_ctxlist->pc_nctx; i++)
                    119:     {
                    120:        DLOG(log_dsap, LLOG_DEBUG, ("ctx[%d] id = %d, res = %d.", i,
                    121:                req_ctxlist->pc_ctx[i].pc_id,
                    122:                req_ctxlist->pc_ctx[i].pc_result));
                    123: 
                    124:        if(req_ctxlist->pc_ctx[i].pc_result == PC_REJECTED)
                    125:                DLOG (log_dsap, LLOG_DEBUG, ("Context Rejected: id=%d, %s",
                    126:                        req_ctxlist->pc_ctx[i].pc_id,
                    127:                        oid2ode (req_ctxlist->pc_ctx[i].pc_asn)));
                    128:            
                    129:     }
                    130: #endif
                    131: 
                    132:     return(ctxlist_notok);
                    133: }
                    134: 
                    135: int      find_ctx_id(pcdl, ctx_oid)
                    136: struct PSAPctxlist     * pcdl;
                    137: OID                      ctx_oid;
                    138: {
                    139:     int          i;
                    140: 
                    141:     DLOG (log_dsap, LLOG_TRACE, ("find_ctx_id"));
                    142: 
                    143:     for(i=0; i<pcdl->pc_nctx; i++)
                    144:     {
                    145:        if(oid_cmp(ctx_oid, pcdl->pc_ctx[i].pc_asn) == 0)
                    146:            break;
                    147:     }
                    148: 
                    149:     if(i < pcdl->pc_nctx)
                    150:        return(pcdl->pc_ctx[i].pc_id);
                    151: 
                    152:     LLOG(log_dsap, LLOG_EXCEPTIONS, ("Couldn't find context identifier %s", sprintoid(ctx_oid)));
                    153: 
                    154:     return(NOTOK);
                    155: }
                    156: 
                    157: int      check_dap_ctxlist (ctxlist)
                    158: struct PSAPctxlist     * ctxlist;
                    159: {
                    160:        if (judge_ctxlist (ctxlist, x500_da_pcdl) != OK)
                    161:                return (NOTOK);
                    162: 
                    163:        return (find_ctx_id (ctxlist, x500_da_as));
                    164: }
                    165: 
                    166: int      check_dsp_ctxlist (ctxlist)
                    167: struct PSAPctxlist     * ctxlist;
                    168: {
                    169:        if (judge_ctxlist (ctxlist, x500_ds_pcdl) != OK)
                    170:                return (NOTOK);
                    171: 
                    172:        return (find_ctx_id (ctxlist, x500_ds_as));
                    173: }
                    174: 
                    175: int      check_qsp_ctxlist (ctxlist)
                    176: struct PSAPctxlist     * ctxlist;
                    177: {
                    178:        if (judge_ctxlist (ctxlist, quipu_ds_pcdl) != OK)
                    179:                return (NOTOK);
                    180: 
                    181:        return (find_ctx_id (ctxlist, quipu_ds_as));
                    182: }
                    183: 

unix.superglobalmegacorp.com

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