aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/pidl
diff options
context:
space:
mode:
authorRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2008-08-06 06:53:37 +0000
committerRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2008-08-06 06:53:37 +0000
commit88d3b24a4eed392731024a70cb2f00b53e0c7cb8 (patch)
tree6a480d5ee2bc4723f6ed9f540a8027071c0a67e5 /epan/dissectors/pidl
parentd261400dea4317781d5e9ff3283f384544d2d91d (diff)
add initial dnsserver dcerpc implementation
svn path=/trunk/; revision=25943
Diffstat (limited to 'epan/dissectors/pidl')
-rw-r--r--epan/dissectors/pidl/dnsserver.cnf97
-rw-r--r--epan/dissectors/pidl/dnsserver.idl402
2 files changed, 499 insertions, 0 deletions
diff --git a/epan/dissectors/pidl/dnsserver.cnf b/epan/dissectors/pidl/dnsserver.cnf
new file mode 100644
index 0000000000..98af099a63
--- /dev/null
+++ b/epan/dissectors/pidl/dnsserver.cnf
@@ -0,0 +1,97 @@
+#
+# DNS_RPC_NAME
+#
+MANUAL dnsserver_dissect_struct_DNS_RPC_NAME
+HF_FIELD hf_dnsserver_DNS_RPC_NAME_name "Name" "dnsserver.DNS_RPC_NAME.name" FT_STRING BASE_NONE NULL 0 "" "" ""
+
+
+#
+# DNS_RPC_NODE
+#
+MANUAL dnsserver_dissect_element_DNS_RPC_NODE_RecordCount
+MANUAL dnsserver_dissect_element_DNS_RPC_NODE_records
+
+CODE START
+
+ #include "packet-smb-common.h"
+
+int
+dnsserver_dissect_struct_DNS_RPC_NAME(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_)
+{
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset;
+ dcerpc_info *di = NULL;
+ guint8 len;
+ const char *dn;
+ int dn_len;
+ guint16 bc;
+
+ di=pinfo->private_data;
+ if(di->conformant_run){
+ /*just a run to handle conformant arrays, nothing to dissect */
+ return offset;
+ }
+
+
+
+ old_offset = offset;
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+ tree = proto_item_add_subtree(item, ett_dnsserver_DNS_RPC_NAME);
+ }
+
+ offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, drep, hf_dnsserver_DNS_RPC_NAME_NameLength, &len);
+ bc = tvb_length_remaining(tvb, offset);
+ dn = get_unicode_or_ascii_string(tvb, &offset,
+ TRUE, &dn_len, TRUE, TRUE, &bc);
+ if (dn) {
+ proto_tree_add_string(tree, hf_dnsserver_DNS_RPC_NAME_name, tvb,
+ offset, dn_len,dn);
+ offset += dn_len;
+ }
+
+ proto_item_set_len(item, offset-old_offset);
+
+ return offset;
+}
+
+
+static guint16 node_record_count;
+
+static int
+dnsserver_dissect_element_DNS_RPC_NODE_RecordCount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
+{
+ dcerpc_info *di = NULL;
+
+ di=pinfo->private_data;
+ if(di->conformant_run){
+ /*just a run to handle conformant arrays, nothing to dissect */
+ return offset;
+ }
+
+ offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep, hf_dnsserver_DNS_RPC_NODE_RecordCount, &node_record_count);
+
+ return offset;
+}
+
+static int
+dnsserver_dissect_element_DNS_RPC_NODE_records(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
+{
+ dcerpc_info *di = NULL;
+
+ di=pinfo->private_data;
+ if(di->conformant_run){
+ /*just a run to handle conformant arrays, nothing to dissect */
+ return offset;
+ }
+
+ while(node_record_count--){
+ offset = dnsserver_dissect_element_DNS_RPC_NODE_records_(tvb, offset, pinfo, tree, drep);
+ }
+
+ return offset;
+}
+
+CODE END \ No newline at end of file
diff --git a/epan/dissectors/pidl/dnsserver.idl b/epan/dissectors/pidl/dnsserver.idl
new file mode 100644
index 0000000000..4d36fab849
--- /dev/null
+++ b/epan/dissectors/pidl/dnsserver.idl
@@ -0,0 +1,402 @@
+/*
+ dnsserver interface definition
+*/
+
+[ uuid("50abc2a4-574d-40b3-9d66-ee4fd5fba076"),
+ version(5.0),
+ pointer_default(unique),
+ helpstring("DNS Server")
+] interface dnsserver
+{
+
+ typedef [v1_enum] enum {
+ DNS_CLIENT_VERSION_W2K = 0x00000000,
+ DNS_CLIENT_VERSION_DOTNET = 0x00000006,
+ DNS_CLIENT_VERSION_LONGHORN = 0x00000007
+ } DNS_RPC_CLIENT_VERSION;
+
+ typedef [flag(NDR_ALIGN4)] struct {
+ uint8 OSMajorVersion;
+ uint8 OSMinorVersion;
+ uint16 ServicePackVersion;
+ } DNS_RPC_VERSION;
+
+ typedef [enum8bit] enum {
+ DNS_RPC_BOOT_METHOD_FILE = 0x01,
+ DNS_RPC_BOOT_METHOD_REGISTRY = 0x02,
+ DNS_RPC_BOOT_METHOD_DIRECTORY = 0x03
+ } DNS_RPC_BOOT_METHOD;
+
+
+ const uint32 DNS_LOG_LEVEL_ALL_PACKETS = 0x0000ffff;
+ const uint32 DNS_LOG_LEVEL_NON_QUERY = 0x000000fe;
+ typedef [bitmap32bit] bitmap {
+ DNS_LOG_LEVEL_QUERY = 0x00000001,
+ DNS_LOG_LEVEL_NOTIFY = 0x00000010,
+ DNS_LOG_LEVEL_UPDATE = 0x00000020,
+ DNS_LOG_LEVEL_QUESTIONS = 0x00000100,
+ DNS_LOG_LEVEL_ANSWERS = 0x00000200,
+ DNS_LOG_LEVEL_SEND = 0x00001000,
+ DNS_LOG_LEVEL_RECV = 0x00002000,
+ DNS_LOG_LEVEL_UDP = 0x00004000,
+ DNS_LOG_LEVEL_TCP = 0x00008000,
+ DNS_LOG_LEVEL_FULL_PACKETS = 0x01000000,
+ DNS_LOG_LEVEL_WRITE_THROUGH = 0x80000000
+ } DNS_LOG_LEVELS;
+
+ const uint32 DNS_RPC_USE_ALL_PROTOCOLS = 0xffffffff;
+ typedef [bitmap32bit] bitmap {
+ DNS_RPC_USE_TCPIP = 0x00000001,
+ DNS_RPC_USE_NAMED_PIPE = 0x00000002,
+ DNS_RPC_USE_LPC = 0x00000004
+ } DNS_RPC_PROTOCOLS;
+
+ typedef [v1_enum] enum {
+ DNS_ALLOW_RFC_NAMES_ONLY = 0x00000000,
+ DNS_ALLOW_NONRFC_NAMES = 0x00000001,
+ DNS_ALLOW_MULTIBYTE_NAMES = 0x00000002,
+ DNS_ALLOW_ALL_NAMES = 0x00000003
+ } DNS_NAME_CHECK_FLAGS;
+
+ typedef [enum16bit] enum {
+ DNS_TYPE_ZERO = 0x0000,
+ DNS_TYPE_A = 0x0001,
+ DNS_TYPE_NS = 0x0002,
+ DNS_TYPE_MD = 0x0003,
+ DNS_TYPE_MF = 0x0004,
+ DNS_TYPE_CNAME = 0x0005,
+ DNS_TYPE_SOA = 0x0006,
+ DNS_TYPE_MB = 0x0007,
+ DNS_TYPE_MG = 0x0008,
+ DNS_TYPE_MR = 0x0009,
+ DNS_TYPE_NULL = 0x000a,
+ DNS_TYPE_WKS = 0x000b,
+ DNS_TYPE_PTR = 0x000c,
+ DNS_TYPE_HINFO = 0x000d,
+ DNS_TYPE_MINFO = 0x000e,
+ DNS_TYPE_MX = 0x000f,
+ DNS_TYPE_TXT = 0x0010,
+ DNS_TYPE_RP = 0x0011,
+ DNS_TYPE_AFSDB = 0x0012,
+ DNS_TYPE_X25 = 0x0013,
+ DNS_TYPE_ISDN = 0x0014,
+ DNS_TYPE_RT = 0x0015,
+ DNS_TYPE_NSAP = 0x0016,
+ DNS_TYPE_NSAPPTR = 0x0017,
+ DNS_TYPE_SIG = 0x0018,
+ DNS_TYPE_KEY = 0x0019,
+ DNS_TYPE_PX = 0x001a,
+ DNS_TYPE_GPOS = 0x001b,
+ DNS_TYPE_AAAA = 0x001c,
+ DNS_TYPE_LOC = 0x001d,
+ DNS_TYPE_NXT = 0x001e,
+ DNS_TYPE_SRV = 0x0021,
+ DNS_TYPE_ATMA = 0x0022,
+ DNS_TYPE_NAPTR = 0x0023,
+ DNS_TYPE_DNAME = 0x0024,
+ DNS_TYPE_ALL = 0x00ff,
+ DNS_TYPE_WINS = 0xff01,
+ DNS_TYPE_WINSR = 0xff02
+ } DNS_RECORD_TYPE;
+
+ typedef [bitmap32bit] bitmap {
+ DNS_RPC_VIEW_AUTHORITY_DATA = 0x00000001,
+ DNS_RPC_VIEW_CACHE_DATA = 0x00000002,
+ DNS_RPC_VIEW_GLUE_DATA = 0x00000004,
+ DNS_RPC_VIEW_ROOT_HINT_DATA = 0x00000008,
+ DNS_RPC_VIEW_ADDITIONAL_DATA = 0x00000010,
+ DNS_RPC_VIEW_NO_CHILDREN = 0x00010000,
+ DNS_RPC_VIEW_ONLY_CHILDREN = 0x00020000
+ } DNS_SELECT_FLAGS;
+
+ typedef [bitmap32bit] bitmap {
+ DNS_RPC_FLAG_CACHE_DATA = 0x80000000,
+ DNS_RPC_FLAG_ZONE_ROOT = 0x40000000,
+ DNS_RPC_FLAG_AUTH_ZONE_ROOT = 0x20000000,
+ DNS_RPC_FLAG_ZONE_DELEGATION = 0x10000000,
+ DNS_RPC_FLAG_RECOR_DEFAULT_TTL = 0x08000000,
+ DNS_RPC_FLAG_RECORD_TTL_CHANGE = 0x04000000,
+ DNS_RPC_FLAG_RECORD_CREATE_PTR = 0x02000000,
+ DNS_RPC_FLAG_NODE_STICKY = 0x01000000,
+ DNS_RPC_FLAG_NODE_COMPLETE = 0x00800000,
+ DNS_RPC_FLAG_OPEN_ACL = 0x00040000,
+ DNS_RPC_FLAG_AGING_ON = 0x00020000,
+ DNS_RPC_FLAG_SUPPRESS_NOTIFY = 0x00010000
+ } DNS_RPC_NODE_FLAGS;
+
+ /* 2.2.2.2.1 this cant really be described in IDL :-( */
+ typedef struct {
+ uint8 NameLength;
+ uint8 Name[NameLength];
+ } DNS_RPC_NAME;
+
+ typedef struct {
+ DNS_RPC_NAME Name;
+ } DNS_RPC_RECORD_NODE_NAME;
+
+// typedef [nodiscriminant] union {
+ typedef union {
+ [case(2)] DNS_RPC_RECORD_NODE_NAME NodeName;
+ } DNS_RPC_RECORD_UNION;
+
+ typedef struct {
+ uint16 DataLength; // size of
+ DNS_RECORD_TYPE Type;
+ uint32 Flags;
+ uint32 Serial;
+ uint32 TtlSeconds;
+ uint32 TimeStamp;
+ uint32 reserved;
+ [switch_is(Type)] DNS_RPC_RECORD_UNION record;
+ } DNS_RPC_RECORD;
+
+ typedef struct {
+ uint16 Length;
+ uint16 RecordCount;
+ DNS_RPC_NODE_FLAGS Flags;
+ uint32 Childcount;
+ DNS_RPC_NAME NodeName;
+ DNS_RPC_RECORD records[RecordCount];
+ } DNS_RPC_NODE;
+/* XXX */
+
+
+ typedef struct {
+ uint32 AddrCount;
+ [size_is(AddrCount)] uint32 AddrArray[];
+ } IP4_ARRAY;
+
+/* XXX */
+ typedef struct {
+ uint32 RpcStructureVersion;
+ uint32 reserved0;
+ DNS_RPC_VERSION Version;
+ DNS_RPC_BOOT_METHOD BootMethod;
+ boolean8 AdminConfigured;
+ boolean8 AllowUpdate;
+ boolean8 DsAvailable;
+ [unique, string] uint8 *ServerName;
+ [unique, string, charset(UTF16)] uint16 *DsContainer;
+ [unique] IP4_ARRAY *ServerAddrs;
+ [unique] IP4_ARRAY *ListenAddrs;
+ [unique] IP4_ARRAY *Forwarders;
+ [unique] IP4_ARRAY *LogFilter;
+ [unique, string, charset(UTF16)] uint16 *LogFilePath;
+ [unique, string] uint8 *DomainName;
+ [unique, string] uint8 *ForestName;
+ [unique, string] uint8 *DomainDirectoryPartition;
+ [unique, string] uint8 *ForestDirectoryPartition;
+ [unique, string] uint8 *extension0;
+ [unique, string] uint8 *extension1;
+ [unique, string] uint8 *extension2;
+ [unique, string] uint8 *extension3;
+ [unique, string] uint8 *extension4;
+ [unique, string] uint8 *extension5;
+ DNS_LOG_LEVELS LogLevel;
+ uint32 DebugLevel;
+ uint32 ForwardTimeout;
+ DNS_RPC_PROTOCOLS RpcProtocol;
+ DNS_NAME_CHECK_FLAGS NameCheckFlag;
+ uint32 AddressAnswerLimit;
+ uint32 RecursionRetry;
+ uint32 RecursionTimeout;
+ uint32 MaxCacheTtl;
+ uint32 DsPollingInterval;
+ uint32 LocalNetPriorityNetmask;
+ uint32 ScavengingInterval;
+ uint32 DefaultRefreshInterval;
+ uint32 DefaultNoRefreshInterval;
+ uint32 LastScavengeTime;
+ uint32 EventLogLevel;
+ uint32 LogFileMaxSize;
+ uint32 DsForestVersion;
+ uint32 DsDomainVersion;
+ uint32 DsDsaVersion;
+ uint32 reserve_array[4];
+ boolean8 AutoReverseZones;
+ boolean8 AutoCacheUpdate;
+ boolean8 RecurseAfterForwarding;
+ boolean8 ForwardDelegations;
+ boolean8 NoRecursion;
+ boolean8 SecureResponses;
+ boolean8 RoundRobin;
+ boolean8 LocalNetPriority;
+ boolean8 BindSecondaries;
+ boolean8 WriteAuthorityNs;
+ boolean8 StrictFileParsing;
+ boolean8 LooseWildcarding;
+ boolean8 DefaultAgingState;
+ boolean8 reserve_array2[15];
+ } DNS_RPC_SERVER_INFO_DOTNET;
+/* XXX */
+
+ typedef [v1_enum, flag(NDR_PAHEX)] enum {
+ DNSSRV_TYPEID_NULL = 0,
+ DNSSRV_TYPEID_DWORD = 1,
+ DNSSRV_TYPEID_LPSTR = 2,
+ DNSSRV_TYPEID_LPWSTR = 3,
+ DNSSRV_TYPEID_IPARRAY = 4,
+ DNSSRV_TYPEID_BUFFER = 5,
+ DNSSRV_TYPEID_SERVER_INFO_W2K = 6,
+ DNSSRV_TYPEID_STATS = 7,
+ DNSSRV_TYPEID_FORWARDERS_W2K = 8,
+ DNSSRV_TYPEID_ZONE_W2K = 9,
+ DNSSRV_TYPEID_ZONE_INFO_W2K = 10,
+ DNSSRV_TYPEID_ZONE_SECONDARIES_W2K = 11,
+ DNSSRV_TYPEID_ZONE_DATABASE_W2K = 12,
+ DNSSRV_TYPEID_ZONE_TYPE_RESET_W2K = 13,
+ DNSSRV_TYPEID_ZONE_CREATE_W2K = 14,
+ DNSSRV_TYPEID_NAME_AND_PARAM = 15,
+ DNSSRV_TYPEID_ZONE_LIST_W2K = 16,
+ DNSSRV_TYPEID_ZONE_RENAME = 17,
+ DNSSRV_TYPEID_ZONE_EXPORT = 18,
+ DNSSRV_TYPEID_SERVER_INFO_DOTNET = 19,
+ DNSSRV_TYPEID_FORWARDERS_DOTNET = 20,
+ DNSSRV_TYPEID_ZONE = 21,
+ DNSSRV_TYPEID_ZONE_INFO_DOTNET = 22,
+ DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET = 23,
+ DNSSRV_TYPEID_ZONE_DATABASE = 24,
+ DNSSRV_TYPEID_ZONE_TYPE_RESET_DOTNET = 25,
+ DNSSRV_TYPEID_ZONE_CREATE_DOTNET = 26,
+ DNSSRV_TYPEID_ZONE_LIST = 27,
+ DNSSRV_TYPEID_DP_ENUM = 28,
+ DNSSRV_TYPEID_DP_INFO = 29,
+ DNSSRV_TYPEID_DP_LIST = 30,
+ DNSSRV_TYPEID_ENLIST_DP = 31,
+ DNSSRV_TYPEID_ZONE_CHANGE_DP = 32,
+ DNSSRV_TYPEID_ENUM_ZONES_FILTER = 33,
+ DNSSRV_TYPEID_ADDARRAY = 34,
+ DNSSRV_TYPEID_SERVER_INFO = 35,
+ DNSSRV_TYPEID_ZONE_INFO = 36,
+ DNSSRV_TYPEID_FORWARDERS = 37,
+ DNSSRV_TYPEID_ZONE_SECONDARIES = 38,
+ DNSSRV_TYPEID_ZONE_TYPE_RESET = 39,
+ DNSSRV_TYPEID_ZONE_CREATE = 40,
+ DNSSRV_TYPEID_IP_VALIDATE = 41,
+ DNSSRV_TYPEID_AUTOCONFIGURE = 42,
+ DNSSRV_TYPEID_UTF8_STRING_LIST = 43,
+ DNSSRV_TYPEID_UNICODE_STRING_LIST = 44
+ } DnssrvRpcTypeId;
+
+ typedef union {
+ [case(DNSSRV_TYPEID_NULL)] uint8 *null;
+ [case(DNSSRV_TYPEID_DWORD)] uint32 dword;
+/* DNSSRV_TYPEID_LPSTR = 2,*/
+/* DNSSRV_TYPEID_LPWSTR = 3,*/
+/* DNSSRV_TYPEID_IPARRAY = 4,*/
+/* DNSSRV_TYPEID_BUFFER = 5,*/
+/* DNSSRV_TYPEID_SERVER_INFO_W2K = 6,*/
+/* DNSSRV_TYPEID_STATS = 7,*/
+/* DNSSRV_TYPEID_FORWARDERS_W2K = 8,*/
+/* DNSSRV_TYPEID_ZONE_W2K = 9,*/
+/* DNSSRV_TYPEID_ZONE_INFO_W2K = 10,*/
+/* DNSSRV_TYPEID_ZONE_SECONDARIES_W2K = 11,*/
+/* DNSSRV_TYPEID_ZONE_DATABASE_W2K = 12,*/
+/* DNSSRV_TYPEID_ZONE_TYPE_RESET_W2K = 13,*/
+/* DNSSRV_TYPEID_ZONE_CREATE_W2K = 14,*/
+/* DNSSRV_TYPEID_NAME_AND_PARAM = 15,*/
+/* DNSSRV_TYPEID_ZONE_LIST_W2K = 16,*/
+/* DNSSRV_TYPEID_ZONE_RENAME = 17,*/
+/* DNSSRV_TYPEID_ZONE_EXPORT = 18,*/
+ [case(DNSSRV_TYPEID_SERVER_INFO_DOTNET)] DNS_RPC_SERVER_INFO_DOTNET *ServerInfoDotnet;
+/* DNSSRV_TYPEID_FORWARDERS_DOTNET = 20,*/
+/* DNSSRV_TYPEID_ZONE = 21,*/
+/* DNSSRV_TYPEID_ZONE_INFO_DOTNET = 22,*/
+/* DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET = 23,*/
+/* DNSSRV_TYPEID_ZONE_DATABASE = 24,*/
+/* DNSSRV_TYPEID_ZONE_TYPE_RESET_DOTNET = 25,*/
+/* DNSSRV_TYPEID_ZONE_CREATE_DOTNET = 26,*/
+/* DNSSRV_TYPEID_ZONE_LIST = 27,*/
+/* DNSSRV_TYPEID_DP_ENUM = 28,*/
+/* DNSSRV_TYPEID_DP_INFO = 29,*/
+/* DNSSRV_TYPEID_DP_LIST = 30,*/
+/* DNSSRV_TYPEID_ENLIST_DP = 31,*/
+/* DNSSRV_TYPEID_ZONE_CHANGE_DP = 32,*/
+/* DNSSRV_TYPEID_ENUM_ZONES_FILTER = 33,*/
+/* DNSSRV_TYPEID_ADDARRAY = 34,*/
+/* DNSSRV_TYPEID_SERVER_INFO = 35,*/
+/* DNSSRV_TYPEID_ZONE_INFO = 36,*/
+/* DNSSRV_TYPEID_FORWARDERS = 37,*/
+/* DNSSRV_TYPEID_ZONE_SECONDARIES = 38,*/
+/* DNSSRV_TYPEID_ZONE_TYPE_RESET = 39,*/
+/* DNSSRV_TYPEID_ZONE_CREATE = 40,*/
+/* DNSSRV_TYPEID_IP_VALIDATE = 41,*/
+/* DNSSRV_TYPEID_AUTOCONFIGURE = 42,*/
+/* DNSSRV_TYPEID_UTF8_STRING_LIST = 43,*/
+/* DNSSRV_TYPEID_UNICODE_STRING_LIST = 44*/
+ } DNSSRV_RPC_UNION;
+
+
+ /******************/
+ /* Function: 0x00 */
+ NTSTATUS DnssrvOperation (
+ );
+
+ /******************/
+ /* Function: 0x01 */
+ NTSTATUS DnssrvQuery (
+ );
+
+ /******************/
+ /* Function: 0x02 */
+ NTSTATUS DnssrvComplexOperation (
+ );
+
+ /******************/
+ /* Function: 0x03 */
+ NTSTATUS DnssrvEnumRecords (
+ );
+
+ /******************/
+ /* Function: 0x04 */
+ NTSTATUS DnssrvUpdateRecord (
+ );
+
+ /******************/
+ /* Function: 0x05 */
+ NTSTATUS DnssrvOperation2 (
+ );
+
+ /******************/
+ /* Function: 0x06 */
+ NTSTATUS DnssrvQuery2 (
+ [in] DNS_RPC_CLIENT_VERSION client_version,
+ [in] uint32 setting_flags,
+ [in, unique, string, charset(UTF16)] uint16 *server_name,
+ [in, unique, string] uint8 *zone,
+ [in, unique, string] uint8 *operation,
+ [out, ref] DnssrvRpcTypeId *type_id,
+ [out, ref, switch_is(*type_id)] DNSSRV_RPC_UNION *data
+ );
+
+ /******************/
+ /* Function: 0x07 */
+ NTSTATUS DnssrvComplexOperation2 (
+ );
+
+ typedef struct {
+ DNS_RPC_NODE rpc_node;
+ } DNS_RECORD_BUFFER;
+
+ /******************/
+ /* Function: 0x08 */
+ NTSTATUS DnssrvEnumRecords2 (
+ [in] DNS_RPC_CLIENT_VERSION client_version,
+ [in] uint32 setting_flags,
+ [in, unique, string, charset(UTF16)] uint16 *server_name,
+ [in, unique, string] uint8 *zone,
+ [in, unique, string] uint8 *node_name,
+ [in, unique, string] uint8 *start_child,
+ [in] DNS_RECORD_TYPE record_type,
+ [in] DNS_SELECT_FLAGS select_flag,
+ [in, unique, string] uint8 *filter_start,
+ [in, unique, string] uint8 *filter_stop,
+ [out,ref] uint32 *buffer_length,
+ [out, unique, subcontext(4)] DNS_RPC_NODE *record_buffer
+ );
+
+ /******************/
+ /* Function: 0x09 */
+ NTSTATUS DnssrvUpdateRecord2 (
+ );
+}