[SCM] Samba Shared Repository - branch master updated - tevent-0-9-8-253-g733fa19

Andrew Tridgell tridge at samba.org
Fri Sep 11 19:29:17 MDT 2009


The branch, master has been updated
       via  733fa19bc160b3aecfa15e0475042388e853969d (commit)
       via  bbc0a56da59df8b7cd6f19f99cfaac9c3909779f (commit)
       via  5da0a7e1a1ea55554a56d08ca3d3e55825cfedaa (commit)
       via  94183eb7e617dbfead93b9342bc85ebb27d93903 (commit)
       via  0ba9a1bd3f2f0b278a86f6e244162b0efa7dd510 (commit)
       via  9014cb64fd9a1068e731d42fc0ffaf39518d1b84 (commit)
      from  97338168e8c7719d6460dc11ae489ecbb218b31d (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 733fa19bc160b3aecfa15e0475042388e853969d
Author: Andrew Tridgell <tridge at samba.org>
Date:   Sat Sep 12 11:21:21 2009 +1000

    s4-samdb: internal s4 ldb modules should be GPL not LGPL
    
    I think these modules ended up LGPL because someone based the module
    on an existing LGPL module in the core ldb, and it spread from
    there. Certainly there is no reason for the ldb modules that are not
    distributed as part of ldb to be LGPL.

commit bbc0a56da59df8b7cd6f19f99cfaac9c3909779f
Author: Andrew Tridgell <tridge at samba.org>
Date:   Sat Sep 12 11:14:29 2009 +1000

    s4-drs: fixed the cursor generation to always be filled in
    
    We were relying on the uSNChanged>=n search always finding the DN of
    the root of the partition, but this now doesn't happen very often as
    we are now restricting when we change uSNChanged. This means we need
    to always load the replUpToDateVector attribute from the NC root and
    use it to populate the cursors in the return.

commit 5da0a7e1a1ea55554a56d08ca3d3e55825cfedaa
Author: Andrew Tridgell <tridge at samba.org>
Date:   Sat Sep 12 11:12:05 2009 +1000

    s4-repl: use common functions to simplify updaterefs.c
    
    We now have dsdb_loadreps() and dsdb_savereps()

commit 94183eb7e617dbfead93b9342bc85ebb27d93903
Author: Andrew Tridgell <tridge at samba.org>
Date:   Sat Sep 12 11:10:19 2009 +1000

    s4-repl: we should only update uSNChanged when replication data changes
    
    When changing non-replicated attributes we should not update the
    uSNChanged attribute on the record, otherwise the DRS server will
    think this record needs replicating.

commit 0ba9a1bd3f2f0b278a86f6e244162b0efa7dd510
Author: Andrew Tridgell <tridge at samba.org>
Date:   Sat Sep 12 11:09:10 2009 +1000

    s4-kcc: we should only add to the repsFrom if it doesn't already exist
    
    If we already have a repsFrom for a particular DC and naming context
    then we should not overwrite it, as it contains info on what
    replication we've already done

commit 9014cb64fd9a1068e731d42fc0ffaf39518d1b84
Author: Anatoliy Atanasov <anatoliy.atanasov at postpath.com>
Date:   Thu Sep 10 12:41:48 2009 +0300

    Fix up-to-dateness vector creation.

-----------------------------------------------------------------------

Summary of changes:
 source4/dsdb/common/util.c                      |  111 +++++++++++
 source4/dsdb/kcc/kcc_periodic.c                 |  116 +++++++-----
 source4/dsdb/samdb/ldb_modules/instancetype.c   |   24 +--
 source4/dsdb/samdb/ldb_modules/objectguid.c     |   24 +--
 source4/dsdb/samdb/ldb_modules/operational.c    |   26 +--
 source4/dsdb/samdb/ldb_modules/partition.c      |    4 -
 source4/dsdb/samdb/ldb_modules/proxy.c          |   24 +--
 source4/dsdb/samdb/ldb_modules/repl_meta_data.c |   92 +++++-----
 source4/dsdb/samdb/ldb_modules/samldb.c         |    8 +-
 source4/dsdb/samdb/ldb_modules/show_deleted.c   |   24 +--
 source4/rpc_server/drsuapi/getncchanges.c       |  229 +++++++++++++++++------
 source4/rpc_server/drsuapi/updaterefs.c         |  112 +-----------
 12 files changed, 458 insertions(+), 336 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/dsdb/common/util.c b/source4/dsdb/common/util.c
index 6da02b0..b500544 100644
--- a/source4/dsdb/common/util.c
+++ b/source4/dsdb/common/util.c
@@ -36,6 +36,7 @@
 #include "libcli/ldap/ldap_ndr.h"
 #include "param/param.h"
 #include "libcli/auth/libcli_auth.h"
+#include "librpc/gen_ndr/ndr_drsblobs.h"
 
 /*
   search the sam for the specified attributes in a specific domain, filter on
@@ -2146,3 +2147,113 @@ int dsdb_find_guid_by_dn(struct ldb_context *ldb,
 	talloc_free(tmp_ctx);
 	return LDB_SUCCESS;
 }
+
+
+
+/*
+  load a repsFromTo blob list for a given partition GUID
+  attr must be "repsFrom" or "repsTo"
+ */
+WERROR dsdb_loadreps(struct ldb_context *sam_ctx, TALLOC_CTX *mem_ctx, struct ldb_dn *dn,
+		     const char *attr, struct repsFromToBlob **r, uint32_t *count)
+{
+	const char *attrs[] = { attr, NULL };
+	struct ldb_result *res = NULL;
+	TALLOC_CTX *tmp_ctx = talloc_new(mem_ctx);
+	int i;
+	struct ldb_message_element *el;
+
+	*r = NULL;
+	*count = 0;
+
+	if (ldb_search(sam_ctx, tmp_ctx, &res, dn, LDB_SCOPE_BASE, attrs, NULL) != LDB_SUCCESS ||
+	    res->count < 1) {
+		DEBUG(0,("dsdb_loadreps: failed to read partition object\n"));
+		talloc_free(tmp_ctx);
+		return WERR_DS_DRA_INTERNAL_ERROR;
+	}
+
+	el = ldb_msg_find_element(res->msgs[0], attr);
+	if (el == NULL) {
+		/* it's OK to be empty */
+		talloc_free(tmp_ctx);
+		return WERR_OK;
+	}
+
+	*count = el->num_values;
+	*r = talloc_array(mem_ctx, struct repsFromToBlob, *count);
+	if (*r == NULL) {
+		talloc_free(tmp_ctx);
+		return WERR_DS_DRA_INTERNAL_ERROR;
+	}
+
+	for (i=0; i<(*count); i++) {
+		enum ndr_err_code ndr_err;
+		ndr_err = ndr_pull_struct_blob(&el->values[i], 
+					       mem_ctx, lp_iconv_convenience(ldb_get_opaque(sam_ctx, "loadparm")),
+					       &(*r)[i], 
+					       (ndr_pull_flags_fn_t)ndr_pull_repsFromToBlob);
+		if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+			talloc_free(tmp_ctx);
+			return WERR_DS_DRA_INTERNAL_ERROR;
+		}
+	}
+
+	talloc_free(tmp_ctx);
+	
+	return WERR_OK;
+}
+
+/*
+  save the repsFromTo blob list for a given partition GUID
+  attr must be "repsFrom" or "repsTo"
+ */
+WERROR dsdb_savereps(struct ldb_context *sam_ctx, TALLOC_CTX *mem_ctx, struct ldb_dn *dn,
+		     const char *attr, struct repsFromToBlob *r, uint32_t count)
+{
+	TALLOC_CTX *tmp_ctx = talloc_new(mem_ctx);
+	struct ldb_message *msg;
+	struct ldb_message_element *el;
+	int i;
+
+	msg = ldb_msg_new(tmp_ctx);
+	msg->dn = dn;
+	if (ldb_msg_add_empty(msg, attr, LDB_FLAG_MOD_REPLACE, &el) != LDB_SUCCESS) {
+		goto failed;
+	}
+
+	el->values = talloc_array(msg, struct ldb_val, count);
+	if (!el->values) {
+		goto failed;
+	}
+
+	for (i=0; i<count; i++) {
+		struct ldb_val v;
+		enum ndr_err_code ndr_err;
+
+		ndr_err = ndr_push_struct_blob(&v, tmp_ctx, lp_iconv_convenience(ldb_get_opaque(sam_ctx, "loadparm")),
+					       &r[i], 
+					       (ndr_push_flags_fn_t)ndr_push_repsFromToBlob);
+		if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+			goto failed;
+		}
+
+		el->num_values++;
+		el->values[i] = v;
+	}
+
+	if (ldb_modify(sam_ctx, msg) != LDB_SUCCESS) {
+		DEBUG(0,("Failed to store %s - %s\n", attr, ldb_errstring(sam_ctx)));
+		goto failed;
+	}
+
+	talloc_free(tmp_ctx);
+	
+	return WERR_OK;
+
+failed:
+	talloc_free(tmp_ctx);
+	return WERR_DS_DRA_INTERNAL_ERROR;
+}
+
+
diff --git a/source4/dsdb/kcc/kcc_periodic.c b/source4/dsdb/kcc/kcc_periodic.c
index 649efd5..3af79d8 100644
--- a/source4/dsdb/kcc/kcc_periodic.c
+++ b/source4/dsdb/kcc/kcc_periodic.c
@@ -35,11 +35,71 @@
 #include "param/param.h"
 
 /*
- * add a repsFrom to all our partitions
+ * see if a repsFromToBlob is in a list
  */
