version 1.105, 2005/09/09 02:53:56
|
version 1.106, 2005/09/14 13:25:52
|
Line 1
|
Line 1
|
/* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.104 2005/09/08 00:19:05 hyc Exp $ */ |
/* $OpenLDAP: pkg/ldap/servers/slapd/overlays/syncprov.c,v 1.105 2005/09/09 02:53:56 hyc Exp $ */ |
/* syncprov.c - syncrepl provider */ |
/* syncprov.c - syncrepl provider */ |
/* This work is part of OpenLDAP Software <http://www.openldap.org/>. |
/* This work is part of OpenLDAP Software <http://www.openldap.org/>. |
* |
* |
Line 116 typedef struct syncprov_info_t {
|
Line 116 typedef struct syncprov_info_t {
|
int si_chkops; /* checkpointing info */ |
int si_chkops; /* checkpointing info */ |
int si_chktime; |
int si_chktime; |
int si_numops; /* number of ops since last checkpoint */ |
int si_numops; /* number of ops since last checkpoint */ |
|
int si_nopres; /* Skip present phase */ |
time_t si_chklast; /* time of last checkpoint */ |
time_t si_chklast; /* time of last checkpoint */ |
Avlnode *si_mods; /* entries being modified */ |
Avlnode *si_mods; /* entries being modified */ |
sessionlog *si_logs; |
sessionlog *si_logs; |
Line 1793 syncprov_op_search( Operation *op, SlapR
|
Line 1794 syncprov_op_search( Operation *op, SlapR
|
slap_overinst *on = (slap_overinst *)op->o_bd->bd_info; |
slap_overinst *on = (slap_overinst *)op->o_bd->bd_info; |
syncprov_info_t *si = (syncprov_info_t *)on->on_bi.bi_private; |
syncprov_info_t *si = (syncprov_info_t *)on->on_bi.bi_private; |
slap_callback *cb; |
slap_callback *cb; |
int gotstate = 0, nochange = 0, do_present = 1; |
int gotstate = 0, nochange = 0, do_present; |
syncops *sop = NULL; |
syncops *sop = NULL; |
searchstate *ss; |
searchstate *ss; |
sync_control *srs; |
sync_control *srs; |
Line 1807 syncprov_op_search( Operation *op, SlapR
|
Line 1808 syncprov_op_search( Operation *op, SlapR
|
return rs->sr_err; |
return rs->sr_err; |
} |
} |
|
|
|
do_present = si->si_nopres ? 0 : 1; |
|
|
srs = op->o_controls[slap_cids.sc_LDAPsync]; |
srs = op->o_controls[slap_cids.sc_LDAPsync]; |
op->o_managedsait = SLAP_CONTROL_NONCRITICAL; |
op->o_managedsait = SLAP_CONTROL_NONCRITICAL; |
|
|
Line 2017 syncprov_operational(
|
Line 2020 syncprov_operational(
|
|
|
enum { |
enum { |
SP_CHKPT = 1, |
SP_CHKPT = 1, |
SP_SESSL |
SP_SESSL, |
|
SP_NOPRES |
}; |
}; |
|
|
static ConfigDriver sp_cf_gen; |
static ConfigDriver sp_cf_gen; |
Line 2031 static ConfigTable spcfg[] = {
|
Line 2035 static ConfigTable spcfg[] = {
|
sp_cf_gen, "( OLcfgOvAt:1.2 NAME 'olcSpSessionlog' " |
sp_cf_gen, "( OLcfgOvAt:1.2 NAME 'olcSpSessionlog' " |
"DESC 'Session log size in ops' " |
"DESC 'Session log size in ops' " |
"SYNTAX OMsInteger SINGLE-VALUE )", NULL, NULL }, |
"SYNTAX OMsInteger SINGLE-VALUE )", NULL, NULL }, |
|
{ "syncprov-nopresent", NULL, 2, 2, 0, ARG_ON_OFF|ARG_MAGIC|SP_NOPRES, |
|
sp_cf_gen, "( OLcfgOvAt:1.3 NAME 'olcSpNoPresent' " |
|
"DESC 'Omit Present phase processing' " |
|
"SYNTAX OMsBoolean SINGLE-VALUE )", NULL, NULL }, |
{ NULL, NULL, 0, 0, 0, ARG_IGNORED } |
{ NULL, NULL, 0, 0, 0, ARG_IGNORED } |
}; |
}; |
|
|
Line 2039 static ConfigOCs spocs[] = {
|
Line 2047 static ConfigOCs spocs[] = {
|
"NAME 'olcSyncProvConfig' " |
"NAME 'olcSyncProvConfig' " |
"DESC 'SyncRepl Provider configuration' " |
"DESC 'SyncRepl Provider configuration' " |
"SUP olcOverlayConfig " |
"SUP olcOverlayConfig " |
"MAY ( olcSpCheckpoint $ olcSpSessionlog ) )", |
"MAY ( olcSpCheckpoint $ olcSpSessionlog $ olcSpNoPresent ) )", |
Cft_Overlay, spcfg }, |
Cft_Overlay, spcfg }, |
{ NULL, 0, NULL } |
{ NULL, 0, NULL } |
}; |
}; |
Line 2071 sp_cf_gen(ConfigArgs *c)
|
Line 2079 sp_cf_gen(ConfigArgs *c)
|
rc = 1; |
rc = 1; |
} |
} |
break; |
break; |
|
case SP_NOPRES: |
|
if ( si->si_nopres ) { |
|
c->value_int = 1; |
|
} else { |
|
rc = 1; |
|
} |
|
break; |
} |
} |
return rc; |
return rc; |
} else if ( c->op == LDAP_MOD_DELETE ) { |
} else if ( c->op == LDAP_MOD_DELETE ) { |
Line 2085 sp_cf_gen(ConfigArgs *c)
|
Line 2100 sp_cf_gen(ConfigArgs *c)
|
else |
else |
rc = LDAP_NO_SUCH_ATTRIBUTE; |
rc = LDAP_NO_SUCH_ATTRIBUTE; |
break; |
break; |
|
case SP_NOPRES: |
|
if ( si->si_nopres ) |
|
si->si_nopres = 0; |
|
else |
|
rc = LDAP_NO_SUCH_ATTRIBUTE; |
|
break; |
} |
} |
return rc; |
return rc; |
} |
} |
Line 2116 sp_cf_gen(ConfigArgs *c)
|
Line 2137 sp_cf_gen(ConfigArgs *c)
|
sl->sl_size = size; |
sl->sl_size = size; |
} |
} |
break; |
break; |
|
case SP_NOPRES: |
|
si->si_nopres = c->value_int; |
|
break; |
} |
} |
return rc; |
return rc; |
} |
} |