From: Amitay Isaacs Date: Mon, 19 Dec 2011 01:13:46 +0000 (+1100) Subject: s4:rpc-dnsserver: Add multiple DNS records in a single operation X-Git-Tag: tevent-0.9.15~622 X-Git-Url: http://git.samba.org/?p=ddiss%2Fsamba.git;a=commitdiff_plain;h=e398bdb76bf6a85c757d3152be77d02fd0febac4 s4:rpc-dnsserver: Add multiple DNS records in a single operation This allows to add dnsNode objectclass with multiple DNS records in a single operation. Useful for creating @ record which has NS and SOA records. --- diff --git a/source4/rpc_server/dnsserver/dnsdb.c b/source4/rpc_server/dnsserver/dnsdb.c index e7bd28d3827..939365840b9 100644 --- a/source4/rpc_server/dnsserver/dnsdb.c +++ b/source4/rpc_server/dnsserver/dnsdb.c @@ -300,15 +300,18 @@ static unsigned int dnsserver_update_soa(TALLOC_CTX *mem_ctx, } +/* Add DNS record to the database */ static WERROR dnsserver_db_do_add_rec(TALLOC_CTX *mem_ctx, struct ldb_context *samdb, struct ldb_dn *dn, + int num_rec, struct dnsp_DnssrvRpcRecord *rec) { struct ldb_message *msg; struct ldb_val v; int ret; enum ndr_err_code ndr_err; + int i; msg = ldb_msg_new(mem_ctx); W_ERROR_HAVE_NO_MEMORY(msg); @@ -319,16 +322,18 @@ static WERROR dnsserver_db_do_add_rec(TALLOC_CTX *mem_ctx, return WERR_NOMEM; } - if (rec) { - ndr_err = ndr_push_struct_blob(&v, mem_ctx, rec, - (ndr_push_flags_fn_t)ndr_push_dnsp_DnssrvRpcRecord); - if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { - return WERR_GENERAL_FAILURE; - } + if (num_rec > 0 && rec) { + for (i=0; imsgs[0], "dnsRecord");