|
|
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.