[SCM] Samba Shared Repository - branch master updated

Amitay Isaacs amitay at samba.org
Thu Sep 4 06:38:03 MDT 2014


The branch, master has been updated
       via  0b4a3b7 s4-rpc: dnsserver: return DNS_RANK_NS_GLUE recors when explicitly asked for
       via  2c342e4 s4-rpc: dnsserver: handle updates of tombstoned dnsNode objects
       via  6f2862e s4-rpc: dnsserver: Do not search for deleted DNS entries
      from  7f976f4 s3: smbd: vfs_dirsort module.

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


- Log -----------------------------------------------------------------
commit 0b4a3b76111411e8969932a3da4ffab989e0da4c
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Sep 4 09:40:34 2014 +0200

    s4-rpc: dnsserver: return DNS_RANK_NS_GLUE recors when explicitly asked for
    
    NS records should be included in the query for sub-domains.  NS records
    got dropped when the rank for NS records was correctly set to NS_GLUE
    from ZONE in commit 2036cbd9249c84d9b46370f0e8cd6a0264c737ba.
    
      samba-tool dns query 172.31.9.161 s4xdom.base @ ALL
      =>
      Name=glue, Records=0, Children=0
    
      samba-tool dns query 172.31.9.161 s4xdom.base glue ALL
      =>
        Name=, Records=1, Children=0
          NS: glue.dns.private. (flags=40000082, serial=21, ttl=900)
    
    Bug: https://bugzilla.samba.org/show_bug.cgi?id=10751
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Amitay Isaacs <amitay at gmail.com>
    
    Autobuild-User(master): Amitay Isaacs <amitay at samba.org>
    Autobuild-Date(master): Thu Sep  4 14:37:51 CEST 2014 on sn-devel-104

commit 2c342e488dcd3cef465a1b376bb22bf495f6832b
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Sep 4 07:19:46 2014 +0200

    s4-rpc: dnsserver: handle updates of tombstoned dnsNode objects
    
    Bug: https://bugzilla.samba.org/show_bug.cgi?id=10749
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Amitay Isaacs <amitay at gmail.com>

commit 6f2862e76608862bb4142a86f36c8506114bf6c7
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Thu Jul 31 17:24:52 2014 +1000

    s4-rpc: dnsserver: Do not search for deleted DNS entries
    
    Bug: https://bugzilla.samba.org/show_bug.cgi?id=10749
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

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

Summary of changes:
 source4/rpc_server/dnsserver/dcerpc_dnsserver.c |   18 +++++++++++-------
 source4/rpc_server/dnsserver/dnsdata.c          |    9 +++++++++
 source4/rpc_server/dnsserver/dnsdb.c            |   17 +++++++++++++++--
 3 files changed, 35 insertions(+), 9 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/rpc_server/dnsserver/dcerpc_dnsserver.c b/source4/rpc_server/dnsserver/dcerpc_dnsserver.c
