werror = dns_name2dn(dns, mem_ctx, zone->name, &zone_dn);
W_ERROR_NOT_OK_RETURN(werror);
-#if 0
- ret = dsdb_search_one(dns->samdb, mem_ctx, &msg, dn,
- LDB_SCOPE_BASE, attrs, 0, "%s", "(objectClass=dnsNode)");
- if (ret != LDB_SUCCESS) {
- return DNS_ERR(NAME_ERROR);
- }
-
- el = ldb_msg_find_element(msg, attrs[0]);
- if (el == NULL) {
- return DNS_ERR(NAME_ERROR);
- }
-
- recs = talloc_array(mem_ctx, struct dnsp_DnssrvRpcRecord, el->num_values);
- for (ri = 0; ri < el->num_values; ri++) {
- struct ldb_val *v = &el->values[ri];
- enum ndr_err_code ndr_err;
-
- ndr_err = ndr_pull_struct_blob(v, recs, &recs[ri],
- (ndr_pull_flags_fn_t)ndr_pull_dnsp_DnssrvRpcRecord);
- if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
- DEBUG(0, ("Failed to grab dnsp_DnssrvRpcRecord\n"));
- return DNS_ERR(SERVER_FAILURE);
- }
- }
-#endif
-
ret = ldb_transaction_start(dns->samdb);
if (ret != LDB_SUCCESS) {
return DNS_ERR(SERVER_FAILURE);
NDR_PRINT_DEBUG(dns_res_rec, updates[ri]);
}
-#if 0
- ans = talloc_realloc(mem_ctx, *answers, struct dns_res_rec,
- ai + el->num_values);
- NT_STATUS_HAVE_NO_MEMORY(ans);
-
- switch (question->question_type) {
- case DNS_QTYPE_CNAME:
- for (ri = 0; ri < el->num_values; ri++) {
- if (recs[ri].wType != question->question_type) {
- continue;
- }
-
- ZERO_STRUCT(ans[ai]);
- ans[ai].name = talloc_strdup(ans, question->name);
- ans[ai].rr_type = DNS_QTYPE_CNAME;
- ans[ai].rr_class = DNS_QCLASS_IP;
- ans[ai].ttl = recs[ri].dwTtlSeconds;
- ans[ai].rdata.cname_record = talloc_strdup(ans, recs[ri].data.cname);
- ai++;
- }
- break;
- case DNS_QTYPE_A:
- for (ri = 0; ri < el->num_values; ri++) {
- if (recs[ri].wType != question->question_type) {
- continue;
- }
-
- /* TODO: if the record actually is a DNS_QTYPE_A */
-
- ZERO_STRUCT(ans[ai]);
- ans[ai].name = talloc_strdup(ans, question->name);
- ans[ai].rr_type = DNS_QTYPE_A;
- ans[ai].rr_class = DNS_QCLASS_IP;
- ans[ai].ttl = recs[ri].dwTtlSeconds;
- ans[ai].rdata.ipv4_record = talloc_strdup(ans, recs[ri].data.ipv4);
- ai++;
- }
- break;
- case DNS_QTYPE_AAAA:
- for (ri = 0; ri < el->num_values; ri++) {
- if (recs[ri].wType != question->question_type) {
- continue;
- }
-
- ZERO_STRUCT(ans[ai]);
- ans[ai].name = talloc_strdup(ans, question->name);
- ans[ai].rr_type = DNS_QTYPE_AAAA;
- ans[ai].rr_class = DNS_QCLASS_IP;
- ans[ai].ttl = recs[ri].dwTtlSeconds;
- ans[ai].rdata.ipv6_record = recs[ri].data.ipv6;
- ai++;
- }
- break;
- case DNS_QTYPE_NS:
- for (ri = 0; ri < el->num_values; ri++) {
- if (recs[ri].wType != question->question_type) {
- continue;
- }
-
- ZERO_STRUCT(ans[ai]);
- ans[ai].name = question->name;
- ans[ai].rr_type = DNS_QTYPE_NS;
- ans[ai].rr_class = DNS_QCLASS_IP;
- ans[ai].ttl = recs[ri].dwTtlSeconds;
- ans[ai].rdata.ns_record = recs[ri].data.ns;
- ai++;
- }
- break;
- case DNS_QTYPE_SRV:
- for (ri = 0; ri < el->num_values; ri++) {
- if (recs[ri].wType != question->question_type) {
- continue;
- }
-
- ZERO_STRUCT(ans[ai]);
- ans[ai].name = question->name;
- ans[ai].rr_type = DNS_QTYPE_SRV;
- ans[ai].rr_class = DNS_QCLASS_IP;
- ans[ai].ttl = recs[ri].dwTtlSeconds;
- ans[ai].rdata.srv_record.priority = recs[ri].data.srv.wPriority;
- ans[ai].rdata.srv_record.weight = recs[ri].data.srv.wWeight;
- ans[ai].rdata.srv_record.port = recs[ri].data.srv.wPort;
- ans[ai].rdata.srv_record.target = recs[ri].data.srv.nameTarget;
- ai++;
- }
- break;
- case DNS_QTYPE_SOA:
- for (ri = 0; ri < el->num_values; ri++) {
- if (recs[ri].wType != question->question_type) {
- continue;
- }
-
- ZERO_STRUCT(ans[ai]);
- ans[ai].name = question->name;
- ans[ai].rr_type = DNS_QTYPE_SOA;
- ans[ai].rr_class = DNS_QCLASS_IP;
- ans[ai].ttl = recs[ri].dwTtlSeconds;
- ans[ai].rdata.soa_record.mname = recs[ri].data.soa.mname;
- ans[ai].rdata.soa_record.rname = recs[ri].data.soa.rname;
- ans[ai].rdata.soa_record.serial = recs[ri].data.soa.serial;
- ans[ai].rdata.soa_record.refresh= recs[ri].data.soa.refresh;
- ans[ai].rdata.soa_record.retry = recs[ri].data.soa.retry;
- ans[ai].rdata.soa_record.expire = recs[ri].data.soa.expire;
- ans[ai].rdata.soa_record.minimum= recs[ri].data.soa.minimum;
- ai++;
- }
- break;
- default:
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- *ancount = ai;
- *answers = ans;
-#endif
DEBUG(0,("Bailing out cowardly\n"));
werror = DNS_ERR(SERVER_FAILURE);