[SCM] Samba Shared Repository - branch master updated
Kai Blin
kai at samba.org
Tue May 8 07:49:02 MDT 2012
The branch, master has been updated
via f01c6cf s4 dns: unify error handling when bailing out
via 7420698 s4 dns: Add TSIG and TKEY records to idl
from e42e87d s3-docs: Fix several typos.
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit f01c6cf707087141fe244a1d90c5cdcb69322820
Author: Kai Blin <kai at samba.org>
Date: Wed Mar 28 12:19:51 2012 +0200
s4 dns: unify error handling when bailing out
Autobuild-User: Kai Blin <kai at samba.org>
Autobuild-Date: Tue May 8 15:48:25 CEST 2012 on sn-devel-104
commit 74206984daa9c707a38675df88d6bbe660d876bc
Author: Kai Blin <kai at samba.org>
Date: Tue Mar 13 08:04:14 2012 +0100
s4 dns: Add TSIG and TKEY records to idl
-----------------------------------------------------------------------
Summary of changes:
librpc/idl/dns.idl | 67 ++++++++++++++++++++++++++++++++------
source4/dns_server/dns_server.c | 23 ++++++-------
2 files changed, 67 insertions(+), 23 deletions(-)
Changeset truncated at 500 lines:
diff --git a/librpc/idl/dns.idl b/librpc/idl/dns.idl
index e012162..a92c418 100644
--- a/librpc/idl/dns.idl
+++ b/librpc/idl/dns.idl
@@ -46,17 +46,23 @@ interface dns
/* rcode values */
typedef [public] enum {
- DNS_RCODE_OK = 0x0,
- DNS_RCODE_FORMERR = 0x1,
- DNS_RCODE_SERVFAIL = 0x2,
- DNS_RCODE_NXDOMAIN = 0x3,
- DNS_RCODE_NOTIMP = 0x4,
- DNS_RCODE_REFUSED = 0x5,
- DNS_RCODE_YXDOMAIN = 0x6,
- DNS_RCODE_YXRRSET = 0x7,
- DNS_RCODE_NXRRSET = 0x8,
- DNS_RCODE_NOTAUTH = 0x9,
- DNS_RCODE_NOTZONE = 0xA
+ DNS_RCODE_OK = 0x00,
+ DNS_RCODE_FORMERR = 0x01,
+ DNS_RCODE_SERVFAIL = 0x02,
+ DNS_RCODE_NXDOMAIN = 0x03,
+ DNS_RCODE_NOTIMP = 0x04,
+ DNS_RCODE_REFUSED = 0x05,
+ DNS_RCODE_YXDOMAIN = 0x06,
+ DNS_RCODE_YXRRSET = 0x07,
+ DNS_RCODE_NXRRSET = 0x08,
+ DNS_RCODE_NOTAUTH = 0x09,
+ DNS_RCODE_NOTZONE = 0x0A,
+ DNS_RCODE_BADSIG = 0x10,
+ DNS_RCODE_BADKEY = 0x11,
+ DNS_RCODE_BADTIME = 0x12,
+ DNS_RCODE_BADMODE = 0x13,
+ DNS_RCODE_BADNAME = 0x14,
+ DNS_RCODE_BADALG = 0x15
} dns_rcode;
typedef [public,enum16bit] enum {
@@ -105,12 +111,24 @@ interface dns
DNS_QTYPE_NSEC = 0x002F,
DNS_QTYPE_DNSKEY = 0x0030,
DNS_QTYPE_DHCID = 0x0031,
+ DNS_QTYPE_TKEY = 0x00F9,
+ DNS_QTYPE_TSIG = 0x00FA,
DNS_QTYPE_AXFR = 0x00FC,
DNS_QTYPE_MAILB = 0x00FD,
DNS_QTYPE_MAILA = 0x00FE,
DNS_QTYPE_ALL = 0x00FF
} dns_qtype;
+ typedef [public,enum16bit] enum {
+ DNS_TKEY_MODE_NULL = 0x0000,
+ DNS_TKEY_MODE_SERVER = 0x0001,
+ DNS_TKEY_MODE_DH = 0x0002,
+ DNS_TKEY_MODE_GSSAPI = 0x0003,
+ DNS_TKEY_MODE_CLIENT = 0x0004,
+ DNS_TKEY_MODE_DELETE = 0x0005,
+ DNS_TKEY_MODE_LAST = 0xFFFF
+ } dns_tkey_mode;
+
typedef [public] struct {
dns_string name;
dns_qtype question_type;
@@ -149,6 +167,31 @@ interface dns
dns_string target;
} dns_srv_record;
+ typedef [public] struct {
+ dns_string algorithm;
+ uint32 inception;
+ uint32 expiration;
+ dns_tkey_mode mode;
+ uint16 error;
+ uint16 key_size;
+ uint8 key_data[key_size];
+ uint16 other_size;
+ uint8 other_data[other_size];
+ } dns_tkey_record;
+
+ typedef [public] struct {
+ dns_string algorithm_name;
+ uint16 time_prefix; /* 0 until February 2106*/
+ uint32 time;
+ uint16 fudge;
+ uint16 mac_size;
+ uint8 mac[mac_size];
+ uint16 original_id;
+ uint16 error;
+ uint16 other_size;
+ uint8 other_data[other_size];
+ } dns_tsig_record;
+
typedef [nodiscriminant,public,flag(NDR_NOALIGN)] union {
[case(DNS_QTYPE_A)] ipv4address ipv4_record;
[case(DNS_QTYPE_NS)] dns_string ns_record;
@@ -159,6 +202,8 @@ interface dns
[case(DNS_QTYPE_TXT)] dns_txt_record txt_record;
[case(DNS_QTYPE_AAAA)] ipv6address ipv6_record;
[case(DNS_QTYPE_SRV)] dns_srv_record srv_record;
+ [case(DNS_QTYPE_TSIG)] dns_tsig_record tsig_record;
+ [case(DNS_QTYPE_TKEY)] dns_tkey_record tkey_record;
[default];
} dns_rdata;
diff --git a/source4/dns_server/dns_server.c b/source4/dns_server/dns_server.c
index eed20d5..f9db095 100644
--- a/source4/dns_server/dns_server.c
+++ b/source4/dns_server/dns_server.c
@@ -100,6 +100,7 @@ static NTSTATUS dns_process(struct dns_server *dns,
{
enum ndr_err_code ndr_err;
WERROR ret;
+ uint16_t dns_err = DNS_RCODE_OK;
struct dns_request_state *state;
struct dns_name_packet *in_packet;
struct dns_name_packet *out_packet;
@@ -126,12 +127,8 @@ static NTSTATUS dns_process(struct dns_server *dns,
if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
TALLOC_FREE(in_packet);
DEBUG(0, ("Failed to parse packet %d!\n", ndr_err));
- *out = *in;
-
- out->data[2] |= 0x80; /* Toggle DNS_FLAG_REPLY */
- out->data[3] |= DNS_RCODE_FORMERR;
-
- return NT_STATUS_OK;
+ dns_err = DNS_RCODE_FORMERR;
+ goto drop;
}
if (DEBUGLVL(8)) {
NDR_PRINT_DEBUG(dns_name_packet, in_packet);
@@ -189,16 +186,18 @@ static NTSTATUS dns_process(struct dns_server *dns,
TALLOC_FREE(in_packet);
TALLOC_FREE(out_packet);
DEBUG(0, ("Failed to push packet %d!\n", ndr_err));
- *out = *in;
-
- out->data[2] |= 0x80; /* Toggle DNS_FLAG_REPLY */
- out->data[3] |= DNS_RCODE_SERVFAIL;
-
- return NT_STATUS_OK;
+ dns_err = DNS_RCODE_SERVFAIL;
+ goto drop;
}
dump_data(8, out->data, out->length);
return NT_STATUS_OK;
+
+drop:
+ *out = *in;
+ out->data[2] |= 0x80; /* Toggle DNS_FLAG_REPLY */
+ out->data[3] |= dns_err;
+ return NT_STATUS_OK;
}
struct dns_tcp_call {
--
Samba Shared Repository
More information about the samba-cvs
mailing list