]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/frontend.c
happy new year
[openldap] / servers / slapd / frontend.c
index 3ab670dcae0ce69c9d4e3b598580bfd4d2158ca8..1a2dd396b3dc82161ab7513484ea6e068dd1a075 100644 (file)
@@ -1,7 +1,7 @@
 /* frontend.c - routines for dealing with frontend */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1998-2005 The OpenLDAP Foundation.
+ * Copyright 1998-2007 The OpenLDAP Foundation.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
 
 #include "ldap_rq.h"
 
-#ifdef LDAP_SLAPI
-#include "slapi/slapi.h"
-#endif
-
-BackendInfo    slap_frontendInfo;
-BackendDB      slap_frontendDB;
+static BackendInfo     slap_frontendInfo;
+static BackendDB       slap_frontendDB;
 BackendDB      *frontendDB;
 
 int
@@ -69,8 +65,6 @@ frontend_init( void )
        /* FIXME: do we need this? */
        frontendDB->be_pcl_mutexp = &frontendDB->be_pcl_mutex;
        ldap_pvt_thread_mutex_init( frontendDB->be_pcl_mutexp );
-
-       LDAP_STAILQ_INIT( &frontendDB->be_syncinfo );
 #endif
 
        /* suffix */
@@ -84,11 +78,31 @@ frontend_init( void )
        /* info */
        frontendDB->bd_info = &slap_frontendInfo;
 
+       SLAP_BFLAGS(frontendDB) |= SLAP_BFLAG_FRONTEND;
+
        /* name */
        frontendDB->bd_info->bi_type = "frontend";
 
        /* known controls */
-       frontendDB->bd_info->bi_controls = slap_known_controls;
+       if ( slap_known_controls ) {
+               int     i;
+
+               frontendDB->bd_info->bi_controls = slap_known_controls;
+
+               for ( i = 0; slap_known_controls[ i ]; i++ ) {
+                       int     cid;
+
+                       if ( slap_find_control_id( slap_known_controls[ i ], &cid )
+                                       == LDAP_CONTROL_NOT_FOUND )
+                       {
+                               assert( 0 );
+                               return -1;
+                       }
+
+                       frontendDB->bd_info->bi_ctrls[ cid ] = 1;
+                       frontendDB->be_ctrls[ cid ] = 1;
+               }
+       }
 
        /* calls */
        frontendDB->bd_info->bi_op_abandon = fe_op_abandon;
@@ -100,6 +114,14 @@ frontend_init( void )
        frontendDB->bd_info->bi_op_modrdn = fe_op_modrdn;
        frontendDB->bd_info->bi_op_search = fe_op_search;
        frontendDB->bd_info->bi_extended = fe_extended;
+       frontendDB->bd_info->bi_operational = fe_aux_operational;
+#if 0
+       frontendDB->bd_info->bi_entry_get_rw = fe_entry_get_rw;
+       frontendDB->bd_info->bi_entry_release_rw = fe_entry_release_rw;
+#endif
+       frontendDB->bd_info->bi_access_allowed = fe_access_allowed;
+       frontendDB->bd_info->bi_acl_group = fe_acl_group;
+       frontendDB->bd_info->bi_acl_attribute = fe_acl_attribute;
 
 #if 0
        /* FIXME: is this too early? */