Annotation of 43BSDReno/contrib/isode-beta/dsap/common/ds_error.c, revision 1.1.1.1

1.1       root        1: /* ds_error.c - Directory Operation Errors */
                      2: 
                      3: #ifndef lint
                      4: static char *rcsid = "$Header: /f/osi/dsap/common/RCS/ds_error.c,v 7.2 90/03/15 11:17:31 mrose Exp $";
                      5: #endif
                      6: 
                      7: /*
                      8:  * $Header: /f/osi/dsap/common/RCS/ds_error.c,v 7.2 90/03/15 11:17:31 mrose Exp $
                      9:  *
                     10:  *
                     11:  * $Log:       ds_error.c,v $
                     12:  * Revision 7.2  90/03/15  11:17:31  mrose
                     13:  * quipu-sync
                     14:  * 
                     15:  * Revision 7.1  89/12/19  16:19:20  mrose
                     16:  * sync
                     17:  * 
                     18:  * Revision 7.0  89/11/23  21:42:08  mrose
                     19:  * Release 6.0
                     20:  * 
                     21:  */
                     22: 
                     23: /*
                     24:  *                                NOTICE
                     25:  *
                     26:  *    Acquisition, use, and distribution of this module and related
                     27:  *    materials are subject to the restrictions of a license agreement.
                     28:  *    Consult the Preface in the User's Manual for the full terms of
                     29:  *    this agreement.
                     30:  *
                     31:  */
                     32: 
                     33: 
                     34: /* LINTLIBRARY */
                     35: 
                     36: #include "quipu/util.h"
                     37: #include "quipu/name.h"
                     38: #include "quipu/dsp.h"
                     39: #include "quipu/ds_error.h"
                     40: #include "quipu/bind.h"
                     41: 
                     42: extern LLog * log_dsap;
                     43: 
                     44: extern int dn_print ();
                     45: extern int AttrT_print ();
                     46: int dsa_dead;
                     47: 
                     48: static char * abandon_fail [] = {
                     49:        "No error !!!",
                     50:        "No such operation",
                     51:        "Too late",
                     52:        "Cannot abandon"
                     53:        };
                     54: 
                     55: static char * at_problem [] = {
                     56:        "No error !!!",
                     57:        "No such attribute in the entry",
                     58:        "Invalid attribute syntax",
                     59:        "Undefined Attribute type",
                     60:        "Inappropriate Matching",
                     61:        "Constrain violation",
                     62:        "Attribute or Value already exists"
                     63:        };
                     64: 
                     65: static char * name [] = {
                     66:        "No error !!!",
                     67:        "No such object",
                     68:        "Alias problem",
                     69:        "Invalid attribute syntax",
                     70:        "Alias dereference"
                     71:        };
                     72: 
                     73: static char * security [] = {
                     74:        "No error !!!",
                     75:        "Inappropriate authentication",
                     76:        "Invalid credentials",
                     77:        "Access rights",
                     78:        "Invalid signature",
                     79:        "Protection required",
                     80:        "No information"
                     81:        };
                     82: 
                     83: static char * service [] = {
                     84:        "No error !!!",
                     85:        "Busy",
                     86:        "Unavailable",
                     87:        "Unwilling to perform",
                     88:        "Chaining required",
                     89:        "Unable to proceed",
                     90:        "Invalid Reference",
                     91:        "Timelimit exceeded",
                     92:        "Administrative limit exceeded",
                     93:        "Loop detect",
                     94:        "Unavailable critical extension",
                     95:        "Out of scope",
                     96:        "DIT error"
                     97:        };
                     98: 
                     99: static char * update [] = {
                    100:        "No error !!!",
                    101:        "Naming violation",
                    102:        "Object class violation",
                    103:        "Only allowed on leaf entries",
                    104:        "Can't alter the RDN",
                    105:        "Already exists",
                    106:        "Affects multiple DSAs",
                    107:        "Object class modifications Prohibited"
                    108:        };
                    109: 
                    110: ds_error (ps,err)
                    111: PS ps;
                    112: struct DSError *err;
                    113: {
                    114: struct DSE_at_problem *at_prob;
                    115: 
                    116: switch (err->dse_type) {
                    117:    case DSE_NOERROR:
                    118:        ps_print (ps,"No error !!!\n");
                    119:        break;
                    120:    case DSE_ABANDON_FAILED:
                    121:        ps_printf (ps,"*** Abandon failure: %s, id %d ***\n" ,abandon_fail[err->ERR_ABANDON_FAIL.DSE_ab_problem], err->ERR_ABANDON_FAIL.DSE_ab_invokeid);
                    122:        break;
                    123:    case DSE_ATTRIBUTEERROR:
                    124:        ps_print (ps,"*** Attribute error ***\n");
                    125:        dn_print (ps,err->ERR_ATTRIBUTE.DSE_at_name, RDNOUT);
                    126:        ps_print (ps,"\n");
                    127:        for (at_prob = &err->ERR_ATTRIBUTE.DSE_at_plist; at_prob != DSE_AT_NOPROBLEM; at_prob = at_prob -> dse_at_next) {
                    128:                ps_print (ps,"Attribute type ");
                    129:                AttrT_print (ps,at_prob->DSE_at_type,READOUT);
                    130:                if (at_prob->DSE_at_value != NULLAttrV) {
                    131:                        ps_print (ps,", value ");
                    132:                        AttrV_print (ps,at_prob->DSE_at_value,READOUT);
                    133:                }
                    134:                ps_printf (ps," - %s\n", at_problem[at_prob->DSE_at_what]);
                    135:        }
                    136:        break;
                    137:    case DSE_NAMEERROR:
                    138:        ps_printf (ps,"*** Name error: %s ***\n( Matched: ",name[err->ERR_NAME.DSE_na_problem]);
                    139:        dn_print (ps,err->ERR_NAME.DSE_na_matched,RDNOUT);
                    140:        ps_print (ps," )\n");
                    141:        break;
                    142:    case DSE_SERVICEERROR:
                    143:        ps_printf (ps,"*** Service error: %s ***\n", service[err->ERR_SERVICE.DSE_sv_problem] );
                    144:        break;
                    145:    case DSE_REFERRAL:
                    146:        if (err->ERR_REFERRAL.DSE_ref_candidates == NULLCONTINUATIONREF) {
                    147:                ps_print (ps,"*** Can't contact remote DSA - Address Unknown ***\n");
                    148:                break;
                    149:        }
                    150:        ps_print (ps,"*** Referral to \"");
                    151:        dn_print (ps,err->ERR_REFERRAL.DSE_ref_candidates->cr_accesspoints->ap_name,RDNOUT);
                    152:        ps_printf (ps,"\" ***\n");
                    153: /*
                    154:        ps_printf (ps,"\" ***\n    (%s)\n", paddr2str (err->ERR_REFERRAL.DSE_ref_candidates->cr_accesspoints->ap_address,NULLNA));
                    155: */
                    156:        break;
                    157:    case DSE_DSAREFERRAL:
                    158:        if (err->ERR_REFERRAL.DSE_ref_candidates == NULLCONTINUATIONREF) {
                    159:                ps_print (ps,"*** Referral error - Null reference ***\n");
                    160:                break;
                    161:        }
                    162:        ps_print (ps,"*** DSA Referral error - ");
                    163:        dn_print (ps,err->ERR_REFERRAL.DSE_ref_candidates->cr_accesspoints->ap_name,RDNOUT);
                    164:        ps_printf (ps," - %s ***\n", paddr2str (err->ERR_REFERRAL.DSE_ref_candidates->cr_accesspoints->ap_address,NULLNA));
                    165:        dn_print (ps,err->ERR_REFERRAL.DSE_ref_prefix,RDNOUT);
                    166:        break;
                    167:    case DSE_SECURITYERROR:
                    168:        ps_printf (ps,"*** Security error - %s ***\n",security[err->ERR_SECURITY.DSE_sc_problem]);
                    169:        break;
                    170:    case DSE_UPDATEERROR:
                    171:        ps_printf (ps,"*** Update error - %s ***\n",update[err->ERR_UPDATE.DSE_up_problem]);
                    172:        break;
                    173:    case DSE_ABANDONED:
                    174:        ps_print (ps,"*** Abandoned error ***\n");
                    175:        break;
                    176:    case DSE_REMOTEERROR:
                    177:        dsa_dead = TRUE;
                    178:        ps_print (ps,"*** Problem with DSA ***\n");
                    179:        break;
                    180:    case DSE_LOCALERROR:
                    181:        ps_print (ps,"*** Problem with DUA ***\n");
                    182:        break;
                    183:    case DSE_INTR_ABANDON_FAILED:
                    184:        ps_print (ps,"*** Abandoned Failed ***\n");
                    185:        break;
                    186:    case DSE_INTR_ABANDONED:
                    187:        ps_print (ps,"*** Abandoned ***\n");
                    188:        break;
                    189:    case DSE_INTRERROR:
                    190:        ps_print (ps,"*** Interrupted ***\n");
                    191:        break;
                    192:    default:
                    193:        dsa_dead = TRUE;
                    194:        ps_printf (ps,"*** Undefined error '%d' ***\n",err->dse_type);
                    195:        break;
                    196:    }
                    197: 
                    198: ds_error_free (err);
                    199: 
                    200: }
                    201: 
                    202: 
                    203: log_ds_error (err)
                    204: struct DSError *err;
                    205: {
                    206: struct DSE_at_problem *at_prob;
                    207: 
                    208: switch (err->dse_type) {
                    209:    case DSE_NOERROR:
                    210:        LLOG (log_dsap,LLOG_EXCEPTIONS,("No error !!!"));
                    211:        break;
                    212:    case DSE_ABANDON_FAILED:
                    213:        LLOG (log_dsap,LLOG_EXCEPTIONS,("Abandon failure"));
                    214:        LLOG (log_dsap,LLOG_TRACE,("%s,id %d" ,abandon_fail[err->ERR_ABANDON_FAIL.DSE_ab_problem], err->ERR_ABANDON_FAIL.DSE_ab_invokeid));
                    215:        break;
                    216:    case DSE_ATTRIBUTEERROR:
                    217:        LLOG (log_dsap,LLOG_EXCEPTIONS,("Attribute error\n"));
                    218:        pslog (log_dsap,LLOG_TRACE,"...",dn_print,(caddr_t)err->ERR_ATTRIBUTE.DSE_at_name);
                    219:        for (at_prob = &err->ERR_ATTRIBUTE.DSE_at_plist; at_prob != DSE_AT_NOPROBLEM; at_prob = at_prob -> dse_at_next) {
                    220:                LLOG (log_dsap,LLOG_TRACE, (at_problem[at_prob->DSE_at_what]));
                    221:                if (at_prob->DSE_at_value != NULLAttrV) 
                    222:                        pslog (log_dsap,LLOG_TRACE,"type", AttrT_print, (caddr_t) at_prob->DSE_at_type);
                    223:        }
                    224:        break;
                    225:    case DSE_NAMEERROR:
                    226:        LLOG (log_dsap,LLOG_EXCEPTIONS,("Name error: %s",name[err->ERR_NAME.DSE_na_problem]));
                    227:        pslog (log_dsap,LLOG_TRACE,"matched name",dn_print, (caddr_t)err->ERR_NAME.DSE_na_matched);
                    228:        break;
                    229:    case DSE_SERVICEERROR:
                    230:        LLOG (log_dsap,LLOG_EXCEPTIONS,("Service error: %s ", service[err->ERR_SERVICE.DSE_sv_problem] ));
                    231:        break;
                    232:    case DSE_REFERRAL:
                    233:        LLOG (log_dsap,LLOG_EXCEPTIONS,("Referral error"));
                    234:        if (err->ERR_REFERRAL.DSE_ref_candidates == NULLCONTINUATIONREF) {
                    235:                LLOG (log_dsap,LLOG_EXCEPTIONS,("NULL reference in referral error"));
                    236:                break;
                    237:        }
                    238:        pslog (log_dsap,LLOG_TRACE,"ap_name",dn_print, (caddr_t)err->ERR_REFERRAL.DSE_ref_candidates->cr_accesspoints->ap_name);
                    239:        break;
                    240:    case DSE_DSAREFERRAL:
                    241:        LLOG (log_dsap,LLOG_EXCEPTIONS,("DSA!! Referral error"));
                    242:        if (err->ERR_REFERRAL.DSE_ref_candidates == NULLCONTINUATIONREF) {
                    243:                LLOG (log_dsap,LLOG_EXCEPTIONS,("NULL reference in DSA referral error"));
                    244:                break;
                    245:        }
                    246:        pslog (log_dsap,LLOG_TRACE,"ap_name",dn_print, (caddr_t)err->ERR_REFERRAL.DSE_ref_candidates->cr_accesspoints->ap_name);
                    247:        break;
                    248:    case DSE_SECURITYERROR:
                    249:        LLOG (log_dsap,LLOG_EXCEPTIONS,("Security error - %s ",security[err->ERR_SECURITY.DSE_sc_problem]));
                    250:        break;
                    251:    case DSE_UPDATEERROR:
                    252:        LLOG (log_dsap,LLOG_EXCEPTIONS,("Update error - %s ",update[err->ERR_UPDATE.DSE_up_problem]));
                    253:        break;
                    254:    case DSE_ABANDONED:
                    255:        LLOG (log_dsap,LLOG_EXCEPTIONS,("Abandoned error"));
                    256:        break;
                    257:    case DSE_REMOTEERROR:
                    258:        LLOG (log_dsap, LLOG_EXCEPTIONS,("remote DSA error !!!"));
                    259:        break;
                    260:    case DSE_LOCALERROR:
                    261:        LLOG (log_dsap, LLOG_EXCEPTIONS,("local DUA error !!!"));
                    262:        break;
                    263:    case DSE_INTR_ABANDON_FAILED:
                    264:        LLOG (log_dsap, LLOG_EXCEPTIONS,("Abandon failed !!!"));
                    265:        break;
                    266:    case DSE_INTR_ABANDONED:
                    267:        LLOG (log_dsap, LLOG_EXCEPTIONS,("Abandoned !!!"));
                    268:        break;
                    269:    case DSE_INTRERROR:
                    270:        LLOG (log_dsap, LLOG_EXCEPTIONS,("Interrupted !!!"));
                    271:        break;
                    272:    default:
                    273:        LLOG (log_dsap,LLOG_EXCEPTIONS,("Unknown ds error type (%d)",err->dse_type));
                    274:        break;
                    275:    }
                    276: 
                    277: }
                    278: 
                    279: 
                    280: ds_error_free (err)
                    281: struct DSError * err;
                    282: {
                    283: register struct DSE_at_problem *at_prob;
                    284: 
                    285: switch (err->dse_type) {
                    286:        case DSE_ATTRIBUTEERROR:
                    287:                dn_free (err->ERR_ATTRIBUTE.DSE_at_name);
                    288:                at_prob = &err->ERR_ATTRIBUTE.DSE_at_plist;
                    289:                if (at_prob->DSE_at_value != NULLAttrV)
                    290:                        AttrV_free (at_prob->DSE_at_value);
                    291:                if (at_prob->DSE_at_type != NULLAttrT)
                    292:                        AttrT_free (at_prob->DSE_at_type);
                    293: 
                    294:                for (at_prob = at_prob->dse_at_next; at_prob != DSE_AT_NOPROBLEM; at_prob = at_prob -> dse_at_next) {
                    295:                        if (at_prob->DSE_at_value != NULLAttrV)
                    296:                                AttrV_free (at_prob->DSE_at_value);
                    297:                        if (at_prob->DSE_at_type != NULLAttrT)
                    298:                                AttrT_free (at_prob->DSE_at_type);
                    299:                        free ((char *) at_prob);
                    300:                }
                    301:                break;
                    302:        case DSE_NAMEERROR:
                    303:                dn_free (err->ERR_NAME.DSE_na_matched);
                    304:                break;
                    305:        case DSE_REFERRAL:
                    306:                if(err->ERR_REFERRAL.DSE_ref_prefix != NULLDN)
                    307:                    LLOG(log_dsap,LLOG_EXCEPTIONS,("SCREAM! prefix in referral"));
                    308:                /* fall */
                    309:        case DSE_DSAREFERRAL:
                    310:                dn_free (err->ERR_REFERRAL.DSE_ref_prefix);
                    311:                crefs_free (err->ERR_REFERRAL.DSE_ref_candidates);
                    312:                break;
                    313:        default:
                    314:                break;
                    315:        }
                    316: 
                    317:        err->dse_type = DSE_NOERROR;
                    318: 
                    319: }
                    320: 
                    321: ds_bind_error(ps, err)
                    322: PS ps;
                    323: struct ds_bind_error *err;
                    324: {
                    325: 
                    326:   switch (err->dbe_type) {
                    327:     case DBE_TYPE_SERVICE:
                    328:        ps_printf(ps, "*** Service error : %s ***\n", 
                    329:                service[err->dbe_value]);
                    330:        break;
                    331:     case DBE_TYPE_SECURITY:
                    332:        ps_printf(ps, "*** Security error : %s ***\n", 
                    333:                security[err->dbe_value]);
                    334:        break;
                    335:     default:
                    336:        ps_printf(ps, "*** Unrecognised bind error! ***");
                    337:        break;
                    338:   }
                    339: }

unix.superglobalmegacorp.com

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