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