]> git.sur5r.net Git - openldap/blob - servers/slapd/back-monitor/entry.c
Experiment with busy loop protection...
[openldap] / servers / slapd / back-monitor / entry.c
1 /* entry.c - monitor backend entry handling routines */
2 /*
3  * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved.
4  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
5  */
6 /*
7  * Copyright 2001 The OpenLDAP Foundation, All Rights Reserved.
8  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
9  * 
10  * Copyright 2001, Pierangelo Masarati, All rights reserved. <ando@sys-net.it>
11  * 
12  * This work has beed deveolped for the OpenLDAP Foundation 
13  * in the hope that it may be useful to the Open Source community, 
14  * but WITHOUT ANY WARRANTY.
15  * 
16  * Permission is granted to anyone to use this software for any purpose
17  * on any computer system, and to alter it and redistribute it, subject
18  * to the following restrictions:
19  * 
20  * 1. The author and SysNet s.n.c. are not responsible for the consequences
21  *    of use of this software, no matter how awful, even if they arise from
22  *    flaws in it.
23  * 
24  * 2. The origin of this software must not be misrepresented, either by
25  *    explicit claim or by omission.  Since few users ever read sources,
26  *    credits should appear in the documentation.
27  * 
28  * 3. Altered versions must be plainly marked as such, and must not be
29  *    misrepresented as being the original software.  Since few users
30  *    ever read sources, credits should appear in the documentation.
31  *    SysNet s.n.c. cannot be responsible for the consequences of the
32  *    alterations.
33  * 
34  * 4. This notice may not be removed or altered.
35  */
36
37 #include "portable.h"
38
39 #include <slap.h>
40 #include "back-monitor.h"
41
42 int
43 monitor_entry_update(
44         struct monitorinfo      *mi, 
45         Entry                   *e
46 )
47 {
48         struct monitorentrypriv *mp;
49
50         assert( mi != NULL );
51         assert( e != NULL );
52         assert( e->e_private != NULL );
53
54         mp = ( struct monitorentrypriv * )e->e_private;
55
56
57         if ( mp->mp_info && mp->mp_info->mss_update ) {
58                 return ( *mp->mp_info->mss_update )( mi, e );
59         }
60
61         return( 0 );
62 }
63
64 int
65 monitor_entry_create(
66         struct monitorinfo      *mi,
67         const char              *ndn,
68         Entry                   *e_parent,
69         Entry                   **ep
70 )
71 {
72         struct monitorentrypriv *mp;
73
74         assert( mi != NULL );
75         assert( e_parent != NULL );
76         assert( e_parent->e_private != NULL );
77         assert( ep != NULL );
78
79         mp = ( struct monitorentrypriv * )e_parent->e_private;
80
81         if ( mp->mp_info && mp->mp_info->mss_create ) {
82                 return ( *mp->mp_info->mss_create )( mi, ndn, e_parent, ep );
83         }
84         
85         return( 0 );
86 }
87
88 int
89 monitor_entry_test_flags(
90         struct monitorentrypriv *mp,
91         int                     cond
92 )
93 {
94         assert( mp != NULL );
95
96         return( ( mp->mp_flags & cond ) || ( mp->mp_info->mss_flags & cond ) );
97 }
98