summaryrefslogtreecommitdiffstats
path: root/librpc/idl/dnsp.idl
diff options
context:
space:
mode:
Diffstat (limited to 'librpc/idl/dnsp.idl')
-rw-r--r--librpc/idl/dnsp.idl293
1 files changed, 293 insertions, 0 deletions
diff --git a/librpc/idl/dnsp.idl b/librpc/idl/dnsp.idl
new file mode 100644
index 0000000..0cb18bf
--- /dev/null
+++ b/librpc/idl/dnsp.idl
@@ -0,0 +1,293 @@
+#include "idl_types.h"
+
+/*
+ IDL structures for DNSP structures
+
+ See [MS-DNSP].pdf in MCPP for details
+*/
+
+import "misc.idl";
+
+/*
+ note that this is not a real RPC interface. We are just using PIDL
+ to save us a lot of tedious hand parsing of the dnsRecord
+ attribute. The uuid is randomly generated.
+ */
+[
+ uuid("bdd66e9e-d45f-4202-85c0-6132edc4f30a"),
+ version(0.0),
+ pointer_default(unique),
+ helper("../librpc/ndr/ndr_dnsp.h"),
+ helpstring("DNSP interfaces")
+]
+
+interface dnsp
+{
+ typedef [enum16bit,public] enum {
+ DNS_TYPE_TOMBSTONE = 0x0,
+ DNS_TYPE_A = 0x1,
+ DNS_TYPE_NS = 0x2,
+ DNS_TYPE_MD = 0x3,
+ DNS_TYPE_MF = 0x4,
+ DNS_TYPE_CNAME = 0x5,
+ DNS_TYPE_SOA = 0x6,
+ DNS_TYPE_MB = 0x7,
+ DNS_TYPE_MG = 0x8,
+ DNS_TYPE_MR = 0x9,
+ DNS_TYPE_NULL = 0xA,
+ DNS_TYPE_WKS = 0xB,
+ DNS_TYPE_PTR = 0xC,
+ DNS_TYPE_HINFO = 0xD,
+ DNS_TYPE_MINFO = 0xE,
+ DNS_TYPE_MX = 0xF,
+ DNS_TYPE_TXT = 0x10,
+ DNS_TYPE_RP = 0x11,
+ DNS_TYPE_AFSDB = 0x12,
+ DNS_TYPE_X25 = 0x13,
+ DNS_TYPE_ISDN = 0x14,
+ DNS_TYPE_RT = 0x15,
+ DNS_TYPE_SIG = 0x18,
+ DNS_TYPE_KEY = 0x19,
+ DNS_TYPE_AAAA = 0x1C,
+ DNS_TYPE_LOC = 0x1D,
+ DNS_TYPE_NXT = 0x1E,
+ DNS_TYPE_SRV = 0x21,
+ DNS_TYPE_ATMA = 0x22,
+ DNS_TYPE_NAPTR = 0x23,
+ DNS_TYPE_CERT = 0x25,
+ DNS_TYPE_DNAME = 0x27,
+ DNS_TYPE_DS = 0x2B,
+ DNS_TYPE_SSHFP = 0x2C,
+ DNS_TYPE_IPSECKEY = 0x2D,
+ DNS_TYPE_RRSIG = 0x2E,
+ DNS_TYPE_NSEC = 0x2F,
+ DNS_TYPE_DNSKEY= 0x30,
+ DNS_TYPE_DHCID = 0x31,
+ DNS_TYPE_NSEC3 = 0x32,
+ DNS_TYPE_NSEC3PARAM = 0x33,
+ DNS_TYPE_TLSA = 0x34,
+ DNS_TYPE_CDS = 0x3B,
+ DNS_TYPE_CDNSKEY = 0x3C,
+ DNS_TYPE_SVCB = 0x40,
+ DNS_TYPE_HTTPS = 0x41,
+ DNS_TYPE_ALL = 0xFF,
+ DNS_TYPE_URI = 0x100,
+ DNS_TYPE_CAA = 0x101,
+ DNS_TYPE_WINS = 0xFF01,
+ DNS_TYPE_WINSR = 0xFF02
+ } dns_record_type;
+
+ typedef [bitmap32bit] bitmap {
+ DNS_RPC_FLAG_SUPPRESS_NOTIFY = 0x00010000,
+ DNS_RPC_FLAG_AGING_ON = 0x00020000,
+ DNS_RPC_FLAG_OPEN_ACL = 0x00040000,
+ DNS_RPC_FLAG_RECORD_WIRE_FORMAT = 0x00100000,
+ DNS_RPC_FLAG_SUPPRESS_RECORD_UPDATE_PTR = 0x00200000,
+ DNS_RPC_FLAG_NODE_COMPLETE = 0x00800000,
+ DNS_RPC_FLAG_NODE_STICKY = 0x01000000,
+ DNS_RPC_FLAG_RECORD_CREATE_PTR = 0x02000000,
+ DNS_RPC_FLAG_RECORD_TTL_CHANGE = 0x04000000,
+ DNS_RPC_FLAG_RECORD_DEFAULT_TTL = 0x08000000,
+ DNS_RPC_FLAG_ZONE_DELEGATION = 0x10000000,
+ DNS_RPC_FLAG_AUTH_ZONE_ROOT = 0x20000000,
+ DNS_RPC_FLAG_ZONE_ROOT = 0x40000000,
+ DNS_RPC_FLAG_CACHE_DATA = 0x80000000
+ }
+ dns_rpc_node_flags;
+
+
+ typedef [enum8bit] enum {
+ DNS_RANK_NONE = 0x00,
+ DNS_RANK_CACHE_BIT = 0x01,
+ DNS_RANK_ROOT_HINT = 0x08,
+ DNS_RANK_OUTSIDE_GLUE = 0x20,
+ DNS_RANK_CACHE_NA_ADDITIONAL = 0x31,
+ DNS_RANK_CACHE_NA_AUTHORITY = 0x41,
+ DNS_RANK_CACHE_A_ADDITIONAL = 0x51,
+ DNS_RANK_CACHE_NA_ANSWER = 0x61,
+ DNS_RANK_CACHE_A_AUTHORITY = 0x71,
+ DNS_RANK_GLUE = 0x80,
+ DNS_RANK_NS_GLUE = 0x82,
+ DNS_RANK_CACHE_A_ANSWER = 0xc1,
+ DNS_RANK_ZONE = 0xf0
+ } dns_record_rank;
+
+ typedef [v1_enum] enum {
+ DNS_ZONE_TYPE_CACHE = 0x00,
+ DNS_ZONE_TYPE_PRIMARY = 0x01,
+ DNS_ZONE_TYPE_SECONDARY = 0x02,
+ DNS_ZONE_TYPE_STUB = 0x03,
+ DNS_ZONE_TYPE_FORWARDER = 0x04,
+ DNS_ZONE_TYPE_SECONDARY_CACHE = 0x05
+ } dns_zone_type;
+
+ typedef [public,enum8bit] enum {
+ DNS_ZONE_UPDATE_OFF = 0x00,
+ DNS_ZONE_UPDATE_UNSECURE = 0x01,
+ DNS_ZONE_UPDATE_SECURE = 0x02
+ } dns_zone_update;
+
+ typedef [v1_enum] enum {
+ DSPROPERTY_ZONE_EMPTY = 0x00,
+ DSPROPERTY_ZONE_TYPE = 0x01,
+ DSPROPERTY_ZONE_ALLOW_UPDATE = 0x02,
+ DSPROPERTY_ZONE_SECURE_TIME = 0x08,
+ DSPROPERTY_ZONE_NOREFRESH_INTERVAL = 0x10,
+ DSPROPERTY_ZONE_SCAVENGING_SERVERS = 0x11,
+ DSPROPERTY_ZONE_AGING_ENABLED_TIME = 0x12,
+ DSPROPERTY_ZONE_REFRESH_INTERVAL = 0x20,
+ DSPROPERTY_ZONE_AGING_STATE = 0x40,
+ DSPROPERTY_ZONE_DELETED_FROM_HOSTNAME = 0x80,
+ DSPROPERTY_ZONE_MASTER_SERVERS = 0x81,
+ DSPROPERTY_ZONE_AUTO_NS_SERVERS = 0x82,
+ DSPROPERTY_ZONE_DCPROMO_CONVERT = 0x83,
+ DSPROPERTY_ZONE_SCAVENGING_SERVERS_DA = 0x90,
+ DSPROPERTY_ZONE_MASTER_SERVERS_DA = 0x91,
+ DSPROPERTY_ZONE_NS_SERVERS_DA = 0x92,
+ DSPROPERTY_ZONE_NODE_DBFLAGS = 0x100
+
+ } dns_property_id;
+
+ typedef [enum8bit] enum {
+ DCPROMO_CONVERT_NONE = 0x00,
+ DCPROMO_CONVERT_DOMAIN = 0x01,
+ DCPROMO_CONVERT_FOREST = 0x02
+ } dns_dcpromo_flag;
+
+ typedef [public] struct {
+ uint32 serial;
+ uint32 refresh;
+ uint32 retry;
+ uint32 expire;
+ uint32 minimum;
+ dnsp_name mname;
+ dnsp_name rname;
+ } dnsp_soa;
+
+ typedef [public] struct {
+ uint16 wPriority;
+ dnsp_name nameTarget;
+ } dnsp_mx;
+
+ typedef [public] struct {
+ dnsp_string cpu;
+ dnsp_string os;
+ } dnsp_hinfo;
+
+ typedef [public] struct {
+ uint16 wPriority;
+ uint16 wWeight;
+ uint16 wPort;
+ dnsp_name nameTarget;
+ } dnsp_srv;
+
+ typedef struct {
+ uint32 addrCount;
+ uint32 addrArray[addrCount];
+ } dnsp_ip4_array;
+
+ typedef struct {
+ uint16 family;
+ [flag(NDR_BIG_ENDIAN)] uint16 port;
+ [flag(NDR_BIG_ENDIAN)] ipv4address ipv4;
+ ipv6address ipv6;
+ uint8 pad[8];
+ uint32 unused[8];
+ } dnsp_dns_addr;
+
+ typedef [public] struct {
+ uint32 MaxCount;
+ uint32 AddrCount;
+ uint32 Tag;
+ uint16 Family;
+ uint16 Reserved0;
+ uint32 Flags;
+ uint32 MatchFlag;
+ uint32 Reserved1;
+ uint32 Reserved2;
+ dnsp_dns_addr AddrArray[AddrCount];
+ } dnsp_dns_addr_array;
+
+ typedef [public,nopull,nopush,noprint,gensize] struct {
+ uint8 count;
+ dnsp_string str[count];
+ } dnsp_string_list;
+
+ typedef [nodiscriminant,gensize] union {
+ [case(DNS_TYPE_TOMBSTONE)] NTTIME EntombedTime;
+ [case(DNS_TYPE_A)] [flag(NDR_BIG_ENDIAN)] ipv4address ipv4;
+ [case(DNS_TYPE_NS)] dnsp_name ns;
+ [case(DNS_TYPE_CNAME)] dnsp_name cname;
+ [case(DNS_TYPE_SOA)] [flag(NDR_BIG_ENDIAN)] dnsp_soa soa;
+ [case(DNS_TYPE_MX)] [flag(NDR_BIG_ENDIAN)] dnsp_mx mx;
+ [case(DNS_TYPE_TXT)] dnsp_string_list txt;
+ [case(DNS_TYPE_PTR)] dnsp_name ptr;
+ [case(DNS_TYPE_HINFO)] dnsp_hinfo hinfo;
+ [case(DNS_TYPE_AAAA)] ipv6address ipv6;
+ [case(DNS_TYPE_SRV)] [flag(NDR_BIG_ENDIAN)] dnsp_srv srv;
+ [default] [flag(NDR_REMAINING)] DATA_BLOB data;
+ } dnsRecordData;
+
+ /* this is the format for the dnsRecord attribute in the DNS
+ partitions in AD */
+ typedef [public] struct {
+ [value(ndr_size_dnsRecordData(&data,wType,ndr->flags))] uint16 wDataLength;
+ dns_record_type wType;
+ [value(5)] uint8 version;
+ dns_record_rank rank;
+ uint16 flags;
+ uint32 dwSerial;
+ [flag(NDR_BIG_ENDIAN)] uint32 dwTtlSeconds;
+ uint32 dwReserved;
+ uint32 dwTimeStamp;
+ [switch_is(wType)] dnsRecordData data;
+ } dnsp_DnssrvRpcRecord;
+
+ typedef [nodiscriminant,gensize] union {
+ [case(DSPROPERTY_ZONE_EMPTY)] ;
+ [case(DSPROPERTY_ZONE_TYPE)] dns_zone_type zone_type;
+ [case(DSPROPERTY_ZONE_ALLOW_UPDATE)] dns_zone_update allow_update_flag;
+ [case(DSPROPERTY_ZONE_SECURE_TIME)] NTTIME zone_secure_time;
+ [case(DSPROPERTY_ZONE_NOREFRESH_INTERVAL)] uint32 norefresh_hours;
+ [case(DSPROPERTY_ZONE_REFRESH_INTERVAL)] uint32 refresh_hours;
+ [case(DSPROPERTY_ZONE_AGING_STATE)] uint32 aging_enabled;
+ [case(DSPROPERTY_ZONE_SCAVENGING_SERVERS)] dnsp_ip4_array servers;
+ [case(DSPROPERTY_ZONE_AGING_ENABLED_TIME)] uint32 next_scavenging_cycle_hours;
+ [case(DSPROPERTY_ZONE_DELETED_FROM_HOSTNAME)] nstring deleted_by_hostname;
+ [case(DSPROPERTY_ZONE_MASTER_SERVERS)] dnsp_ip4_array master_servers;
+ [case(DSPROPERTY_ZONE_AUTO_NS_SERVERS)] dnsp_ip4_array ns_servers;
+ [case(DSPROPERTY_ZONE_DCPROMO_CONVERT)] dns_dcpromo_flag dcpromo_flag;
+ [case(DSPROPERTY_ZONE_SCAVENGING_SERVERS_DA)] dnsp_dns_addr_array s_ns_servers;
+ [case(DSPROPERTY_ZONE_MASTER_SERVERS_DA)] dnsp_dns_addr_array z_master_servers;
+ [case(DSPROPERTY_ZONE_NS_SERVERS_DA)] dnsp_dns_addr_array d_ns_servers;
+ [case(DSPROPERTY_ZONE_NODE_DBFLAGS)] dns_rpc_node_flags flags;
+ } dnsPropertyData;
+
+ /* this is the format for the dnsProperty attribute in the DNS
+ partitions in AD */
+ typedef [flag(NDR_NOALIGN),public] struct {
+ [value(ndr_size_dnsPropertyData(&data,id,ndr->flags))] uint32 wDataLength;
+ uint32 namelength;
+ [value(0)] uint32 flag;
+ [value(1)] uint32 version;
+ dns_property_id id;
+ [switch_is(id)] dnsPropertyData data;
+ uint32 name;
+ } dnsp_DnsProperty;
+
+ /*
+ * this is the format for the dnsProperty attribute in the DNS
+ * partitions in AD when the wDataLength is 0. This is an
+ * invalid format seen from some Windows servers in the same
+ * domain.
+ */
+ typedef [flag(NDR_NOALIGN),public] struct {
+ [range(0, 0), value(0)] uint32 wDataLength;
+ uint32 namelength;
+ [value(0)] uint32 flag;
+ [value(1)] uint32 version;
+ dns_property_id id;
+ [switch_is(DSPROPERTY_ZONE_EMPTY)] dnsPropertyData data;
+ uint32 name;
+ } dnsp_DnsProperty_short;
+}