4
IDL structures for DNSP structures
6
See [MS-DNSP].pdf in MCPP for details
12
note that this is not a real RPC interface. We are just using PIDL
13
to save us a lot of tedious hand parsing of the dnsRecord
14
attribute. The uuid is randomly generated.
17
uuid("bdd66e9e-d45f-4202-85c0-6132edc4f30a"),
19
pointer_default(unique),
20
helper("../librpc/ndr/ndr_dnsp.h"),
21
helpstring("DNSP interfaces")
26
typedef [enum16bit] enum {
27
DNS_TYPE_TOMBSTONE = 0x0,
45
DNS_TYPE_AFSDB = 0x12,
56
DNS_TYPE_NAPTR = 0x23,
57
DNS_TYPE_DNAME = 0x27,
59
DNS_TYPE_RRSIG = 0x2E,
61
DNS_TYPE_DNSKEY= 0x30,
62
DNS_TYPE_DHCID = 0x31,
64
DNS_TYPE_WINS = 0xFF01,
65
DNS_TYPE_WINSR = 0xFF02
68
typedef [enum8bit] enum {
70
DNS_RANK_CACHE_BIT = 0x01,
71
DNS_RANK_ROOT_HINT = 0x08,
72
DNS_RANK_OUTSIDE_GLUE = 0x20,
73
DNS_RANK_CACHE_NA_ADDITIONAL = 0x31,
74
DNS_RANK_CACHE_NA_AUTHORITY = 0x41,
75
DNS_RANK_CACHE_A_ADDITIONAL = 0x51,
76
DNS_RANK_CACHE_NA_ANSWER = 0x61,
77
DNS_RANK_CACHE_A_AUTHORITY = 0x71,
79
DNS_RANK_NS_GLUE = 0x82,
80
DNS_RANK_CACHE_A_ANSWER = 0xc1,
84
typedef [public] struct {
94
typedef [public] struct {
99
typedef [public] struct {
104
typedef [public] struct {
108
dnsp_name nameTarget;
111
typedef [nodiscriminant,gensize] union {
112
[case(DNS_TYPE_TOMBSTONE)] NTTIME timestamp;
113
[case(DNS_TYPE_A)] [flag(NDR_BIG_ENDIAN)] ipv4address ipv4;
114
[case(DNS_TYPE_NS)] dnsp_name ns;
115
[case(DNS_TYPE_CNAME)] dnsp_name cname;
116
[case(DNS_TYPE_SOA)] [flag(NDR_BIG_ENDIAN)] dnsp_soa soa;
117
[case(DNS_TYPE_MX)] [flag(NDR_BIG_ENDIAN)] dnsp_mx mx;
118
[case(DNS_TYPE_TXT)] dnsp_string txt;
119
[case(DNS_TYPE_PTR)] dnsp_name ptr;
120
[case(DNS_TYPE_HINFO)] dnsp_hinfo hinfo;
121
[case(DNS_TYPE_AAAA)] ipv6address ipv6;
122
[case(DNS_TYPE_SRV)] [flag(NDR_BIG_ENDIAN)] dnsp_srv srv;
123
[default] [flag(NDR_REMAINING)] DATA_BLOB data;
126
/* this is the format for the dnsRecord attribute in the DNS
128
typedef [public] struct {
129
[value(ndr_size_dnsRecordData(&data,wType,ndr->flags))] uint16 wDataLength;
130
dns_record_type wType;
131
[value(5)] uint8 version;
132
dns_record_rank rank;
135
[flag(NDR_BIG_ENDIAN)] uint32 dwTtlSeconds;
138
[switch_is(wType)] dnsRecordData data;
139
} dnsp_DnssrvRpcRecord;
143
this is a convenience hook for ndrdump
145
void decode_DnssrvRpcRecord(
146
[in] dnsp_DnssrvRpcRecord blob