|
|
1.1 root 1: /* ds_error.h - directory service errors */
2:
3: /*
4: * $Header: /f/osi/h/quipu/RCS/ds_error.h,v 7.0 89/11/23 21:56:30 mrose Rel $
5: *
6: *
7: * $Log: ds_error.h,v $
8: * Revision 7.0 89/11/23 21:56:30 mrose
9: * Release 6.0
10: *
11: */
12:
13: /*
14: * NOTICE
15: *
16: * Acquisition, use, and distribution of this module and related
17: * materials are subject to the restrictions of a license agreement.
18: * Consult the Preface in the User's Manual for the full terms of
19: * this agreement.
20: *
21: */
22:
23:
24: #ifndef DSERRORH
25: #define DSERRORH
26:
27: #include "quipu/dsp.h"
28:
29: struct DSE_abandon_fail {
30: int DSE_ab_problem;
31: #define DSE_AB_NOSUCHOPERATION 1
32: #define DSE_AB_TOOLATE 2
33: #define DSE_AB_CANNOTABANDON 3
34: int DSE_ab_invokeid;
35: };
36:
37: struct DSE_at_problem {
38: int DSE_at_what;
39: #define DSE_AT_NOSUCHATTRIBUTE 1
40: #define DSE_AT_INVALIDATTRIBUTESYNTAX 2
41: #define DSE_AT_UNDEFINEDATTRIBUTETYPE 3
42: #define DSE_AT_INAPPROPRIATEMATCHING 4
43: #define DSE_AT_CONSTRAINTVIOLATION 5
44: #define DSE_AT_TYPEORVALUEEXISTS 6
45: AttributeType DSE_at_type;
46: AttributeValue DSE_at_value;
47: struct DSE_at_problem *dse_at_next;
48: };
49: #define DSE_AT_NOPROBLEM ((struct DSE_at_problem*)0)
50:
51: struct DSE_attribute {
52: DN DSE_at_name;
53: struct DSE_at_problem DSE_at_plist;
54: } ;
55:
56:
57: struct DSE_name {
58: int DSE_na_problem;
59: #define DSE_NA_NOSUCHOBJECT 1
60: #define DSE_NA_ALIASPROBLEM 2
61: #define DSE_NA_INVALIDATTRIBUTESYNTAX 3
62: #define DSE_NA_ALIASDEREFERENCE 4
63: DN DSE_na_matched;
64: };
65:
66:
67: struct DSE_referral {
68: ContinuationRef DSE_ref_candidates;
69: DN DSE_ref_prefix;
70: /* Context prefix only in DSP */
71: };
72:
73: struct DSE_security {
74: int DSE_sc_problem;
75: #define DSE_SC_AUTHENTICATION 1
76: #define DSE_SC_INVALIDCREDENTIALS 2
77: #define DSE_SC_ACCESSRIGHTS 3
78: #define DSE_SC_INVALIDSIGNATURE 4
79: #define DSE_SC_PROTECTIONREQUIRED 5
80: #define DSE_SC_NOINFORMATION 6
81: };
82:
83: struct DSE_service {
84: int DSE_sv_problem;
85: #define DSE_SV_BUSY 1
86: #define DSE_SV_UNAVAILABLE 2
87: #define DSE_SV_UNWILLINGTOPERFORM 3
88: #define DSE_SV_CHAININGREQUIRED 4
89: #define DSE_SV_UNABLETOPROCEED 5
90: #define DSE_SV_INVALIDREFERENCE 6 /* DSP ONLY */
91: #define DSE_SV_TIMELIMITEXCEEDED 7
92: #define DSE_SV_ADMINLIMITEXCEEDED 8
93: #define DSE_SV_LOOPDETECT 9
94: #define DSE_SV_UNAVAILABLECRITICALEXTENSION 10
95: #define DSE_SV_OUTOFSCOPE 11
96: #define DSE_SV_DITERROR 12
97: };
98:
99: struct DSE_update {
100: int DSE_up_problem;
101: #define DSE_UP_NAMINGVIOLATION 1
102: #define DSE_UP_OBJECTCLASSVIOLATION 2
103: #define DSE_UP_NOTONNONLEAF 3
104: #define DSE_UP_NOTONRDN 4
105: #define DSE_UP_ALREADYEXISTS 5
106: #define DSE_UP_AFFECTSMULTIPLEDSAS 6
107: #define DSE_UP_NOOBJECTCLASSMODS 7
108: };
109:
110: struct DSError {
111: int dse_type;
112: #define DSE_INTR_ABANDON_FAILED -5 /* Call interrupted - abandon failed */
113: #define DSE_INTR_ABANDONED -4 /* Call interrupted - abandoned */
114: #define DSE_INTRERROR -3 /* Call interrupted */
115: #define DSE_LOCALERROR -2 /* Error in DUA */
116: #define DSE_REMOTEERROR -1 /* Problem with DSA */
117: #define DSE_NOERROR 0
118: #define DSE_ATTRIBUTEERROR 1
119: #define DSE_NAMEERROR 2
120: #define DSE_SERVICEERROR 3
121: #define DSE_REFERRAL 4
122: #define DSE_ABANDONED 5
123: /* Abandoned does not have any parameter and */
124: /* so there is no struct for this value */
125: #define DSE_SECURITYERROR 6
126: #define DSE_ABANDON_FAILED 7
127: #define DSE_UPDATEERROR 8
128: #define DSE_DSAREFERRAL 9
129: #define ds_recog_err(a) ((a >= DSE_ATTRIBUTEERROR) && (a <= DSE_DSAREFERRAL))
130: union {
131: struct DSE_attribute dse_un_attribute;
132: struct DSE_name dse_un_name;
133: struct DSE_service dse_un_service;
134: struct DSE_referral dse_un_referral;
135: struct DSE_security dse_un_security;
136: struct DSE_abandon_fail dse_un_abandon_fail;
137: struct DSE_update dse_un_update;
138: } dse_un;
139: };
140:
141:
142:
143: /* THIS SECTION DEFINES THE PROCEDURE CALLS */
144:
145: /* All of the DUA calls are SYNCHRONOUS, with no access to referrals */
146: /* A DUA can access lower level hooks if if needs to be more clever */
147: /* Each call has a single structure fore each direction, as defined */
148:
149: /*
150: All routines return integer values with the following
151: possible values
152: */
153:
154: #define DS_OK 0 /* Success */
155: #define DS_ERROR_LOCAL -1 /* Error within the DUA module */
156:
157: #define DS_ERROR_CONNECT -2 /* Failed to connect to a remote DSA */
158: #define DS_ERROR_PROVIDER -3 /* Other OSI provider error */
159: #define DS_X500_ERROR -4 /* Synonym for remote error */
160: #define DS_ERROR_REMOTE -4 /* Remote error. Further details will */
161: /* be in the error parameter */
162:
163: #define DS_CONTINUE -5 /* operation not finished... continuing */
164: #define DS_SUSPEND -6 /* operation has deliberately suspended */
165: #define DS_ERROR_ABANDONED -7 /* RoIntr caused succesful ds_abandon */
166: #define DS_ERROR_ABANDON_FAILED -8 /* RoIntr caused unsuccesful ds_abandon */
167:
168: #define ERR_ABANDON_FAIL dse_un.dse_un_abandon_fail
169: #define ERR_ATTRIBUTE dse_un.dse_un_attribute
170: #define ERR_NAME dse_un.dse_un_name
171: #define ERR_REFERRAL dse_un.dse_un_referral
172: #define ERR_SECURITY dse_un.dse_un_security
173: #define ERR_SERVICE dse_un.dse_un_service
174: #define ERR_UPDATE dse_un.dse_un_update
175: #define ERR_ALIAS dse_un.dse_un_alias
176:
177: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.