From c000cad09d0b54c455c99271bfb996c2dfe13073 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Mon, 6 May 2024 03:23:53 +0200 Subject: Adding upstream version 2.4.47+dfsg. Signed-off-by: Daniel Baumann --- servers/slapd/sets.h | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 servers/slapd/sets.h (limited to 'servers/slapd/sets.h') diff --git a/servers/slapd/sets.h b/servers/slapd/sets.h new file mode 100644 index 0000000..050dcb6 --- /dev/null +++ b/servers/slapd/sets.h @@ -0,0 +1,75 @@ +/* $OpenLDAP$ */ +/* This work is part of OpenLDAP Software . + * + * Copyright 1998-2018 The OpenLDAP Foundation. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted only as authorized by the OpenLDAP + * Public License. + * + * A copy of this license is available in the file LICENSE in the + * top-level directory of the distribution or, alternatively, at + * . + */ + +#ifndef SLAP_SETS_H_ +#define SLAP_SETS_H_ + +#include + +LDAP_BEGIN_DECL + +typedef struct slap_set_cookie { + Operation *set_op; +} SetCookie; + +/* this routine needs to return the bervals instead of + * plain strings, since syntax is not known. It should + * also return the syntax or some "comparison cookie" + * that is used by set_filter. + */ +typedef BerVarray (SLAP_SET_GATHER)( SetCookie *cookie, + struct berval *name, AttributeDescription *ad); + +LDAP_SLAPD_F (int) slap_set_filter( + SLAP_SET_GATHER gatherer, + SetCookie *cookie, struct berval *filter, + struct berval *user, struct berval *target, BerVarray *results); + +LDAP_SLAPD_F (BerVarray) slap_set_join(SetCookie *cp, + BerVarray lset, unsigned op, BerVarray rset); + +#define SLAP_SET_OPMASK 0x00FF + +#define SLAP_SET_REFARR 0x0100 +#define SLAP_SET_REFVAL 0x0200 +#define SLAP_SET_REF (SLAP_SET_REFARR|SLAP_SET_REFVAL) + +/* The unsigned "op" can be ORed with the flags below; + * - if the rset's values must not be freed, or must be copied if kept, + * it is ORed with SLAP_SET_RREFVAL + * - if the rset array must not be freed, or must be copied if kept, + * it is ORed with SLAP_SET_RREFARR + * - the same applies to the lset with SLAP_SET_LREFVAL and SLAP_SET_LREFARR + * - it is assumed that SLAP_SET_REFVAL implies SLAP_SET_REFARR, + * i.e. the former is checked only if the latter is set. + */ + +#define SLAP_SET_RREFARR SLAP_SET_REFARR +#define SLAP_SET_RREFVAL SLAP_SET_REFVAL +#define SLAP_SET_RREF SLAP_SET_REF +#define SLAP_SET_RREFMASK 0x0F00 + +#define SLAP_SET_RREF2REF(r) ((r) & SLAP_SET_RREFMASK) + +#define SLAP_SET_LREFARR 0x1000 +#define SLAP_SET_LREFVAL 0x2000 +#define SLAP_SET_LREF (SLAP_SET_LREFARR|SLAP_SET_LREFVAL) +#define SLAP_SET_LREFMASK 0xF000 + +#define SLAP_SET_LREF2REF(r) (((r) & SLAP_SET_LREFMASK) >> 4) + +LDAP_END_DECL + +#endif -- cgit v1.2.3