1 /* $NetBSD: sets.h,v 1.1.1.4 2010/12/12 15:22:45 adam Exp $ */ 2 3 /* OpenLDAP: pkg/ldap/servers/slapd/sets.h,v 1.21.2.6 2010/04/13 20:23:20 kurt Exp */ 4 /* This work is part of OpenLDAP Software <http://www.openldap.org/>. 5 * 6 * Copyright 1998-2010 The OpenLDAP Foundation. 7 * All rights reserved. 8 * 9 * Redistribution and use in source and binary forms, with or without 10 * modification, are permitted only as authorized by the OpenLDAP 11 * Public License. 12 * 13 * A copy of this license is available in the file LICENSE in the 14 * top-level directory of the distribution or, alternatively, at 15 * <http://www.OpenLDAP.org/license.html>. 16 */ 17 18 #ifndef SLAP_SETS_H_ 19 #define SLAP_SETS_H_ 20 21 #include <ldap_cdefs.h> 22 23 LDAP_BEGIN_DECL 24 25 typedef struct slap_set_cookie { 26 Operation *set_op; 27 } SetCookie; 28 29 /* this routine needs to return the bervals instead of 30 * plain strings, since syntax is not known. It should 31 * also return the syntax or some "comparison cookie" 32 * that is used by set_filter. 33 */ 34 typedef BerVarray (SLAP_SET_GATHER)( SetCookie *cookie, 35 struct berval *name, AttributeDescription *ad); 36 37 LDAP_SLAPD_F (int) slap_set_filter( 38 SLAP_SET_GATHER gatherer, 39 SetCookie *cookie, struct berval *filter, 40 struct berval *user, struct berval *target, BerVarray *results); 41 42 LDAP_SLAPD_F (BerVarray) slap_set_join(SetCookie *cp, 43 BerVarray lset, unsigned op, BerVarray rset); 44 45 #define SLAP_SET_OPMASK 0x00FF 46 47 #define SLAP_SET_REFARR 0x0100 48 #define SLAP_SET_REFVAL 0x0200 49 #define SLAP_SET_REF (SLAP_SET_REFARR|SLAP_SET_REFVAL) 50 51 /* The unsigned "op" can be ORed with the flags below; 52 * - if the rset's values must not be freed, or must be copied if kept, 53 * it is ORed with SLAP_SET_RREFVAL 54 * - if the rset array must not be freed, or must be copied if kept, 55 * it is ORed with SLAP_SET_RREFARR 56 * - the same applies to the lset with SLAP_SET_LREFVAL and SLAP_SET_LREFARR 57 * - it is assumed that SLAP_SET_REFVAL implies SLAP_SET_REFARR, 58 * i.e. the former is checked only if the latter is set. 59 */ 60 61 #define SLAP_SET_RREFARR SLAP_SET_REFARR 62 #define SLAP_SET_RREFVAL SLAP_SET_REFVAL 63 #define SLAP_SET_RREF SLAP_SET_REF 64 #define SLAP_SET_RREFMASK 0x0F00 65 66 #define SLAP_SET_RREF2REF(r) ((r) & SLAP_SET_RREFMASK) 67 68 #define SLAP_SET_LREFARR 0x1000 69 #define SLAP_SET_LREFVAL 0x2000 70 #define SLAP_SET_LREF (SLAP_SET_LREFARR|SLAP_SET_LREFVAL) 71 #define SLAP_SET_LREFMASK 0xF000 72 73 #define SLAP_SET_LREF2REF(r) (((r) & SLAP_SET_LREFMASK) >> 4) 74 75 LDAP_END_DECL 76 77 #endif 78