1 /* operational.c - monitor backend operational attributes function */ 2 /* $OpenLDAP: pkg/ldap/servers/slapd/back-monitor/operational.c,v 1.17.2.4 2008/02/12 00:58:15 quanah Exp $ */ 3 /* This work is part of OpenLDAP Software <http://www.openldap.org/>. 4 * 5 * Copyright 2001-2008 The OpenLDAP Foundation. 6 * Portions Copyright 2001-2003 Pierangelo Masarati. 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 file LICENSE in the 14 * top-level directory of the distribution or, alternatively, at 15 * <http://www.OpenLDAP.org/license.html>. 16 */ 17 /* ACKNOWLEDGEMENTS: 18 * This work was initially developed by Pierangelo Masarati for inclusion 19 * in OpenLDAP Software. 20 */ 21 22 #include "portable.h" 23 24 #include <stdio.h> 25 26 #include <ac/string.h> 27 #include <ac/socket.h> 28 29 #include "slap.h" 30 #include "back-monitor.h" 31 #include "proto-back-monitor.h" 32 33 /* 34 * sets the supported operational attributes (if required) 35 */ 36 37 int 38 monitor_back_operational( 39 Operation *op, 40 SlapReply *rs ) 41 { 42 Attribute **ap; 43 44 assert( rs->sr_entry != NULL ); 45 46 for ( ap = &rs->sr_operational_attrs; *ap; ap = &(*ap)->a_next ) 47 /* just count */ ; 48 49 if ( SLAP_OPATTRS( rs->sr_attr_flags ) || 50 ad_inlist( slap_schema.si_ad_hasSubordinates, rs->sr_attrs ) ) 51 { 52 int hs; 53 monitor_entry_t *mp; 54 55 mp = ( monitor_entry_t * )rs->sr_entry->e_private; 56 57 assert( mp != NULL ); 58 59 hs = MONITOR_HAS_CHILDREN( mp ); 60 *ap = slap_operational_hasSubordinate( hs ); 61 assert( *ap != NULL ); 62 ap = &(*ap)->a_next; 63 } 64 65 return LDAP_SUCCESS; 66 } 67 68