[SCM] Samba Shared Repository - branch master updated
Kai Blin
kai at samba.org
Tue Sep 27 19:38:02 MDT 2011
The branch, master has been updated
via 1210b8a dns: Do as BIND and MS DNS and drop quries with qdcount != 1
via f98ebcf dns: The QCLASS is called IN, not IP
via da0cae0 s3 net: Fix a discard const warning
via df88e66 errormap: Add unix_to_werror() function
from e8ed54d s3:libsmb: remove unused TALLOC_FREE(subreq) calls in
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 1210b8abe73f39f85f363cbbfa2a990e2ccd4517
Author: Kai Blin <kai at samba.org>
Date: Mon Sep 26 22:31:46 2011 -0700
dns: Do as BIND and MS DNS and drop quries with qdcount != 1
Autobuild-User: Kai Blin <kai at samba.org>
Autobuild-Date: Wed Sep 28 03:37:22 CEST 2011 on sn-devel-104
commit f98ebcf43f9b77266ef900a12b019f62d107096a
Author: Kai Blin <kai at samba.org>
Date: Mon Sep 26 23:37:06 2011 -0700
dns: The QCLASS is called IN, not IP
commit da0cae010a4a4050bb1d740a3df68776cc3c7b0e
Author: Kai Blin <kai at samba.org>
Date: Sun Sep 25 13:24:50 2011 -0700
s3 net: Fix a discard const warning
commit df88e66250375fec2d0991bf379f4fe6f2550a7c
Author: Kai Blin <kai at samba.org>
Date: Wed Jan 26 22:17:43 2011 +0100
errormap: Add unix_to_werror() function
While this function technically is closest to the
map_nt_status_from_unix() function, I think it is better to keep the new
function in line with our usual fooerror_to_barerror() naming scheme.
Signed-off-by: Kai Blin <kai at samba.org>
-----------------------------------------------------------------------
Summary of changes:
libcli/util/error.h | 5 +++++
libcli/util/errormap.c | 5 +++++
librpc/idl/dns.idl | 2 +-
source3/utils/net_dns.c | 2 +-
source4/dns_server/dns_query.c | 28 +++++++++++++++++-----------
5 files changed, 29 insertions(+), 13 deletions(-)
Changeset truncated at 500 lines:
diff --git a/libcli/util/error.h b/libcli/util/error.h
index 5c4dc10..0972601 100644
--- a/libcli/util/error.h
+++ b/libcli/util/error.h
@@ -45,4 +45,9 @@ NTSTATUS map_nt_error_from_unix_common(int unix_error);
NTSTATUS nt_status_squash(NTSTATUS nt_status);
+/*****************************************************************************
+convert a Unix error to a WERROR
+ *****************************************************************************/
+WERROR unix_to_werror(int unix_error);
+
#endif /* _SAMBA_ERROR_H */
diff --git a/libcli/util/errormap.c b/libcli/util/errormap.c
index f96d83f..714e62c 100644
--- a/libcli/util/errormap.c
+++ b/libcli/util/errormap.c
@@ -1238,3 +1238,8 @@ WERROR ntstatus_to_werror(NTSTATUS error)
return W_ERROR(NT_STATUS_V(error) & 0xffff);
}
+/* Convert a Unix error code to a WERROR. */
+WERROR unix_to_werror(int unix_error)
+{
+ return ntstatus_to_werror(map_nt_error_from_unix_common(unix_error));
+}
diff --git a/librpc/idl/dns.idl b/librpc/idl/dns.idl
index 90ac47a..66390b8 100644
--- a/librpc/idl/dns.idl
+++ b/librpc/idl/dns.idl
@@ -60,7 +60,7 @@ interface dns
} dns_rcode;
typedef [public,enum16bit] enum {
- DNS_QCLASS_IP = 0x0001,
+ DNS_QCLASS_IN = 0x0001,
DNS_QCLASS_NONE = 0x00FE,
DNS_QCLASS_ANY = 0x00FF
} dns_qclass;
diff --git a/source3/utils/net_dns.c b/source3/utils/net_dns.c
index f146f29..559c14d 100644
--- a/source3/utils/net_dns.c
+++ b/source3/utils/net_dns.c
@@ -166,7 +166,7 @@ int get_my_ip_address( struct sockaddr_storage **pp_ss )
continue;
/* Don't register loopback addresses */
- if (is_loopback_addr((struct sockaddr *)nic_sa_storage)) {
+ if (is_loopback_addr((const struct sockaddr *)nic_sa_storage)) {
continue;
}
diff --git a/source4/dns_server/dns_query.c b/source4/dns_server/dns_query.c
index f730a70..2153ad9 100644
--- a/source4/dns_server/dns_query.c
+++ b/source4/dns_server/dns_query.c
@@ -86,7 +86,7 @@ static WERROR handle_question(struct dns_server *dns,
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].rr_class = DNS_QCLASS_IN;
ans[ai].ttl = recs[ri].dwTtlSeconds;
ans[ai].length = UINT16_MAX;
ans[ai].rdata.cname_record = talloc_strdup(ans, recs[ri].data.cname);
@@ -104,7 +104,7 @@ static WERROR handle_question(struct dns_server *dns,
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].rr_class = DNS_QCLASS_IN;
ans[ai].ttl = recs[ri].dwTtlSeconds;
ans[ai].length = UINT16_MAX;
ans[ai].rdata.ipv4_record = talloc_strdup(ans, recs[ri].data.ipv4);
@@ -120,7 +120,7 @@ static WERROR handle_question(struct dns_server *dns,
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].rr_class = DNS_QCLASS_IN;
ans[ai].ttl = recs[ri].dwTtlSeconds;
ans[ai].length = UINT16_MAX;
ans[ai].rdata.ipv6_record = recs[ri].data.ipv6;
@@ -136,7 +136,7 @@ static WERROR handle_question(struct dns_server *dns,
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].rr_class = DNS_QCLASS_IN;
ans[ai].ttl = recs[ri].dwTtlSeconds;
ans[ai].length = UINT16_MAX;
ans[ai].rdata.ns_record = recs[ri].data.ns;
@@ -152,7 +152,7 @@ static WERROR handle_question(struct dns_server *dns,
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].rr_class = DNS_QCLASS_IN;
ans[ai].ttl = recs[ri].dwTtlSeconds;
ans[ai].length = UINT16_MAX;
ans[ai].rdata.srv_record.priority = recs[ri].data.srv.wPriority;
@@ -171,7 +171,7 @@ static WERROR handle_question(struct dns_server *dns,
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].rr_class = DNS_QCLASS_IN;
ans[ai].ttl = recs[ri].dwTtlSeconds;
ans[ai].length = UINT16_MAX;
ans[ai].rdata.soa_record.mname = recs[ri].data.soa.mname;
@@ -206,17 +206,19 @@ WERROR dns_server_process_query(struct dns_server *dns,
struct dns_res_rec **nsrecs, uint16_t *nscount,
struct dns_res_rec **additional, uint16_t *arcount)
{
- uint16_t i, num_answers=0;
+ uint16_t num_answers=0;
struct dns_res_rec *ans=NULL;
WERROR werror;
+ if (in->qdcount != 1) {
+ return DNS_ERR(FORMAT_ERROR);
+ }
+
ans = talloc_array(mem_ctx, struct dns_res_rec, 0);
W_ERROR_HAVE_NO_MEMORY(ans);
- for (i = 0; i < in->qdcount; ++i) {
- werror = handle_question(dns, mem_ctx, &in->questions[i], &ans, &num_answers);
- W_ERROR_NOT_OK_RETURN(werror);
- }
+ werror = handle_question(dns, mem_ctx, &in->questions[0], &ans, &num_answers);
+ W_ERROR_NOT_OK_GOTO(werror, query_failed);
*answers = ans;
*ancount = num_answers;
@@ -229,4 +231,8 @@ WERROR dns_server_process_query(struct dns_server *dns,
*arcount = 0;
return WERR_OK;
+
+query_failed:
+ /*FIXME: add our SOA record to nsrecs */
+ return werror;
}
--
Samba Shared Repository
More information about the samba-cvs
mailing list