X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fback-bdb%2Fconfig.c;h=1f75f0f4e6901e1e6bec8832501c9c00728bf67e;hb=d3aae2dc427d1fd1bef8d236cde39524cbc35396;hp=5c7c1bac2072a9c108d8f6b043116c282bde8651;hpb=81ed60c0564873fa032cb475024cf25f251d1e2f;p=openldap diff --git a/servers/slapd/back-bdb/config.c b/servers/slapd/back-bdb/config.c index 5c7c1bac20..1f75f0f4e6 100644 --- a/servers/slapd/back-bdb/config.c +++ b/servers/slapd/back-bdb/config.c @@ -2,7 +2,7 @@ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 2000-2008 The OpenLDAP Foundation. + * Copyright 2000-2009 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -51,7 +51,8 @@ enum { BDB_LOCKD, BDB_SSTACK, BDB_MODE, - BDB_PGSIZE + BDB_PGSIZE, + BDB_CHECKSUM }; static ConfigTable bdbcfg[] = { @@ -74,6 +75,10 @@ static ConfigTable bdbcfg[] = { bdb_cf_gen, "( OLcfgDbAt:1.2 NAME 'olcDbCheckpoint' " "DESC 'Database checkpoint interval in kbytes and minutes' " "SYNTAX OMsDirectoryString SINGLE-VALUE )",NULL, NULL }, + { "checksum", NULL, 1, 2, 0, ARG_ON_OFF|ARG_MAGIC|BDB_CHECKSUM, + bdb_cf_gen, "( OLcfgDbAt:1.16 NAME 'olcDbChecksum' " + "DESC 'Enable database checksum validation' " + "SYNTAX OMsBoolean SINGLE-VALUE )", NULL, NULL }, { "cryptfile", "file", 2, 2, 0, ARG_STRING|ARG_MAGIC|BDB_CRYPTFILE, bdb_cf_gen, "( OLcfgDbAt:1.13 NAME 'olcDbCryptFile' " "DESC 'Pathname of file containing the DB encryption key' " @@ -467,6 +472,11 @@ bdb_cf_gen( ConfigArgs *c ) c->value_int = 1; break; + case BDB_CHECKSUM: + if ( bdb->bi_flags & BDB_CHKSUM ) + c->value_int = 1; + break; + case BDB_INDEX: bdb_attr_index_unparse( bdb, &c->rvalue_vals ); if ( !c->rvalue_vals ) rc = 1; @@ -577,6 +587,9 @@ bdb_cf_gen( ConfigArgs *c ) case BDB_NOSYNC: bdb->bi_dbenv->set_flags( bdb->bi_dbenv, DB_TXN_NOSYNC, 0 ); break; + case BDB_CHECKSUM: + bdb->bi_flags &= ~BDB_CHKSUM; + break; case BDB_INDEX: if ( c->valx == -1 ) { int i; @@ -839,6 +852,13 @@ bdb_cf_gen( ConfigArgs *c ) } break; + case BDB_CHECKSUM: + if ( c->value_int ) + bdb->bi_flags |= BDB_CHKSUM; + else + bdb->bi_flags &= ~BDB_CHKSUM; + break; + case BDB_INDEX: rc = bdb_attr_index_config( bdb, c->fname, c->lineno, c->argc - 1, &c->argv[1], &c->reply);