Diff for /servers/slapd/back-sock/config.c between versions 1.8 and 1.9

version 1.8, 2011/01/04 23:43:28 version 1.9, 2011/02/03 19:17:23
Line 1 Line 1
 /* config.c - sock backend configuration file routine */  /* config.c - sock backend configuration file routine */
 /* $OpenLDAP: pkg/ldap/servers/slapd/back-sock/config.c,v 1.7 2010/04/13 20:18:22 kurt Exp $ */  /* $OpenLDAP: pkg/ldap/servers/slapd/back-sock/config.c,v 1.8 2011/01/04 23:43:28 kurt Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.  /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *   *
  * Copyright 2007-2011 The OpenLDAP Foundation.   * Copyright 2007-2011 The OpenLDAP Foundation.
Line 30 Line 30
 #include "back-sock.h"  #include "back-sock.h"
   
 static ConfigDriver bs_cf_gen;  static ConfigDriver bs_cf_gen;
   static int sock_over_setup();
   
 enum {  enum {
         BS_EXT = 1          BS_EXT = 1
Line 61  static ConfigOCs bsocs[] = { Line 62  static ConfigOCs bsocs[] = {
         { NULL, 0, NULL }          { NULL, 0, NULL }
 };  };
   
   static ConfigOCs osocs[] = {
           { "( OLcfgOvOc:22.1 "
                   "NAME 'olcOvSocketConfig' "
                   "DESC 'Socket overlay configuration' "
                   "SUP olcOverlayConfig "
                   "MUST olcDbSocketPath "
                   "MAY olcDbSocketExtensions )",
                           Cft_Overlay, bscfg },
           { NULL, 0, NULL }
   };
   
 static slap_verbmasks bs_exts[] = {  static slap_verbmasks bs_exts[] = {
         { BER_BVC("binddn"), SOCK_EXT_BINDDN },          { BER_BVC("binddn"), SOCK_EXT_BINDDN },
         { BER_BVC("peername"), SOCK_EXT_PEERNAME },          { BER_BVC("peername"), SOCK_EXT_PEERNAME },
Line 71  static slap_verbmasks bs_exts[] = { Line 83  static slap_verbmasks bs_exts[] = {
 static int  static int
 bs_cf_gen( ConfigArgs *c )  bs_cf_gen( ConfigArgs *c )
 {  {
         struct sockinfo *si = c->be->be_private;          struct sockinfo *si;
         int rc;          int rc;
   
           if ( c->be && c->table == Cft_Database )
                   si = c->be->be_private;
           else if ( c->bi )
                   si = c->bi->bi_private;
           else
                   return ARG_BAD_CONF;
   
         if ( c->op == SLAP_CONFIG_EMIT ) {          if ( c->op == SLAP_CONFIG_EMIT ) {
                 switch( c->type ) {                  switch( c->type ) {
                 case BS_EXT:                  case BS_EXT:
Line 106  bs_cf_gen( ConfigArgs *c ) Line 125  bs_cf_gen( ConfigArgs *c )
 int  int
 sock_back_init_cf( BackendInfo *bi )  sock_back_init_cf( BackendInfo *bi )
 {  {
           int rc;
         bi->bi_cf_ocs = bsocs;          bi->bi_cf_ocs = bsocs;
   
         return config_register_schema( bscfg, bsocs );          rc = config_register_schema( bscfg, bsocs );
           if ( !rc )
                   rc = sock_over_setup();
           return rc;
   }
   
   /* sock overlay wrapper */
   static slap_overinst sockover;
   
   static int sock_over_db_init( Backend *be, struct config_reply_s *cr );
   static int sock_over_db_destroy( Backend *be, struct config_reply_s *cr );
   
   static BI_op_bind *sockfuncs[] = {
           sock_back_bind,
           sock_back_unbind,
           sock_back_search,
           sock_back_compare,
           sock_back_modify,
           sock_back_modrdn,
           sock_back_add,
           sock_back_delete
   };
   
   static int sock_over_op(
           Operation *op,
           SlapReply *rs
   )
   {
           slap_overinst *on = (slap_overinst *)op->o_bd->bd_info;
           void *private = op->o_bd->be_private;
           slap_operation_t which;
           int rc;
   
           switch (op->o_tag) {
           case LDAP_REQ_BIND:     which = op_bind; break;
           case LDAP_REQ_UNBIND:   which = op_unbind; break;
           case LDAP_REQ_SEARCH:   which = op_search; break;
           case LDAP_REQ_COMPARE:  which = op_compare; break;
           case LDAP_REQ_MODIFY:   which = op_modify; break;
           case LDAP_REQ_MODRDN:   which = op_modrdn; break;
           case LDAP_REQ_ADD:      which = op_add; break;
           case LDAP_REQ_DELETE:   which = op_delete; break;
           default:
                   return SLAP_CB_CONTINUE;
           }
           op->o_bd->be_private = on->on_bi.bi_private;
           rc = sockfuncs[which]( op, rs );
           op->o_bd->be_private = private;
           return rc;
   }
   
   static int
   sock_over_setup()
   {
           int rc;
   
           sockover.on_bi.bi_type = "sock";
           sockover.on_bi.bi_db_init = sock_over_db_init;
           sockover.on_bi.bi_db_destroy = sock_over_db_destroy;
   
           sockover.on_bi.bi_op_bind = sock_over_op;
           sockover.on_bi.bi_op_unbind = sock_over_op;
           sockover.on_bi.bi_op_search = sock_over_op;
           sockover.on_bi.bi_op_compare = sock_over_op;
           sockover.on_bi.bi_op_modify = sock_over_op;
           sockover.on_bi.bi_op_modrdn = sock_over_op;
           sockover.on_bi.bi_op_add = sock_over_op;
           sockover.on_bi.bi_op_delete = sock_over_op;
   
           sockover.on_bi.bi_cf_ocs = osocs;
   
           rc = config_register_schema( bscfg, osocs );
           if ( rc ) return rc;
   
           return overlay_register( &sockover );
   }
   
   static int
   sock_over_db_init(
       Backend     *be,
           struct config_reply_s *cr
   )
   {
           slap_overinst   *on = (slap_overinst *)be->bd_info;
           void *private = be->be_private;
           int rc;
   
           be->be_private = NULL;
           rc = sock_back_db_init( be, cr );
           on->on_bi.bi_private = be->be_private;
           be->be_private = private;
           return rc;
   }
   
   static int
   sock_over_db_destroy(
       Backend     *be,
           struct config_reply_s *cr
   )
   {
           slap_overinst   *on = (slap_overinst *)be->bd_info;
           void *private = be->be_private;
           int rc;
   
           be->be_private = on->on_bi.bi_private;
           rc = sock_back_db_destroy( be, cr );
           on->on_bi.bi_private = be->be_private;
           be->be_private = private;
           return rc;
 }  }

Removed from v.1.8  
changed lines
  Added in v.1.9


______________
© Copyright 1998-2020, OpenLDAP Foundation, info@OpenLDAP.org