summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2010-05-11 07:09:46 +0200
committerAndrew Tridgell <tridge@samba.org>2010-08-05 17:31:29 +1000
commit8892748085d896f46582ea52d299513ce035d8a3 (patch)
treef04444cd8e2962e0b649d48059626bdf5bc2fec8
parenta41dffcb6a0a2dcb6bbcf3ecbb4a7a1df47d85df (diff)
downloadsamba-8892748085d896f46582ea52d299513ce035d8a3.tar.gz
samba-8892748085d896f46582ea52d299513ce035d8a3.tar.bz2
samba-8892748085d896f46582ea52d299513ce035d8a3.zip
s4-dns: expanded the DNSP code to handle more record type
-rw-r--r--librpc/idl/dnsp.idl64
-rwxr-xr-xsource4/librpc/wscript_build2
2 files changed, 57 insertions, 9 deletions
diff --git a/librpc/idl/dnsp.idl b/librpc/idl/dnsp.idl
index 23b1bef813..1f0629c48a 100644
--- a/librpc/idl/dnsp.idl
+++ b/librpc/idl/dnsp.idl
@@ -17,22 +17,70 @@ import "misc.idl";
uuid("bdd66e9e-d45f-4202-85c0-6132edc4f30a"),
version(0.0),
pointer_default(unique),
+ helper("../librpc/ndr/ndr_dnsp.h"),
helpstring("DNSP interfaces")
]
interface dnsp
{
+ typedef enum {
+ DNS_TYPE_ZERO = 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_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_DNAME = 0x27,
+ DNS_TYPE_DS = 0x2B,
+ DNS_TYPE_RRSIG = 0x2E,
+ DNS_TYPE_NSEC = 0x2F,
+ DNS_TYPE_DNSKEY= 0x30,
+ DNS_TYPE_DHCID = 0x31,
+ DNS_TYPE_ALL = 0xFF,
+ DNS_TYPE_WINS = 0xFF01,
+ DNS_TYPE_WINSR = 0xFF02
+ } dns_record_type;
+
+ typedef [nodiscriminant] union {
+ [case(DNS_TYPE_A)] [flag(NDR_BIG_ENDIAN)] ipv4address ip;
+ [case(DNS_TYPE_NS)] dnsp_name ns;
+ [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 {
- uint16 wDataLength;
- uint16 wType;
- uint32 dwFlags;
- uint32 dwSerial;
- uint32 dwTtlSeconds;
- uint32 dwTimeStamp;
- uint32 dwReserved;
- [flag(NDR_BIG_ENDIAN)] ipv4address ip;
+ uint16 wDataLength;
+ dns_record_type wType;
+ uint32 dwFlags;
+ uint32 dwSerial;
+ uint32 dwTtlSeconds;
+ uint32 dwTimeStamp;
+ uint32 dwReserved;
+ [switch_is(wType)] dnsRecordData data;
} dnsp_DnssrvRpcRecord;
diff --git a/source4/librpc/wscript_build b/source4/librpc/wscript_build
index 07d840b6f9..cd4494b683 100755
--- a/source4/librpc/wscript_build
+++ b/source4/librpc/wscript_build
@@ -336,7 +336,7 @@ bld.SAMBA_SUBSYSTEM('NDR_NTLMSSP',
)
bld.SAMBA_SUBSYSTEM('NDR_DNSP',
- source='../../librpc/gen_ndr/ndr_dnsp.c',
+ source='../../librpc/gen_ndr/ndr_dnsp.c ../../librpc/ndr/ndr_dnsp.c',
public_deps='LIBNDR'
)