+static bool reps_in_list(struct repsFromToBlob *r, struct repsFromToBlob *reps, uint32_t count)
+{
+	int i;
+	for (i=0; i<count; i++) {
+		if (strcmp(r->ctr.ctr1.other_info->dns_name, 
+			   reps[i].ctr.ctr1.other_info->dns_name) == 0 &&
+		    GUID_compare(&r->ctr.ctr1.source_dsa_obj_guid, 
+				 &reps[i].ctr.ctr1.source_dsa_obj_guid) == 0) {
+			return true;
+		}
+	}
+	return false;
+}
 
 
 /*
+ * add any missing repsFrom structures to our partitions
+ */
+static NTSTATUS kccsrv_add_repsFrom(struct kccsrv_service *s, TALLOC_CTX *mem_ctx,
+				    struct repsFromToBlob *reps, uint32_t count)
+{
+	struct kccsrv_partition *p;
+
+	/* update the repsFrom on all partitions */
+	for (p=s->partitions; p; p=p->next) {
+		struct repsFromToBlob *old_reps;
+		uint32_t old_count;
+		WERROR werr;
+		int i;
+		bool modified = false;
+
+		werr = dsdb_loadreps(s->samdb, mem_ctx, p->dn, "repsFrom", &old_reps, &old_count);
+		if (!W_ERROR_IS_OK(werr)) {
+			DEBUG(0,(__location__ ": Failed to load repsFrom from %s - %s\n", 
+				 ldb_dn_get_linearized(p->dn), ldb_errstring(s->samdb)));
+			return NT_STATUS_INTERNAL_DB_CORRUPTION;
+		}
+
+		for (i=0; i<count; i++) {
+			if (!reps_in_list(&reps[i], old_reps, old_count)) {
+				old_reps = talloc_realloc(mem_ctx, old_reps, struct repsFromToBlob, old_count+1);
+				NT_STATUS_HAVE_NO_MEMORY(old_reps);
+				old_reps[old_count] = reps[i];
+				old_count++;
+				modified = true;
+			}
+		}
+		
+		if (modified) {
+			werr = dsdb_savereps(s->samdb, mem_ctx, p->dn, "repsFrom", old_reps, old_count);
+			if (!W_ERROR_IS_OK(werr)) {
+				DEBUG(0,(__location__ ": Failed to save repsFrom to %s - %s\n", 
+					 ldb_dn_get_linearized(p->dn), ldb_errstring(s->samdb)));
+				return NT_STATUS_INTERNAL_DB_CORRUPTION;
+			}
+		}
+	}
+
+	return NT_STATUS_OK;
+
+}
+
+/*
   this is the core of our initial simple KCC
   We just add a repsFrom entry for all DCs we find that have nTDSDSA
   objects, except for ourselves
@@ -49,9 +109,8 @@ static NTSTATUS kccsrv_simple_update(struct kccsrv_service *s, TALLOC_CTX *mem_c
 	struct ldb_result *res;
 	int ret, i;
 	const char *attrs[] = { "objectGUID", "invocationID", NULL };
-	struct ldb_message *msg;
-	struct ldb_message_element *el;
-	struct kccsrv_partition *p;
+	struct repsFromToBlob *reps = NULL;
+	uint32_t count = 0;
 
 	ret = ldb_search(s->samdb, mem_ctx, &res, s->config_dn, LDB_SCOPE_SUBTREE, 
 			 attrs, "objectClass=nTDSDSA");
@@ -60,21 +119,10 @@ static NTSTATUS kccsrv_simple_update(struct kccsrv_service *s, TALLOC_CTX *mem_c
 		return NT_STATUS_INTERNAL_DB_CORRUPTION;
 	}
 
-	msg = ldb_msg_new(mem_ctx);
-	NT_STATUS_HAVE_NO_MEMORY(msg);
-
-	ret = ldb_msg_add_empty(msg, "repsFrom", LDB_FLAG_MOD_REPLACE, &el);
-	if (ret != LDB_SUCCESS) {
-		return NT_STATUS_NO_MEMORY;
-	}
-
 	for (i=0; i<res->count; i++) {
-		struct repsFromToBlob r;
 		struct repsFromTo1 *r1;
 		struct repsFromTo1OtherInfo oi;
 		struct GUID ntds_guid, invocation_id;
-		struct ldb_val v;
-		enum ndr_err_code ndr_err;
 
 		ntds_guid = samdb_result_guid(res->msgs[i], "objectGUID");
 		if (GUID_compare(&ntds_guid, &s->ntds_guid) == 0) {
@@ -84,10 +132,13 @@ static NTSTATUS kccsrv_simple_update(struct kccsrv_service *s, TALLOC_CTX *mem_c
 
 		invocation_id = samdb_result_guid(res->msgs[i], "invocationID");
 
-		ZERO_STRUCT(r);
+		reps = talloc_realloc(mem_ctx, reps, struct repsFromToBlob, count+1);
+		NT_STATUS_HAVE_NO_MEMORY(reps);
+
+		ZERO_STRUCT(reps[count]);
 		ZERO_STRUCT(oi);
-		r.version = 1;
-		r1 = &r.ctr.ctr1;
+		reps[count].version = 1;
+		r1 = &reps[count].ctr.ctr1;
 
 		oi.dns_name                  = talloc_asprintf(mem_ctx, "%s._msdcs.%s",
 							       GUID_string(mem_ctx, &ntds_guid),
@@ -100,35 +151,10 @@ static NTSTATUS kccsrv_simple_update(struct kccsrv_service *s, TALLOC_CTX *mem_c
 			DRSUAPI_DS_REPLICA_NEIGHBOUR_SYNC_ON_STARTUP | 
 			DRSUAPI_DS_REPLICA_NEIGHBOUR_DO_SCHEDULED_SYNCS;
 		memset(r1->schedule, 0x11, sizeof(r1->schedule));
-
-
-		ndr_err = ndr_push_struct_blob(&v, mem_ctx, 
-					       lp_iconv_convenience(s->task->lp_ctx),
-					       &r,
-					       (ndr_push_flags_fn_t)ndr_push_repsFromToBlob);
-		if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
-			DEBUG(0,(__location__ ": Failed tp push repsFrom blob\n"));
-			return NT_STATUS_INTERNAL_ERROR;
-		}
-
-		el->values = talloc_realloc(msg, el->values, struct ldb_val, el->num_values+1);
-		NT_STATUS_HAVE_NO_MEMORY(el->values);
-		el->values[el->num_values] = v;
-		el->num_values++;
-	}
-
-	/* replace the repsFrom on all partitions */
-	for (p=s->partitions; p; p=p->next) {
-		msg->dn = p->dn;
-		ret = ldb_modify(s->samdb, msg);
-		if (ret != LDB_SUCCESS) {
-			DEBUG(0,(__location__ ": Failed to store repsFrom for %s - %s\n",
-				 ldb_dn_get_linearized(msg->dn), ldb_errstring(s->samdb)));
-			return NT_STATUS_INTERNAL_ERROR;
-		}
+		count++;
 	}
 
