summaryrefslogtreecommitdiff
path: root/librpc/idl
diff options
context:
space:
mode:
authorKai Blin <kai@samba.org>2010-09-29 17:24:53 -0700
committerKai Blin <kai@samba.org>2010-10-23 10:17:05 +0000
commita7b833ec7e19bc3251ade69af101631013d60419 (patch)
tree6d0c44eb1e889f4168667107efd16f4602fafeda /librpc/idl
parent719a6bbfede5b124c96f7c84d27e68ac285b073a (diff)
downloadsamba-a7b833ec7e19bc3251ade69af101631013d60419.tar.gz
samba-a7b833ec7e19bc3251ade69af101631013d60419.tar.bz2
samba-a7b833ec7e19bc3251ade69af101631013d60419.zip
s4 dns: Reply to a name request with an A record.
The first real answer to a DNS request. Still uses hardcoded reply.
Diffstat (limited to 'librpc/idl')
-rw-r--r--librpc/idl/dns.idl43
1 files changed, 36 insertions, 7 deletions
diff --git a/librpc/idl/dns.idl b/librpc/idl/dns.idl
index 16dcf52929..b4075365ab 100644
--- a/librpc/idl/dns.idl
+++ b/librpc/idl/dns.idl
@@ -119,18 +119,48 @@ interface dns
uint8 data[length];
} dns_rdata_data;
- typedef [nodiscriminant,public] union {
- [case(DNS_QTYPE_A),subcontext(2)] ipv4address ipv4_address;
- [case(DNS_QTYPE_AAAA),subcontext(2)] ipv6address ipv6_address;
- [default] dns_rdata_data data;
+ typedef struct {
+ dns_string mname;
+ dns_string rname;
+ uint32 serial;
+ uint32 refresh;
+ uint32 retry;
+ uint32 expire;
+ uint32 minimum;
+ } dns_soa_record;
+
+ typedef [public] struct {
+ uint16 priority;
+ uint16 weight;
+ uint16 port;
+ dns_string target;
+ } dns_srv_record;
+
+ typedef [public] struct {
+ uint16 preference;
+ dns_string exchange;
+ } dns_mx_record;
+
+ typedef [nodiscriminant,public,flag(NDR_NOALIGN)] union {
+ [case(DNS_QTYPE_A)] ipv4address ipv4_record;
+ [case(DNS_QTYPE_NS)] dns_string ns_record;
+ [case(DNS_QTYPE_CNAME)] dns_string cname_record;
+ [case(DNS_QTYPE_SOA)] dns_soa_record soa_record;
+ [case(DNS_QTYPE_PTR)] dns_string ptr_record;
+ [case(DNS_QTYPE_MX)] dns_mx_record mx_record;
+ [case(DNS_QTYPE_AAAA)] ipv6address ipv6_record;
+ [case(DNS_QTYPE_SRV)] dns_srv_record srv_record;
+ [default];
} dns_rdata;
- typedef [flag(LIBNDR_PRINT_ARRAY_HEX),public] struct {
- dns_string name;
+ typedef [flag(LIBNDR_PRINT_ARRAY_HEX|NDR_NOALIGN),nopush,nopull] struct {
+ dns_string name;
dns_qtype rr_type;
dns_qclass rr_class;
uint32 ttl;
+ uint16 length;
[switch_is(rr_type)] dns_rdata rdata;
+ DATA_BLOB unexpected;
} dns_res_rec;
typedef [flag(NDR_NOALIGN|NDR_BIG_ENDIAN|NDR_PAHEX),public] struct {
@@ -144,7 +174,6 @@ interface dns
dns_res_rec answers[ancount];
dns_res_rec nsrecs[nscount];
dns_res_rec additional[arcount];
- [flag(NDR_REMAINING)] DATA_BLOB padding;
} dns_name_packet;
/*