|
|
1.1 root 1: /* entry.h - */
2:
3: /*
4: * $Header: /f/osi/h/quipu/RCS/entry.h,v 7.0 89/11/23 21:56:36 mrose Rel $
5: *
6: *
7: * $Log: entry.h,v $
8: * Revision 7.0 89/11/23 21:56:36 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 QUIPUENTRY
25: #define QUIPUENTRY
26:
27: #include "quipu/attrvalue.h"
28: #include "quipu/dsp.h"
29:
30: struct acl_attr {
31: struct oid_seq *aa_types;
32: struct acl_info *aa_acl;
33: struct acl_attr *aa_next;
34: };
35:
36: #define NULLACL_ATTR ((struct acl_attr *)0)
37: #define acl_attr_alloc() (struct acl_attr *) smalloc (sizeof (struct acl_attr));
38:
39: struct acl_attr * acl_attr_cpy();
40:
41: struct acl { /* represents ACL */
42: struct acl_info *ac_child;
43: struct acl_info *ac_entry;
44: struct acl_info *ac_default;
45: struct acl_attr *ac_attributes;
46: };
47:
48: #define acl_alloc() (struct acl *) smalloc (sizeof (struct acl));
49: #define NULLACL (struct acl *)NULL
50:
51: struct acl * acl_cpy();
52: struct acl * str2acl();
53:
54: /* Entry is the structure which is used to hold the DIT in core */
55:
56: typedef struct entry {
57: /* First components refer to the entry */
58: /* itself */
59: RDN e_name;
60:
61: Attr_Sequence e_attributes; /* the attributes of the entry */
62: /* ALL attributes held, including the */
63: /* special ones */
64:
65: char e_leaf; /* TRUE if entry is leaf */
66: char e_complete; /* TRUE if all attributes present */
67:
68: u_char e_data; /* Info on data in entry */
69: #define E_DATA_MASTER 1
70: #define E_TYPE_SLAVE 2
71: #define E_TYPE_CACHE_FROM_MASTER 3
72: #define E_TYPE_CONSTRUCTOR 4
73:
74: char e_allchildrenpresent;
75: /* set TRUE or FALSE */
76:
77: /* structures referring to special */
78: /* attributes in the entry */
79:
80: struct acl *e_acl; /* The ACL for the entry */
81:
82: DN e_alias; /* if present, entry is alias */
83:
84: struct dsa_info *e_dsainfo; /* only present if entry represents DSA */
85:
86:
87: /* Second block refer to children of */
88: /* entry */
89:
90: char *e_edbversion;
91: /* only present for non leaf - non-cache */
92: /* this refers to all the child entries */
93: /* NULL if edb is not held */
94:
95: AV_Sequence e_master; /* Master DSA(s) of EDB */
96: AV_Sequence e_slave; /* Slave DSAs of EDB */
97:
98: /* Final block is the linkage of the */
99: /* structure to the tree */
100: struct entry *e_sibling; /*across the tree */
101: struct entry *e_parent;
102: struct entry *e_child;
103:
104: time_t e_age; /* time entry created (for cache use only) */
105:
106: char e_lock; /* TRUE if EDB locked -> no write to disk */
107: } entry, *Entry;
108:
109: #define NULLENTRY ((Entry)0)
110: #define entry_alloc() (Entry) calloc (1,sizeof(entry));
111: Entry getentry_block();
112: Entry directory_load();
113: int find_entry ();
114: int find_master_entry ();
115: int really_find_entry ();
116: Entry local_find_entry ();
117: Entry get_default_entry ();
118:
119: struct oid_seq {
120: OID oid_oid;
121: struct oid_seq *oid_next;
122: };
123: #define NULLOIDSEQ ((struct oid_seq*) 0)
124:
125: #define oid_seq_alloc() (struct oid_seq *) smalloc (sizeof (struct oid_seq))
126: struct oid_seq * oid_seq_cpy();
127: struct oid_seq * oid_seq_merge();
128:
129: struct tree_struct { /* represents TreeStructure */
130: objectclass *tree_object;
131: };
132: #define NULLTREE ((struct tree_struct *)0)
133: #define tree_struct_alloc() (struct tree_struct *) smalloc (sizeof (struct tree_struct))
134:
135: struct tree_struct * tree_struct_cpy ();
136: struct tree_struct * str2schema ();
137:
138: struct dn_seq {
139: DN dns_dn;
140: struct dn_seq *dns_next;
141: };
142: #define NULLDNSEQ ((struct dn_seq *) 0)
143: #define dn_seq_alloc() (struct dn_seq *) smalloc (sizeof (struct dn_seq))
144: struct dn_seq *dn_seq_cpy();
145: struct dn_seq *str2dnseq();
146:
147: struct dsa_info { /* represents DSA information */
148: /* UpdateInfoSyntax */
149: struct PSAPaddr *dsa_addr; /* type from ISODE */
150: /* might need to allow for multiple */
151: /* addresses, but not now */
152: /* also OR Address */
153: /* leave for now */
154:
155: /* List of EDBs handled */
156: /* by this dsa */
157: AV_Sequence dsa_attr;
158: char * dsa_version;
159: /* info to assess reliability of a DSA */
160: time_t dsa_last_success;
161: time_t dsa_last_attempt;
162: int dsa_failures;
163: };
164:
165: #define NULLDSA ((struct dsa_info *)0)
166:
167: #define dsa_info_alloc() (struct dsa_info *) smalloc (sizeof (struct dsa_info));
168:
169: struct edb_info { /* represent EDBInfo */
170: DN edb_name;
171: DN edb_getfrom; /* DSA I get EDBupdates from */
172: struct dn_seq *edb_sendto; /* where I send EDB updates to */
173: struct dn_seq *edb_allowed; /* Who is allowed updates */
174: };
175: #define NULLEDB ((struct edb_info *) 0)
176:
177: #define edb_info_alloc() (struct edb_info *) smalloc (sizeof (struct edb_info));
178: struct edb_info * edb_info_cpy ();
179: struct edb_info * str2update ();
180:
181: DN get_copy_dn ();
182:
183: struct getedb_arg {
184: DN ga_entry;
185: char * ga_version;
186: struct getedb_arg * get_next;
187: };
188: #define NULL_GETARG (struct getedb_arg *) NULL
189:
190: struct getedb_result {
191: char * gr_version;
192: Entry gr_edb;
193: struct getedb_result * gr_next;
194: };
195: #define NULL_GETRESULT (struct getedb_result *) NULL
196:
197:
198: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.