-	return NT_STATUS_OK;
+	return kccsrv_add_repsFrom(s, mem_ctx, reps, count);
 }
 
 
diff --git a/source4/dsdb/samdb/ldb_modules/instancetype.c b/source4/dsdb/samdb/ldb_modules/instancetype.c
index f0d56ac..2e1f1de 100644
--- a/source4/dsdb/samdb/ldb_modules/instancetype.c
+++ b/source4/dsdb/samdb/ldb_modules/instancetype.c
@@ -6,22 +6,18 @@
    Copyright (C) Andrew Tridgell 2005
    Copyright (C) Stefan Metzmacher <metze at samba.org> 2007
 
-     ** NOTE! The following LGPL license applies to the ldb
-     ** library. This does NOT imply that all of Samba is released
-     ** under the LGPL
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
    
-   This library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 3 of the License, or (at your option) any later version.
-
-   This library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with this library; if not, see <http://www.gnu.org/licenses/>.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+   
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 /*
diff --git a/source4/dsdb/samdb/ldb_modules/objectguid.c b/source4/dsdb/samdb/ldb_modules/objectguid.c
index 46ba8eb..3d218ed 100644
--- a/source4/dsdb/samdb/ldb_modules/objectguid.c
+++ b/source4/dsdb/samdb/ldb_modules/objectguid.c
@@ -5,22 +5,18 @@
    Copyright (C) Andrew Tridgell 2005
    Copyright (C) Simo Sorce  2004-2008
 
-     ** NOTE! The following LGPL license applies to the ldb
-     ** library. This does NOT imply that all of Samba is released
-     ** under the LGPL
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
    
-   This library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 3 of the License, or (at your option) any later version.
-
-   This library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with this library; if not, see <http://www.gnu.org/licenses/>.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+   
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 /*
diff --git a/source4/dsdb/samdb/ldb_modules/operational.c b/source4/dsdb/samdb/ldb_modules/operational.c
index 7e3aec4..cd2a6bc 100644
--- a/source4/dsdb/samdb/ldb_modules/operational.c
+++ b/source4/dsdb/samdb/ldb_modules/operational.c
@@ -5,22 +5,18 @@
    Copyright (C) Simo Sorce 2006-2008
    Copyright (C) Matthias Dieter Wallnöfer 2009
 
-     ** NOTE! The following LGPL license applies to the ldb
-     ** library. This does NOT imply that all of Samba is released
-     ** under the LGPL
-
-   This library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 3 of the License, or (at your option) any later version.
-
-   This library is distributed in the hope that it will be useful,
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+   
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with this library; if not, see <http://www.gnu.org/licenses/>.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+   
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 /*
diff --git a/source4/dsdb/samdb/ldb_modules/partition.c b/source4/dsdb/samdb/ldb_modules/partition.c
index e8b55a4..dec905e 100644
--- a/source4/dsdb/samdb/ldb_modules/partition.c
+++ b/source4/dsdb/samdb/ldb_modules/partition.c
@@ -4,10 +4,6 @@
    Copyright (C) Andrew Bartlett <abartlet at samba.org> 2006
    Copyright (C) Stefan Metzmacher <metze at samba.org> 2007
 
-   * NOTICE: this module is NOT released under the GNU LGPL license as
-   * other ldb code. This module is release under the GNU GPL v3 or
-   * later license.
-
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 3 of the License, or
diff --git a/source4/dsdb/samdb/ldb_modules/proxy.c b/source4/dsdb/samdb/ldb_modules/proxy.c
index 72b47c3..87b1a6e 100644
--- a/source4/dsdb/samdb/ldb_modules/proxy.c
+++ b/source4/dsdb/samdb/ldb_modules/proxy.c
@@ -3,22 +3,18 @@
 
    Copyright (C) Andrew Tridgell 2005
 
-     ** NOTE! The following LGPL license applies to the ldb
-     ** library. This does NOT imply that all of Samba is released
-     ** under the LGPL
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
    
-   This library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 3 of the License, or (at your option) any later version.
-
-   This library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with this library; if not, see <http://www.gnu.org/licenses/>.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+   
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 /*
diff --git a/source4/dsdb/samdb/ldb_modules/repl_meta_data.c b/source4/dsdb/samdb/ldb_modules/repl_meta_data.c
index b9de04a..621f830 100644
--- a/source4/dsdb/samdb/ldb_modules/repl_meta_data.c
+++ b/source4/dsdb/samdb/ldb_modules/repl_meta_data.c
@@ -6,22 +6,18 @@
    Copyright (C) Andrew Tridgell 2005
    Copyright (C) Stefan Metzmacher <metze at samba.org> 2007
 
-     ** NOTE! The following LGPL license applies to the ldb
-     ** library. This does NOT imply that all of Samba is released
-     ** under the LGPL
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
    
-   This library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 3 of the License, or (at your option) any later version.
-
-   This library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with this library; if not, see <http://www.gnu.org/licenses/>.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+   
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 /*
@@ -280,7 +276,7 @@ static int replmd_add(struct ldb_module *module, struct ldb_request *req)
 	schema = dsdb_get_schema(ldb);
 	if (!schema) {
 		ldb_debug_set(ldb, LDB_DEBUG_FATAL,
-			      "replmd_modify: no dsdb_schema loaded");
+			      "replmd_add: no dsdb_schema loaded");
 		return LDB_ERR_CONSTRAINT_VIOLATION;


-- 
Samba Shared Repository


More information about the samba-cvs mailing list