dnsp: Add MX record parsing
[Samba/gebeck_regimport.git] / librpc / idl / dnsp.idl
bloba4a175aea4290181bd54fe2dc5feec14787818e3
1 #include "idl_types.h"
3 /*
4 IDL structures for DNSP structures
6 See [MS-DNSP].pdf in MCPP for details
7 */
9 import "misc.idl";
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"),
18 version(0.0),
19 pointer_default(unique),
20 helper("../librpc/ndr/ndr_dnsp.h"),
21 helpstring("DNSP interfaces")
24 interface dnsp
26 typedef enum {
27 DNS_TYPE_ZERO = 0x0,
28 DNS_TYPE_A = 0x1,
29 DNS_TYPE_NS = 0x2,
30 DNS_TYPE_MD = 0x3,
31 DNS_TYPE_MF = 0x4,
32 DNS_TYPE_CNAME = 0x5,
33 DNS_TYPE_SOA = 0x6,
34 DNS_TYPE_MB = 0x7,
35 DNS_TYPE_MG = 0x8,
36 DNS_TYPE_MR = 0x9,
37 DNS_TYPE_NULL = 0xA,
38 DNS_TYPE_WKS = 0xB,
39 DNS_TYPE_PTR = 0xC,
40 DNS_TYPE_HINFO = 0xD,
41 DNS_TYPE_MINFO = 0xE,
42 DNS_TYPE_MX = 0xF,
43 DNS_TYPE_RP = 0x11,
44 DNS_TYPE_AFSDB = 0x12,
45 DNS_TYPE_X25 = 0x13,
46 DNS_TYPE_ISDN = 0x14,
47 DNS_TYPE_RT = 0x15,
48 DNS_TYPE_SIG = 0x18,
49 DNS_TYPE_KEY = 0x19,
50 DNS_TYPE_AAAA = 0x1C,
51 DNS_TYPE_LOC = 0x1D,
52 DNS_TYPE_NXT = 0x1E,
53 DNS_TYPE_SRV = 0x21,
54 DNS_TYPE_ATMA = 0x22,
55 DNS_TYPE_NAPTR = 0x23,
56 DNS_TYPE_DNAME = 0x27,
57 DNS_TYPE_DS = 0x2B,
58 DNS_TYPE_RRSIG = 0x2E,
59 DNS_TYPE_NSEC = 0x2F,
60 DNS_TYPE_DNSKEY= 0x30,
61 DNS_TYPE_DHCID = 0x31,
62 DNS_TYPE_ALL = 0xFF,
63 DNS_TYPE_WINS = 0xFF01,
64 DNS_TYPE_WINSR = 0xFF02
65 } dns_record_type;
67 typedef [public] struct {
68 uint32 serial;
69 uint32 refresh;
70 uint32 retry;
71 uint32 expire;
72 uint32 minimum;
73 dnsp_name mname;
74 dnsp_name rname;
75 } dnsp_soa;
77 typedef [public] struct {
78 uint16 wPriority;
79 dnsp_name nameTarget;
80 } dnsp_mx;
82 typedef [public] struct {
83 uint16 wPriority;
84 uint16 wWeight;
85 uint16 wPort;
86 dnsp_name nameTarget;
87 } dnsp_srv;
89 typedef [nodiscriminant] union {
90 [case(DNS_TYPE_A)] [flag(NDR_BIG_ENDIAN)] ipv4address ip;
91 [case(DNS_TYPE_NS)] dnsp_name ns;
92 [case(DNS_TYPE_CNAME)] dnsp_name cname;
93 [case(DNS_TYPE_SOA)] [flag(NDR_BIG_ENDIAN)] dnsp_soa soa;
94 [case(DNS_TYPE_MX)] [flag(NDR_BIG_ENDIAN)] dnsp_mx mx;
95 [case(DNS_TYPE_PTR)] dnsp_name ptr;
96 [case(DNS_TYPE_AAAA)] ipv6address ip;
97 [case(DNS_TYPE_SRV)] [flag(NDR_BIG_ENDIAN)] dnsp_srv srv;
98 [default] [flag(NDR_REMAINING)] DATA_BLOB data;
99 } dnsRecordData;
101 /* this is the format for the dnsRecord attribute in the DNS
102 partitions in AD */
103 typedef [public] struct {
104 uint16 wDataLength;
105 dns_record_type wType;
106 uint32 dwFlags;
107 uint32 dwSerial;
108 uint32 dwTtlSeconds;
109 uint32 dwTimeStamp;
110 uint32 dwReserved;
111 [switch_is(wType)] dnsRecordData data;
112 } dnsp_DnssrvRpcRecord;
116 this is a convenience hook for ndrdump
118 void decode_DnssrvRpcRecord(
119 [in] dnsp_DnssrvRpcRecord blob