index 856016c..5162ab0 100644
--- a/source4/rpc_server/dnsserver/dcerpc_dnsserver.c
+++ b/source4/rpc_server/dnsserver/dcerpc_dnsserver.c
@@ -1631,7 +1631,8 @@ static WERROR dnsserver_enumerate_root_records(struct dnsserver_state *dsstate,
 	}
 
 	ret = ldb_search(dsstate->samdb, tmp_ctx, &res, z->zone_dn,
-				LDB_SCOPE_ONELEVEL, attrs, "(&(objectClass=dnsNode)(name=@))");
+			 LDB_SCOPE_ONELEVEL, attrs,
+			 "(&(objectClass=dnsNode)(name=@)(!(dNSTombstoned=TRUE)))");
 	if (ret != LDB_SUCCESS) {
 		talloc_free(tmp_ctx);
 		return WERR_INTERNAL_DB_ERROR;
@@ -1663,8 +1664,9 @@ static WERROR dnsserver_enumerate_root_records(struct dnsserver_state *dsstate,
 	if (select_flag & DNS_RPC_VIEW_ADDITIONAL_DATA) {
 		for (i=0; i<add_count; i++) {
 			ret = ldb_search(dsstate->samdb, tmp_ctx, &res, z->zone_dn,
-					LDB_SCOPE_ONELEVEL, attrs,
-					"(&(objectClass=dnsNode)(name=%s))", add_names[i]);
+					 LDB_SCOPE_ONELEVEL, attrs,
+					 "(&(objectClass=dnsNode)(name=%s)(!(dNSTombstoned=TRUE)))",
+					add_names[i]);
 			if (ret != LDB_SUCCESS || res->count == 0) {
 				talloc_free(res);
 				continue;
@@ -1728,11 +1730,12 @@ static WERROR dnsserver_enumerate_records(struct dnsserver_state *dsstate,
 	/* search all records under parent tree */
 	if (strcasecmp(name, z->name) == 0) {
 		ret = ldb_search(dsstate->samdb, tmp_ctx, &res, z->zone_dn,
-				LDB_SCOPE_ONELEVEL, attrs, "(objectClass=dnsNode)");
+				 LDB_SCOPE_ONELEVEL, attrs,
+				 "(&(objectClass=dnsNode)(!(dNSTombstoned=TRUE)))");
 	} else {
 		ret = ldb_search(dsstate->samdb, tmp_ctx, &res, z->zone_dn,
-				LDB_SCOPE_ONELEVEL, attrs,
-				"(&(objectClass=dnsNode)(|(name=%s)(name=*.%s)))",
+				 LDB_SCOPE_ONELEVEL, attrs,
+				 "(&(objectClass=dnsNode)(|(name=%s)(name=*.%s))(!(dNSTombstoned=TRUE)))",
 				name, name);
 	}
 	if (ret != LDB_SUCCESS) {
@@ -1807,7 +1810,8 @@ static WERROR dnsserver_enumerate_records(struct dnsserver_state *dsstate,
 				name = dns_split_node_name(tmp_ctx, add_names[i], z2->name);
 				ret = ldb_search(dsstate->samdb, tmp_ctx, &res, z2->zone_dn,
 						LDB_SCOPE_ONELEVEL, attrs,
-						"(&(objectClass=dnsNode)(name=%s))", name);
+						"(&(objectClass=dnsNode)(name=%s)(!(dNSTombstoned=TRUE)))",
+						name);
 				talloc_free(name);
 				if (ret != LDB_SUCCESS) {
 					continue;
diff --git a/source4/rpc_server/dnsserver/dnsdata.c b/source4/rpc_server/dnsserver/dnsdata.c
index 4866006..f752490 100644
--- a/source4/rpc_server/dnsserver/dnsdata.c
+++ b/source4/rpc_server/dnsserver/dnsdata.c
@@ -798,6 +798,15 @@ WERROR dns_fill_records_array(TALLOC_CTX *mem_ctx,
 			if (select_flag & DNS_RPC_VIEW_AUTHORITY_DATA) {
 				if (dnsp_rec.rank == DNS_RANK_ZONE) {
 					found = true;
+				} else if (dnsp_rec.rank == DNS_RANK_NS_GLUE) {
+					/*
+					 * If branch_name is NULL, we're
+					 * explicitly asked to also return
+					 * DNS_RANK_NS_GLUE records
+					 */
+					if (branch_name == NULL) {
+						found = true;
+					}
 				}
 			}
 			if (select_flag & DNS_RPC_VIEW_CACHE_DATA) {
diff --git a/source4/rpc_server/dnsserver/dnsdb.c b/source4/rpc_server/dnsserver/dnsdb.c
index 24e9e89..e567f5a 100644
--- a/source4/rpc_server/dnsserver/dnsdb.c
+++ b/source4/rpc_server/dnsserver/dnsdb.c
@@ -395,7 +395,7 @@ WERROR dnsserver_db_add_record(TALLOC_CTX *mem_ctx,
 					const char *name,
 					struct DNS_RPC_RECORD *add_record)
 {
-	const char * const attrs[] = { "dnsRecord", NULL };
+	const char * const attrs[] = { "dnsRecord", "dNSTombstoned", NULL };
 	struct ldb_result *res;
 	struct dnsp_DnssrvRpcRecord *rec;
 	struct ldb_message_element *el;
@@ -404,6 +404,7 @@ WERROR dnsserver_db_add_record(TALLOC_CTX *mem_ctx,
 	NTTIME t;
 	int ret, i;
 	int serial;
+	bool was_tombstoned = false;
 
 	rec = dns_to_dnsp_copy(mem_ctx, add_record);
 	W_ERROR_HAVE_NO_MEMORY(rec);
@@ -452,6 +453,12 @@ WERROR dnsserver_db_add_record(TALLOC_CTX *mem_ctx,
 		}
 	}
 
+	was_tombstoned = ldb_msg_find_attr_as_bool(res->msgs[0],
+						   "dNSTombstoned", false);
+	if (was_tombstoned) {
+		el->num_values = 0;
+	}
+
 	for (i=0; i<el->num_values; i++) {
 		struct dnsp_DnssrvRpcRecord rec2;
 
@@ -482,6 +489,12 @@ WERROR dnsserver_db_add_record(TALLOC_CTX *mem_ctx,
 	}
 
 	el->flags = LDB_FLAG_MOD_REPLACE;
+
+	el = ldb_msg_find_element(res->msgs[0], "dNSTombstoned");
+	if (el != NULL) {
+		el->flags = LDB_FLAG_MOD_DELETE;
+	}
+
 	ret = ldb_modify(samdb, res->msgs[0]);
 	if (ret != LDB_SUCCESS) {
 		return WERR_INTERNAL_DB_ERROR;
@@ -520,7 +533,7 @@ WERROR dnsserver_db_update_record(TALLOC_CTX *mem_ctx,
 	arec->dwTimeStamp = t;
 
 	ret = ldb_search(samdb, mem_ctx, &res, z->zone_dn, LDB_SCOPE_ONELEVEL, attrs,
-			"(&(objectClass=dnsNode)(name=%s))", name);
+			"(&(objectClass=dnsNode)(name=%s)(!(dNSTombstoned=TRUE)))", name);
 	if (ret != LDB_SUCCESS) {
 		return WERR_INTERNAL_DB_ERROR;
 	}


-- 
Samba Shared Repository


More information about the samba-cvs mailing list