X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fslapi%2Fslapi_ext.c;h=90b9db447bbb014ff6c112547f3b21bcf60c5553;hb=487d3966eea565e8768b5b7b06f1dca7181d467e;hp=27f4dfbe1c315a8e31346bcc45bbb83e160c81df;hpb=35dc15ad6649d47749455d46e2bf186f035da62e;p=openldap diff --git a/servers/slapd/slapi/slapi_ext.c b/servers/slapd/slapi/slapi_ext.c index 27f4dfbe1c..90b9db447b 100644 --- a/servers/slapd/slapi/slapi_ext.c +++ b/servers/slapd/slapi/slapi_ext.c @@ -1,12 +1,26 @@ -/* - * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved. - * COPYING RESTRICTIONS APPLY, see COPYRIGHT file - */ -/* - * Portions Copyright IBM Corp. 1997,2002-2003 +/* $OpenLDAP$ */ +/* This work is part of OpenLDAP Software . + * + * Copyright 2003-2012 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, version 2.7 or later. + * Public License. + * + * A copy of this license is available in the file LICENSE in the + * top-level directory of the distribution or, alternatively, at + * . + */ +/* (C) Copyright PADL Software Pty Ltd. 2003 + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that this notice is preserved + * and that due credit is given to PADL Software Pty Ltd. This software + * is provided ``as is'' without express or implied warranty. + */ +/* ACKNOWLEDGEMENTS: + * This work was initially developed by Luke Howard for inclusion + * in OpenLDAP Software. */ #include "portable.h" @@ -15,12 +29,12 @@ #include #include #include -#include + +#ifdef LDAP_SLAPI #include #include -#ifdef LDAP_SLAPI /* * Object extensions * @@ -44,7 +58,7 @@ struct slapi_extension_block { void **extensions; }; -static int getExtensionBlock(int objecttype, void *object, struct slapi_extension_block **eblock, void **parent) +static int get_extension_block(int objecttype, void *object, struct slapi_extension_block **eblock, void **parent) { switch ((slapi_extension_t) objecttype) { case SLAPI_X_EXT_CONNECTION: @@ -52,7 +66,7 @@ static int getExtensionBlock(int objecttype, void *object, struct slapi_extensio *parent = NULL; break; case SLAPI_X_EXT_OPERATION: - *eblock = ((Operation *)object)->o_extensions; + *eblock = ((Operation *)object)->o_hdr->oh_extensions; *parent = ((Operation *)object)->o_conn; break; default: @@ -67,7 +81,7 @@ static int getExtensionBlock(int objecttype, void *object, struct slapi_extensio return 0; } -static int mapExtensionType(const char *objectname, slapi_extension_t *type) +static int map_extension_type(const char *objectname, slapi_extension_t *type) { if ( strcasecmp( objectname, SLAPI_EXT_CONNECTION ) == 0 ) { *type = SLAPI_X_EXT_CONNECTION; @@ -80,7 +94,9 @@ static int mapExtensionType(const char *objectname, slapi_extension_t *type) return 0; } -static void newExtension(struct slapi_extension_block *eblock, int objecttype, void *object, void *parent, int extensionhandle ) +static void new_extension(struct slapi_extension_block *eblock, + int objecttype, void *object, void *parent, + int extensionhandle ) { slapi_extension_constructor_fnptr constructor; @@ -99,7 +115,7 @@ static void newExtension(struct slapi_extension_block *eblock, int objecttype, v } } -static void freeExtension(struct slapi_extension_block *eblock, int objecttype, void *object, void *parent, int extensionhandle ) +static void free_extension(struct slapi_extension_block *eblock, int objecttype, void *object, void *parent, int extensionhandle ) { slapi_extension_destructor_fnptr destructor; @@ -115,15 +131,13 @@ static void freeExtension(struct slapi_extension_block *eblock, int objecttype, eblock->extensions[extensionhandle] = NULL; } } -#endif /* LDAP_SLAPI */ void *slapi_get_object_extension(int objecttype, void *object, int extensionhandle) { -#ifdef LDAP_SLAPI struct slapi_extension_block *eblock; void *parent; - if ( getExtensionBlock( objecttype, object, &eblock, &parent ) != 0 ) { + if ( get_extension_block( objecttype, object, &eblock, &parent ) != 0 ) { return NULL; } @@ -132,29 +146,24 @@ void *slapi_get_object_extension(int objecttype, void *object, int extensionhand } return NULL; -#else - return NULL; -#endif /* LDAP_SLAPI */ } void slapi_set_object_extension(int objecttype, void *object, int extensionhandle, void *extension) { -#ifdef LDAP_SLAPI struct slapi_extension_block *eblock; void *parent; - if ( getExtensionBlock( objecttype, object, &eblock, &parent ) != 0 ) { + if ( get_extension_block( objecttype, object, &eblock, &parent ) != 0 ) { return; } if ( extensionhandle < registered_extensions.extensions[objecttype].count ) { /* free the old one */ - freeExtension( eblock, objecttype, object, parent, extensionhandle ); + free_extension( eblock, objecttype, object, parent, extensionhandle ); /* constructed by caller */ eblock->extensions[extensionhandle] = extension; } -#endif /* LDAP_SLAPI */ } int slapi_register_object_extension( @@ -165,14 +174,13 @@ int slapi_register_object_extension( int *objecttype, int *extensionhandle) { -#ifdef LDAP_SLAPI int rc; slapi_extension_t type; struct slapi_registered_extension *re; ldap_pvt_thread_mutex_lock( ®istered_extensions.mutex ); - rc = mapExtensionType( objectname, &type ); + rc = map_extension_type( objectname, &type ); if ( rc != 0 ) { ldap_pvt_thread_mutex_unlock( ®istered_extensions.mutex ); return rc; @@ -213,15 +221,11 @@ int slapi_register_object_extension( ldap_pvt_thread_mutex_unlock( ®istered_extensions.mutex ); return 0; -#else - return -1; -#endif /* LDAP_SLAPI */ } -int slapi_x_create_object_extensions(int objecttype, void *object) +int slapi_int_create_object_extensions(int objecttype, void *object) { -#ifdef LDAP_SLAPI - int i, rc; + int i; struct slapi_extension_block *eblock; void **peblock; void *parent; @@ -232,7 +236,7 @@ int slapi_x_create_object_extensions(int objecttype, void *object) parent = NULL; break; case SLAPI_X_EXT_OPERATION: - peblock = &(((Operation *)object)->o_extensions); + peblock = &(((Operation *)object)->o_hdr->oh_extensions); parent = ((Operation *)object)->o_conn; break; default: @@ -257,7 +261,7 @@ int slapi_x_create_object_extensions(int objecttype, void *object) if ( registered_extensions.extensions[objecttype].count ) { eblock->extensions = (void **)slapi_ch_calloc( registered_extensions.extensions[objecttype].count, sizeof(void *) ); for ( i = 0; i < registered_extensions.extensions[objecttype].count; i++ ) { - newExtension( eblock, objecttype, object, parent, i ); + new_extension( eblock, objecttype, object, parent, i ); } } else { eblock->extensions = NULL; @@ -266,15 +270,11 @@ int slapi_x_create_object_extensions(int objecttype, void *object) *peblock = eblock; return 0; -#else - return -1; -#endif } -int slapi_x_free_object_extensions(int objecttype, void *object) +int slapi_int_free_object_extensions(int objecttype, void *object) { -#ifdef LDAP_SLAPI - int i, rc; + int i; struct slapi_extension_block *eblock; void **peblock; void *parent; @@ -285,7 +285,7 @@ int slapi_x_free_object_extensions(int objecttype, void *object) parent = NULL; break; case SLAPI_X_EXT_OPERATION: - peblock = &(((Operation *)object)->o_extensions); + peblock = &(((Operation *)object)->o_hdr->oh_extensions); parent = ((Operation *)object)->o_conn; break; default: @@ -297,7 +297,7 @@ int slapi_x_free_object_extensions(int objecttype, void *object) if ( eblock->extensions != NULL ) { for ( i = registered_extensions.extensions[objecttype].count - 1; i >= 0; --i ) { - freeExtension( eblock, objecttype, object, parent, i ); + free_extension( eblock, objecttype, object, parent, i ); } slapi_ch_free( (void **)&eblock->extensions ); @@ -306,20 +306,16 @@ int slapi_x_free_object_extensions(int objecttype, void *object) slapi_ch_free( peblock ); return 0; -#else - return -1; -#endif } /* for reusable object types */ -int slapi_x_clear_object_extensions(int objecttype, void *object) +int slapi_int_clear_object_extensions(int objecttype, void *object) { -#ifdef LDAP_SLAPI - int i, rc; + int i; struct slapi_extension_block *eblock; void *parent; - if ( getExtensionBlock( objecttype, object, &eblock, &parent ) != 0 ) { + if ( get_extension_block( objecttype, object, &eblock, &parent ) != 0 ) { return -1; } @@ -329,22 +325,18 @@ int slapi_x_clear_object_extensions(int objecttype, void *object) } for ( i = registered_extensions.extensions[objecttype].count - 1; i >= 0; --i ) { - freeExtension( eblock, objecttype, object, parent, i ); + free_extension( eblock, objecttype, object, parent, i ); } for ( i = 0; i < registered_extensions.extensions[objecttype].count; i++ ) { - newExtension( eblock, objecttype, object, parent, i ); + new_extension( eblock, objecttype, object, parent, i ); } return 0; -#else - return -1; -#endif } -int slapi_x_init_object_extensions(void) +int slapi_int_init_object_extensions(void) { -#ifdef LDAP_SLAPI memset( ®istered_extensions, 0, sizeof( registered_extensions ) ); if ( ldap_pvt_thread_mutex_init( ®istered_extensions.mutex ) != 0 ) { @@ -352,7 +344,6 @@ int slapi_x_init_object_extensions(void) } return 0; -#else - return -1; -#endif } + +#endif /* LDAP_SLAPI */