### ms-dnsp.idl
"""
RPC definitions for the following interfaces:
- DnsServer (v5.0): 50abc2a4-574d-40b3-9d66-ee4fd5fba076
This file is auto-generated by midl-to-scapy, do not modify.
"""

from enum import IntEnum
import uuid

from scapy.fields import PacketListField, StrFixedLenField, StrFixedLenFieldUtf16
from scapy.layers.dcerpc import (
    NDRPacket,
    DceRpcOp,
    NDRByteField,
    NDRConfFieldListField,
    NDRConfPacketListField,
    NDRConfStrLenField,
    NDRConfStrLenFieldUtf16,
    NDRConfVarStrNullField,
    NDRConfVarStrNullFieldUtf16,
    NDRFieldListField,
    NDRFullPointerField,
    NDRInt3264EnumField,
    NDRIntField,
    NDRLongField,
    NDRPacketField,
    NDRShortField,
    NDRSignedByteField,
    NDRSignedIntField,
    NDRSignedLongField,
    NDRUnionField,
    register_dcerpc_interface,
)


class DNS_RPC_TYPEID(IntEnum):
    DNSSRV_TYPEID_ANY = -1
    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_ADDRARRAY = 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_TYPEID_SKD = 45
    DNSSRV_TYPEID_SKD_LIST = 46
    DNSSRV_TYPEID_SKD_STATE = 47
    DNSSRV_TYPEID_SIGNING_VALIDATION_ERROR = 48
    DNSSRV_TYPEID_TRUST_POINT_LIST = 49
    DNSSRV_TYPEID_TRUST_ANCHOR_LIST = 50
    DNSSRV_TYPEID_ZONE_SIGNING_SETTINGS = 51
    DNSSRV_TYPEID_ZONE_SCOPE_ENUM = 52
    DNSSRV_TYPEID_ZONE_STATS = 53
    DNSSRV_TYPEID_ZONE_SCOPE_CREATE = 54
    DNSSRV_TYPEID_ZONE_SCOPE_INFO = 55
    DNSSRV_TYPEID_SCOPE_ENUM = 56
    DNSSRV_TYPEID_CLIENT_SUBNET_RECORD = 57
    DNSSRV_TYPEID_POLICY = 58
    DNSSRV_TYPEID_POLICY_NAME = 59
    DNSSRV_TYPEID_POLICY_ENUM = 60
    DNSSRV_TYPEID_RRL = 61
    DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE = 62
    DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE_ENUM = 63


class PIP4_ARRAY(NDRPacket):
    ALIGNMENT = (4, 8)
    DEPORTED_CONFORMANTS = ["AddrArray"]
    fields_desc = [
        NDRIntField("AddrCount", None, size_of="AddrArray"),
        NDRConfFieldListField(
            "AddrArray",
            [],
            NDRIntField("", 0),
            size_is=lambda pkt: pkt.AddrCount,
            conformant_in_struct=True,
        ),
    ]


class PDNS_RPC_BUFFER(NDRPacket):
    ALIGNMENT = (4, 8)
    DEPORTED_CONFORMANTS = ["Buffer"]
    fields_desc = [
        NDRIntField("dwLength", None, size_of="Buffer"),
        NDRConfStrLenField(
            "Buffer", "", size_is=lambda pkt: pkt.dwLength, conformant_in_struct=True
        ),
    ]


class PDNS_RPC_SERVER_INFO_W2K(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwVersion", 0),
        NDRByteField("fBootMethod", 0),
        NDRByteField("fAdminConfigured", 0),
        NDRByteField("fAllowUpdate", 0),
        NDRByteField("fDsAvailable", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszServerName", ""), deferred=True),
        NDRFullPointerField(
            NDRConfVarStrNullFieldUtf16("pszDsContainer", ""), deferred=True
        ),
        NDRFullPointerField(
            NDRPacketField("aipServerAddrs", PIP4_ARRAY(), PIP4_ARRAY), deferred=True
        ),
        NDRFullPointerField(
            NDRPacketField("aipListenAddrs", PIP4_ARRAY(), PIP4_ARRAY), deferred=True
        ),
        NDRFullPointerField(
            NDRPacketField("aipForwarders", PIP4_ARRAY(), PIP4_ARRAY), deferred=True
        ),
        NDRFullPointerField(NDRIntField("pExtension1", 0), deferred=True),
        NDRFullPointerField(NDRIntField("pExtension2", 0), deferred=True),
        NDRFullPointerField(NDRIntField("pExtension3", 0), deferred=True),
        NDRFullPointerField(NDRIntField("pExtension4", 0), deferred=True),
        NDRFullPointerField(NDRIntField("pExtension5", 0), deferred=True),
        NDRIntField("dwLogLevel", 0),
        NDRIntField("dwDebugLevel", 0),
        NDRIntField("dwForwardTimeout", 0),
        NDRIntField("dwRpcProtocol", 0),
        NDRIntField("dwNameCheckFlag", 0),
        NDRIntField("cAddressAnswerLimit", 0),
        NDRIntField("dwRecursionRetry", 0),
        NDRIntField("dwRecursionTimeout", 0),
        NDRIntField("dwMaxCacheTtl", 0),
        NDRIntField("dwDsPollingInterval", 0),
        NDRIntField("dwScavengingInterval", 0),
        NDRIntField("dwDefaultRefreshInterval", 0),
        NDRIntField("dwDefaultNoRefreshInterval", 0),
        NDRFieldListField(
            "dwReserveArray", [], NDRIntField("", 0), length_is=lambda _: 10
        ),
        NDRByteField("fAutoReverseZones", 0),
        NDRByteField("fAutoCacheUpdate", 0),
        NDRByteField("fRecurseAfterForwarding", 0),
        NDRByteField("fForwardDelegations", 0),
        NDRByteField("fNoRecursion", 0),
        NDRByteField("fSecureResponses", 0),
        NDRByteField("fRoundRobin", 0),
        NDRByteField("fLocalNetPriority", 0),
        NDRByteField("fBindSecondaries", 0),
        NDRByteField("fWriteAuthorityNs", 0),
        NDRByteField("fStrictFileParsing", 0),
        NDRByteField("fLooseWildcarding", 0),
        NDRByteField("fDefaultAgingState", 0),
        StrFixedLenField("fReserveArray", "", length=15),
    ]


class DNSSRV_STAT_HEADER(NDRPacket):
    ALIGNMENT = (4, 4)
    fields_desc = [
        NDRIntField("StatId", 0),
        NDRShortField("wLength", 0),
        NDRByteField("fClear", 0),
        NDRByteField("fReserved", 0),
    ]


class PDNSSRV_STATS(NDRPacket):
    ALIGNMENT = (4, 4)
    fields_desc = [
        NDRPacketField("Header", DNSSRV_STAT_HEADER(), DNSSRV_STAT_HEADER),
        StrFixedLenField("Buffer", "", length=1),
    ]


class PDNS_RPC_FORWARDERS_W2K(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("fRecurseAfterForwarding", 0),
        NDRIntField("dwForwardTimeout", 0),
        NDRFullPointerField(
            NDRPacketField("aipForwarders", PIP4_ARRAY(), PIP4_ARRAY), deferred=True
        ),
    ]


class PDNS_RPC_ZONE_W2K(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRFullPointerField(
            NDRConfVarStrNullFieldUtf16("pszZoneName", ""), deferred=True
        ),
        NDRIntField("Flags", 0),
        NDRByteField("ZoneType", 0),
        NDRByteField("Version", 0),
    ]


class PDNS_RPC_ZONE_INFO_W2K(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRFullPointerField(NDRConfVarStrNullField("pszZoneName", ""), deferred=True),
        NDRIntField("dwZoneType", 0),
        NDRIntField("fReverse", 0),
        NDRIntField("fAllowUpdate", 0),
        NDRIntField("fPaused", 0),
        NDRIntField("fShutdown", 0),
        NDRIntField("fAutoCreated", 0),
        NDRIntField("fUseDatabase", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszDataFile", ""), deferred=True),
        NDRFullPointerField(
            NDRPacketField("aipMasters", PIP4_ARRAY(), PIP4_ARRAY), deferred=True
        ),
        NDRIntField("fSecureSecondaries", 0),
        NDRIntField("fNotifyLevel", 0),
        NDRFullPointerField(
            NDRPacketField("aipSecondaries", PIP4_ARRAY(), PIP4_ARRAY), deferred=True
        ),
        NDRFullPointerField(
            NDRPacketField("aipNotify", PIP4_ARRAY(), PIP4_ARRAY), deferred=True
        ),
        NDRIntField("fUseWins", 0),
        NDRIntField("fUseNbstat", 0),
        NDRIntField("fAging", 0),
        NDRIntField("dwNoRefreshInterval", 0),
        NDRIntField("dwRefreshInterval", 0),
        NDRIntField("dwAvailForScavengeTime", 0),
        NDRFullPointerField(
            NDRPacketField("aipScavengeServers", PIP4_ARRAY(), PIP4_ARRAY),
            deferred=True,
        ),
        NDRIntField("pvReserved1", 0),
        NDRIntField("pvReserved2", 0),
        NDRIntField("pvReserved3", 0),
        NDRIntField("pvReserved4", 0),
    ]


class PDNS_RPC_ZONE_SECONDARIES_W2K(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("fSecureSecondaries", 0),
        NDRIntField("fNotifyLevel", 0),
        NDRFullPointerField(
            NDRPacketField("aipSecondaries", PIP4_ARRAY(), PIP4_ARRAY), deferred=True
        ),
        NDRFullPointerField(
            NDRPacketField("aipNotify", PIP4_ARRAY(), PIP4_ARRAY), deferred=True
        ),
    ]


class PDNS_RPC_ZONE_DATABASE_W2K(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("fDsIntegrated", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszFileName", ""), deferred=True),
    ]


class PDNS_RPC_ZONE_CREATE_INFO_W2K(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRFullPointerField(NDRConfVarStrNullField("pszZoneName", ""), deferred=True),
        NDRIntField("dwZoneType", 0),
        NDRIntField("fAllowUpdate", 0),
        NDRIntField("fAging", 0),
        NDRIntField("dwFlags", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszDataFile", ""), deferred=True),
        NDRIntField("fDsIntegrated", 0),
        NDRIntField("fLoadExisting", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszAdmin", ""), deferred=True),
        NDRFullPointerField(
            NDRPacketField("aipMasters", PIP4_ARRAY(), PIP4_ARRAY), deferred=True
        ),
        NDRFullPointerField(
            NDRPacketField("aipSecondaries", PIP4_ARRAY(), PIP4_ARRAY), deferred=True
        ),
        NDRIntField("fSecureSecondaries", 0),
        NDRIntField("fNotifyLevel", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pvReserved1", ""), deferred=True),
        NDRFullPointerField(NDRConfVarStrNullField("pvReserved2", ""), deferred=True),
        NDRFullPointerField(NDRConfVarStrNullField("pvReserved3", ""), deferred=True),
        NDRFullPointerField(NDRConfVarStrNullField("pvReserved4", ""), deferred=True),
        NDRFullPointerField(NDRConfVarStrNullField("pvReserved5", ""), deferred=True),
        NDRFullPointerField(NDRConfVarStrNullField("pvReserved6", ""), deferred=True),
        NDRFullPointerField(NDRConfVarStrNullField("pvReserved7", ""), deferred=True),
        NDRFullPointerField(NDRConfVarStrNullField("pvReserved8", ""), deferred=True),
        NDRIntField("dwReserved1", 0),
        NDRIntField("dwReserved2", 0),
        NDRIntField("dwReserved3", 0),
        NDRIntField("dwReserved4", 0),
        NDRIntField("dwReserved5", 0),
        NDRIntField("dwReserved6", 0),
        NDRIntField("dwReserved7", 0),
        NDRIntField("dwReserved8", 0),
    ]


class PDNS_RPC_NAME_AND_PARAM(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwParam", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszNodeName", ""), deferred=True),
    ]


class PDNS_RPC_ZONE_LIST_W2K(NDRPacket):
    ALIGNMENT = (4, 8)
    DEPORTED_CONFORMANTS = ["ZoneArray"]
    fields_desc = [
        NDRIntField("dwZoneCount", None, size_of="ZoneArray"),
        NDRConfPacketListField(
            "ZoneArray",
            [],
            PDNS_RPC_ZONE_W2K,
            size_is=lambda pkt: pkt.dwZoneCount,
            conformant_in_struct=True,
            ptr_pack=True,
        ),
    ]


class PDNS_RPC_SERVER_INFO_DOTNET(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRIntField("dwVersion", 0),
        NDRByteField("fBootMethod", 0),
        NDRByteField("fAdminConfigured", 0),
        NDRByteField("fAllowUpdate", 0),
        NDRByteField("fDsAvailable", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszServerName", ""), deferred=True),
        NDRFullPointerField(
            NDRConfVarStrNullFieldUtf16("pszDsContainer", ""), deferred=True
        ),
        NDRFullPointerField(
            NDRPacketField("aipServerAddrs", PIP4_ARRAY(), PIP4_ARRAY), deferred=True
        ),
        NDRFullPointerField(
            NDRPacketField("aipListenAddrs", PIP4_ARRAY(), PIP4_ARRAY), deferred=True
        ),
        NDRFullPointerField(
            NDRPacketField("aipForwarders", PIP4_ARRAY(), PIP4_ARRAY), deferred=True
        ),
        NDRFullPointerField(
            NDRPacketField("aipLogFilter", PIP4_ARRAY(), PIP4_ARRAY), deferred=True
        ),
        NDRFullPointerField(
            NDRConfVarStrNullFieldUtf16("pwszLogFilePath", ""), deferred=True
        ),
        NDRFullPointerField(NDRConfVarStrNullField("pszDomainName", ""), deferred=True),
        NDRFullPointerField(NDRConfVarStrNullField("pszForestName", ""), deferred=True),
        NDRFullPointerField(
            NDRConfVarStrNullField("pszDomainDirectoryPartition", ""), deferred=True
        ),
        NDRFullPointerField(
            NDRConfVarStrNullField("pszForestDirectoryPartition", ""), deferred=True
        ),
        NDRFieldListField(
            "pExtensions", [], NDRConfStrLenField("", ""), length_is=lambda _: 6
        ),
        NDRIntField("dwLogLevel", 0),
        NDRIntField("dwDebugLevel", 0),
        NDRIntField("dwForwardTimeout", 0),
        NDRIntField("dwRpcProtocol", 0),
        NDRIntField("dwNameCheckFlag", 0),
        NDRIntField("cAddressAnswerLimit", 0),
        NDRIntField("dwRecursionRetry", 0),
        NDRIntField("dwRecursionTimeout", 0),
        NDRIntField("dwMaxCacheTtl", 0),
        NDRIntField("dwDsPollingInterval", 0),
        NDRIntField("dwLocalNetPriorityNetMask", 0),
        NDRIntField("dwScavengingInterval", 0),
        NDRIntField("dwDefaultRefreshInterval", 0),
        NDRIntField("dwDefaultNoRefreshInterval", 0),
        NDRIntField("dwLastScavengeTime", 0),
        NDRIntField("dwEventLogLevel", 0),
        NDRIntField("dwLogFileMaxSize", 0),
        NDRIntField("dwDsForestVersion", 0),
        NDRIntField("dwDsDomainVersion", 0),
        NDRIntField("dwDsDsaVersion", 0),
        NDRFieldListField(
            "dwReserveArray", [], NDRIntField("", 0), length_is=lambda _: 4
        ),
        NDRByteField("fAutoReverseZones", 0),
        NDRByteField("fAutoCacheUpdate", 0),
        NDRByteField("fRecurseAfterForwarding", 0),
        NDRByteField("fForwardDelegations", 0),
        NDRByteField("fNoRecursion", 0),
        NDRByteField("fSecureResponses", 0),
        NDRByteField("fRoundRobin", 0),
        NDRByteField("fLocalNetPriority", 0),
        NDRByteField("fBindSecondaries", 0),
        NDRByteField("fWriteAuthorityNs", 0),
        NDRByteField("fStrictFileParsing", 0),
        NDRByteField("fLooseWildcarding", 0),
        NDRByteField("fDefaultAgingState", 0),
        StrFixedLenField("fReserveArray", "", length=15),
    ]


class PDNS_RPC_FORWARDERS_DOTNET(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRIntField("fRecurseAfterForwarding", 0),
        NDRIntField("dwForwardTimeout", 0),
        NDRFullPointerField(
            NDRPacketField("aipForwarders", PIP4_ARRAY(), PIP4_ARRAY), deferred=True
        ),
    ]


class PDNS_RPC_ZONE(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRFullPointerField(
            NDRConfVarStrNullFieldUtf16("pszZoneName", ""), deferred=True
        ),
        NDRIntField("Flags", 0),
        NDRByteField("ZoneType", 0),
        NDRByteField("Version", 0),
        NDRIntField("dwDpFlags", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszDpFqdn", ""), deferred=True),
    ]


class PDNS_RPC_ZONE_INFO_DOTNET(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszZoneName", ""), deferred=True),
        NDRIntField("dwZoneType", 0),
        NDRIntField("fReverse", 0),
        NDRIntField("fAllowUpdate", 0),
        NDRIntField("fPaused", 0),
        NDRIntField("fShutdown", 0),
        NDRIntField("fAutoCreated", 0),
        NDRIntField("fUseDatabase", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszDataFile", ""), deferred=True),
        NDRFullPointerField(
            NDRPacketField("aipMasters", PIP4_ARRAY(), PIP4_ARRAY), deferred=True
        ),
        NDRIntField("fSecureSecondaries", 0),
        NDRIntField("fNotifyLevel", 0),
        NDRFullPointerField(
            NDRPacketField("aipSecondaries", PIP4_ARRAY(), PIP4_ARRAY), deferred=True
        ),
        NDRFullPointerField(
            NDRPacketField("aipNotify", PIP4_ARRAY(), PIP4_ARRAY), deferred=True
        ),
        NDRIntField("fUseWins", 0),
        NDRIntField("fUseNbstat", 0),
        NDRIntField("fAging", 0),
        NDRIntField("dwNoRefreshInterval", 0),
        NDRIntField("dwRefreshInterval", 0),
        NDRIntField("dwAvailForScavengeTime", 0),
        NDRFullPointerField(
            NDRPacketField("aipScavengeServers", PIP4_ARRAY(), PIP4_ARRAY),
            deferred=True,
        ),
        NDRIntField("dwForwarderTimeout", 0),
        NDRIntField("fForwarderSlave", 0),
        NDRFullPointerField(
            NDRPacketField("aipLocalMasters", PIP4_ARRAY(), PIP4_ARRAY), deferred=True
        ),
        NDRIntField("dwDpFlags", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszDpFqdn", ""), deferred=True),
        NDRFullPointerField(
            NDRConfVarStrNullFieldUtf16("pwszZoneDn", ""), deferred=True
        ),
        NDRIntField("dwLastSuccessfulSoaCheck", 0),
        NDRIntField("dwLastSuccessfulXfr", 0),
        NDRIntField("dwReserved1", 0),
        NDRIntField("dwReserved2", 0),
        NDRIntField("dwReserved3", 0),
        NDRIntField("dwReserved4", 0),
        NDRIntField("dwReserved5", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pReserved1", ""), deferred=True),
        NDRFullPointerField(NDRConfVarStrNullField("pReserved2", ""), deferred=True),
        NDRFullPointerField(NDRConfVarStrNullField("pReserved3", ""), deferred=True),
        NDRFullPointerField(NDRConfVarStrNullField("pReserved4", ""), deferred=True),
    ]


class PDNS_RPC_ZONE_SECONDARIES_DOTNET(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRIntField("fSecureSecondaries", 0),
        NDRIntField("fNotifyLevel", 0),
        NDRFullPointerField(
            NDRPacketField("aipSecondaries", PIP4_ARRAY(), PIP4_ARRAY), deferred=True
        ),
        NDRFullPointerField(
            NDRPacketField("aipNotify", PIP4_ARRAY(), PIP4_ARRAY), deferred=True
        ),
    ]


class PDNS_RPC_ZONE_DATABASE(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRIntField("fDsIntegrated", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszFileName", ""), deferred=True),
    ]


class PDNS_RPC_ZONE_CREATE_INFO_DOTNET(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszZoneName", ""), deferred=True),
        NDRIntField("dwZoneType", 0),
        NDRIntField("fAllowUpdate", 0),
        NDRIntField("fAging", 0),
        NDRIntField("dwFlags", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszDataFile", ""), deferred=True),
        NDRIntField("fDsIntegrated", 0),
        NDRIntField("fLoadExisting", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszAdmin", ""), deferred=True),
        NDRFullPointerField(
            NDRPacketField("aipMasters", PIP4_ARRAY(), PIP4_ARRAY), deferred=True
        ),
        NDRFullPointerField(
            NDRPacketField("aipSecondaries", PIP4_ARRAY(), PIP4_ARRAY), deferred=True
        ),
        NDRIntField("fSecureSecondaries", 0),
        NDRIntField("fNotifyLevel", 0),
        NDRIntField("dwTimeout", 0),
        NDRIntField("fRecurseAfterForwarding", 0),
        NDRIntField("dwDpFlags", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszDpFqdn", ""), deferred=True),
        NDRFieldListField("dwReserved", [], NDRIntField("", 0), length_is=lambda _: 32),
    ]


class PDNS_RPC_ZONE_DOTNET(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRFullPointerField(
            NDRConfVarStrNullFieldUtf16("pszZoneName", ""), deferred=True
        ),
        NDRIntField("Flags", 0),
        NDRByteField("ZoneType", 0),
        NDRByteField("Version", 0),
        NDRIntField("dwDpFlags", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszDpFqdn", ""), deferred=True),
    ]


class PDNS_RPC_ZONE_LIST(NDRPacket):
    ALIGNMENT = (4, 8)
    DEPORTED_CONFORMANTS = ["ZoneArray"]
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRIntField("dwZoneCount", None, size_of="ZoneArray"),
        NDRConfPacketListField(
            "ZoneArray",
            [],
            PDNS_RPC_ZONE_DOTNET,
            size_is=lambda pkt: pkt.dwZoneCount,
            conformant_in_struct=True,
            ptr_pack=True,
        ),
    ]


class PDNS_RPC_ZONE_EXPORT_INFO(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRFullPointerField(
            NDRConfVarStrNullField("pszZoneExportFile", ""), deferred=True
        ),
    ]


class PDNS_RPC_DP_REPLICA(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRFullPointerField(
            NDRConfVarStrNullFieldUtf16("pszReplicaDn", ""), deferred=True
        )
    ]


class PDNS_RPC_DP_INFO(NDRPacket):
    ALIGNMENT = (4, 8)
    DEPORTED_CONFORMANTS = ["ReplicaArray"]
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszDpFqdn", ""), deferred=True),
        NDRFullPointerField(NDRConfVarStrNullFieldUtf16("pszDpDn", ""), deferred=True),
        NDRFullPointerField(NDRConfVarStrNullFieldUtf16("pszCrDn", ""), deferred=True),
        NDRIntField("dwFlags", 0),
        NDRIntField("dwZoneCount", 0),
        NDRIntField("dwState", 0),
        NDRFieldListField("dwReserved", [], NDRIntField("", 0), length_is=lambda _: 3),
        NDRFieldListField(
            "pwszReserved", [], NDRConfStrLenFieldUtf16("", ""), length_is=lambda _: 3
        ),
        NDRIntField("dwReplicaCount", None, size_of="ReplicaArray"),
        NDRConfPacketListField(
            "ReplicaArray",
            [],
            PDNS_RPC_DP_REPLICA,
            size_is=lambda pkt: pkt.dwReplicaCount,
            conformant_in_struct=True,
            ptr_pack=True,
        ),
    ]


class PDNS_RPC_DP_ENUM(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszDpFqdn", ""), deferred=True),
        NDRIntField("dwFlags", 0),
        NDRIntField("dwZoneCount", 0),
    ]


class PDNS_RPC_DP_LIST(NDRPacket):
    ALIGNMENT = (4, 8)
    DEPORTED_CONFORMANTS = ["DpArray"]
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRIntField("dwDpCount", None, size_of="DpArray"),
        NDRConfPacketListField(
            "DpArray",
            [],
            PDNS_RPC_DP_ENUM,
            size_is=lambda pkt: pkt.dwDpCount,
            conformant_in_struct=True,
            ptr_pack=True,
        ),
    ]


class PDNS_RPC_ENLIST_DP(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszDpFqdn", ""), deferred=True),
        NDRIntField("dwOperation", 0),
    ]


class PDNS_RPC_ZONE_CHANGE_DP(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRFullPointerField(
            NDRConfVarStrNullField("pszDestPartition", ""), deferred=True
        ),
    ]


class PDNS_RPC_ENUM_ZONES_FILTER(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRIntField("dwFilter", 0),
        NDRFullPointerField(
            NDRConfVarStrNullField("pszPartitionFqdn", ""), deferred=True
        ),
        NDRFullPointerField(
            NDRConfVarStrNullField("pszQueryString", ""), deferred=True
        ),
        NDRFieldListField(
            "pszReserved", [], NDRConfStrLenField("", ""), length_is=lambda _: 6
        ),
    ]


class DNS_ADDR(NDRPacket):
    ALIGNMENT = (4, 4)
    fields_desc = [
        StrFixedLenField("MaxSa", "", length=32),
        NDRFieldListField(
            "DnsAddrUserDword", [], NDRIntField("", 0), length_is=lambda _: 8
        ),
    ]


class PDNS_ADDR_ARRAY(NDRPacket):
    ALIGNMENT = (4, 8)
    DEPORTED_CONFORMANTS = ["AddrArray"]
    fields_desc = [
        NDRIntField("MaxCount", 0),
        NDRIntField("AddrCount", None, size_of="AddrArray"),
        NDRIntField("Tag", 0),
        NDRShortField("Family", 0),
        NDRShortField("WordReserved", 0),
        NDRIntField("Flags", 0),
        NDRIntField("MatchFlag", 0),
        NDRIntField("Reserved1", 0),
        NDRIntField("Reserved2", 0),
        NDRConfPacketListField(
            "AddrArray",
            [],
            DNS_ADDR,
            size_is=lambda pkt: pkt.AddrCount,
            conformant_in_struct=True,
        ),
    ]


class PDNS_RPC_SERVER_INFO(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRIntField("dwVersion", 0),
        NDRByteField("fBootMethod", 0),
        NDRByteField("fAdminConfigured", 0),
        NDRByteField("fAllowUpdate", 0),
        NDRByteField("fDsAvailable", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszServerName", ""), deferred=True),
        NDRFullPointerField(
            NDRConfVarStrNullFieldUtf16("pszDsContainer", ""), deferred=True
        ),
        NDRFullPointerField(
            NDRPacketField("aipServerAddrs", PDNS_ADDR_ARRAY(), PDNS_ADDR_ARRAY),
            deferred=True,
        ),
        NDRFullPointerField(
            NDRPacketField("aipListenAddrs", PDNS_ADDR_ARRAY(), PDNS_ADDR_ARRAY),
            deferred=True,
        ),
        NDRFullPointerField(
            NDRPacketField("aipForwarders", PDNS_ADDR_ARRAY(), PDNS_ADDR_ARRAY),
            deferred=True,
        ),
        NDRFullPointerField(
            NDRPacketField("aipLogFilter", PDNS_ADDR_ARRAY(), PDNS_ADDR_ARRAY),
            deferred=True,
        ),
        NDRFullPointerField(
            NDRConfVarStrNullFieldUtf16("pwszLogFilePath", ""), deferred=True
        ),
        NDRFullPointerField(NDRConfVarStrNullField("pszDomainName", ""), deferred=True),
        NDRFullPointerField(NDRConfVarStrNullField("pszForestName", ""), deferred=True),
        NDRFullPointerField(
            NDRConfVarStrNullField("pszDomainDirectoryPartition", ""), deferred=True
        ),
        NDRFullPointerField(
            NDRConfVarStrNullField("pszForestDirectoryPartition", ""), deferred=True
        ),
        NDRFieldListField(
            "pExtensions", [], NDRConfStrLenField("", ""), length_is=lambda _: 6
        ),
        NDRIntField("dwLogLevel", 0),
        NDRIntField("dwDebugLevel", 0),
        NDRIntField("dwForwardTimeout", 0),
        NDRIntField("dwRpcProtocol", 0),
        NDRIntField("dwNameCheckFlag", 0),
        NDRIntField("cAddressAnswerLimit", 0),
        NDRIntField("dwRecursionRetry", 0),
        NDRIntField("dwRecursionTimeout", 0),
        NDRIntField("dwMaxCacheTtl", 0),
        NDRIntField("dwDsPollingInterval", 0),
        NDRIntField("dwLocalNetPriorityNetMask", 0),
        NDRIntField("dwScavengingInterval", 0),
        NDRIntField("dwDefaultRefreshInterval", 0),
        NDRIntField("dwDefaultNoRefreshInterval", 0),
        NDRIntField("dwLastScavengeTime", 0),
        NDRIntField("dwEventLogLevel", 0),
        NDRIntField("dwLogFileMaxSize", 0),
        NDRIntField("dwDsForestVersion", 0),
        NDRIntField("dwDsDomainVersion", 0),
        NDRIntField("dwDsDsaVersion", 0),
        NDRByteField("fReadOnlyDC", 0),
        NDRFieldListField(
            "dwReserveArray", [], NDRIntField("", 0), length_is=lambda _: 3
        ),
        NDRByteField("fAutoReverseZones", 0),
        NDRByteField("fAutoCacheUpdate", 0),
        NDRByteField("fRecurseAfterForwarding", 0),
        NDRByteField("fForwardDelegations", 0),
        NDRByteField("fNoRecursion", 0),
        NDRByteField("fSecureResponses", 0),
        NDRByteField("fRoundRobin", 0),
        NDRByteField("fLocalNetPriority", 0),
        NDRByteField("fBindSecondaries", 0),
        NDRByteField("fWriteAuthorityNs", 0),
        NDRByteField("fStrictFileParsing", 0),
        NDRByteField("fLooseWildcarding", 0),
        NDRByteField("fDefaultAgingState", 0),
        StrFixedLenField("fReserveArray", "", length=15),
    ]


class PDNS_RPC_ZONE_CREATE_INFO(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszZoneName", ""), deferred=True),
        NDRIntField("dwZoneType", 0),
        NDRIntField("fAllowUpdate", 0),
        NDRIntField("fAging", 0),
        NDRIntField("dwFlags", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszDataFile", ""), deferred=True),
        NDRIntField("fDsIntegrated", 0),
        NDRIntField("fLoadExisting", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszAdmin", ""), deferred=True),
        NDRFullPointerField(
            NDRPacketField("aipMasters", PDNS_ADDR_ARRAY(), PDNS_ADDR_ARRAY),
            deferred=True,
        ),
        NDRFullPointerField(
            NDRPacketField("aipSecondaries", PDNS_ADDR_ARRAY(), PDNS_ADDR_ARRAY),
            deferred=True,
        ),
        NDRIntField("fSecureSecondaries", 0),
        NDRIntField("fNotifyLevel", 0),
        NDRIntField("dwTimeout", 0),
        NDRIntField("fRecurseAfterForwarding", 0),
        NDRIntField("dwDpFlags", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszDpFqdn", ""), deferred=True),
        NDRFieldListField("dwReserved", [], NDRIntField("", 0), length_is=lambda _: 32),
    ]


class PDNS_RPC_FORWARDERS(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRIntField("fRecurseAfterForwarding", 0),
        NDRIntField("dwForwardTimeout", 0),
        NDRFullPointerField(
            NDRPacketField("aipForwarders", PDNS_ADDR_ARRAY(), PDNS_ADDR_ARRAY),
            deferred=True,
        ),
    ]


class PDNS_RPC_ZONE_SECONDARIES(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRIntField("fSecureSecondaries", 0),
        NDRIntField("fNotifyLevel", 0),
        NDRFullPointerField(
            NDRPacketField("aipSecondaries", PDNS_ADDR_ARRAY(), PDNS_ADDR_ARRAY),
            deferred=True,
        ),
        NDRFullPointerField(
            NDRPacketField("aipNotify", PDNS_ADDR_ARRAY(), PDNS_ADDR_ARRAY),
            deferred=True,
        ),
    ]


class PDNS_RPC_IP_VALIDATE(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRIntField("dwContext", 0),
        NDRIntField("dwReserved1", 0),
        NDRFullPointerField(
            NDRConfVarStrNullField("pszContextName", ""), deferred=True
        ),
        NDRFullPointerField(
            NDRPacketField("aipValidateAddrs", PDNS_ADDR_ARRAY(), PDNS_ADDR_ARRAY),
            deferred=True,
        ),
    ]


class PDNS_RPC_ZONE_INFO(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszZoneName", ""), deferred=True),
        NDRIntField("dwZoneType", 0),
        NDRIntField("fReverse", 0),
        NDRIntField("fAllowUpdate", 0),
        NDRIntField("fPaused", 0),
        NDRIntField("fShutdown", 0),
        NDRIntField("fAutoCreated", 0),
        NDRIntField("fUseDatabase", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszDataFile", ""), deferred=True),
        NDRFullPointerField(
            NDRPacketField("aipMasters", PDNS_ADDR_ARRAY(), PDNS_ADDR_ARRAY),
            deferred=True,
        ),
        NDRIntField("fSecureSecondaries", 0),
        NDRIntField("fNotifyLevel", 0),
        NDRFullPointerField(
            NDRPacketField("aipSecondaries", PDNS_ADDR_ARRAY(), PDNS_ADDR_ARRAY),
            deferred=True,
        ),
        NDRFullPointerField(
            NDRPacketField("aipNotify", PDNS_ADDR_ARRAY(), PDNS_ADDR_ARRAY),
            deferred=True,
        ),
        NDRIntField("fUseWins", 0),
        NDRIntField("fUseNbstat", 0),
        NDRIntField("fAging", 0),
        NDRIntField("dwNoRefreshInterval", 0),
        NDRIntField("dwRefreshInterval", 0),
        NDRIntField("dwAvailForScavengeTime", 0),
        NDRFullPointerField(
            NDRPacketField("aipScavengeServers", PDNS_ADDR_ARRAY(), PDNS_ADDR_ARRAY),
            deferred=True,
        ),
        NDRIntField("dwForwarderTimeout", 0),
        NDRIntField("fForwarderSlave", 0),
        NDRFullPointerField(
            NDRPacketField("aipLocalMasters", PDNS_ADDR_ARRAY(), PDNS_ADDR_ARRAY),
            deferred=True,
        ),
        NDRIntField("dwDpFlags", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszDpFqdn", ""), deferred=True),
        NDRFullPointerField(
            NDRConfVarStrNullFieldUtf16("pwszZoneDn", ""), deferred=True
        ),
        NDRIntField("dwLastSuccessfulSoaCheck", 0),
        NDRIntField("dwLastSuccessfulXfr", 0),
        NDRIntField("fQueuedForBackgroundLoad", 0),
        NDRIntField("fBackgroundLoadInProgress", 0),
        NDRSignedIntField("fReadOnlyZone", 0),
        NDRIntField("dwLastXfrAttempt", 0),
        NDRIntField("dwLastXfrResult", 0),
    ]


class PDNS_RPC_AUTOCONFIGURE(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRIntField("dwAutoConfigFlags", 0),
        NDRIntField("dwReserved1", 0),
        NDRFullPointerField(
            NDRConfVarStrNullField("pszNewDomainName", ""), deferred=True
        ),
    ]


class PDNS_RPC_UTF8_STRING_LIST(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwCount", None, size_of="pszStrings"),
        NDRFullPointerField(
            NDRConfFieldListField(
                "pszStrings",
                [],
                NDRFullPointerField(NDRSignedByteField("pszStrings", 0), deferred=True),
                size_is=lambda pkt: pkt.dwCount,
            ),
            deferred=True,
        ),
    ]


class PDNS_RPC_UNICODE_STRING_LIST(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwCount", None, size_of="pwszStrings"),
        NDRFullPointerField(
            NDRConfFieldListField(
                "pwszStrings",
                [],
                NDRFullPointerField(NDRShortField("pwszStrings", 0), deferred=True),
                size_is=lambda pkt: pkt.dwCount,
            ),
            deferred=True,
        ),
    ]


class GUID(NDRPacket):
    ALIGNMENT = (4, 4)
    fields_desc = [
        NDRIntField("Data1", 0),
        NDRShortField("Data2", 0),
        NDRShortField("Data3", 0),
        StrFixedLenField("Data4", "", length=8),
    ]


class PDNS_RPC_SKD(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRPacketField("Guid", GUID(), GUID),
        NDRFullPointerField(
            NDRConfVarStrNullFieldUtf16("pwszKeyStorageProvider", ""), deferred=True
        ),
        NDRSignedIntField("fStoreKeysInDirectory", 0),
        NDRSignedIntField("fIsKSK", 0),
        NDRByteField("bSigningAlgorithm", 0),
        NDRIntField("dwKeyLength", 0),
        NDRIntField("dwInitialRolloverOffset", 0),
        NDRIntField("dwDNSKEYSignatureValidityPeriod", 0),
        NDRIntField("dwDSSignatureValidityPeriod", 0),
        NDRIntField("dwStandardSignatureValidityPeriod", 0),
        NDRIntField("dwRolloverType", 0),
        NDRIntField("dwRolloverPeriod", 0),
        NDRIntField("dwNextRolloverAction", 0),
        NDRIntField("dwReserved", 0),
    ]


class PDNS_RPC_SKD_LIST(NDRPacket):
    ALIGNMENT = (4, 8)
    DEPORTED_CONFORMANTS = ["SkdArray"]
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRIntField("dwCount", None, size_of="SkdArray"),
        NDRConfPacketListField(
            "SkdArray",
            [],
            PDNS_RPC_SKD,
            size_is=lambda pkt: pkt.dwCount,
            conformant_in_struct=True,
            ptr_pack=True,
        ),
    ]


class FILETIME(NDRPacket):
    ALIGNMENT = (4, 4)
    fields_desc = [NDRIntField("dwLowDateTime", 0), NDRIntField("dwHighDateTime", 0)]


class PDNS_RPC_SKD_STATE(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRPacketField("Guid", GUID(), GUID),
        NDRPacketField("ftLastRolloverTime", FILETIME(), FILETIME),
        NDRPacketField("ftNextRolloverTime", FILETIME(), FILETIME),
        NDRIntField("dwState", 0),
        NDRIntField("dwCurrentRolloverStatus", 0),
        NDRFullPointerField(
            NDRConfVarStrNullFieldUtf16("pwszActiveKey", ""), deferred=True
        ),
        NDRFullPointerField(
            NDRConfVarStrNullFieldUtf16("pwszStandbyKey", ""), deferred=True
        ),
        NDRFullPointerField(
            NDRConfVarStrNullFieldUtf16("pwszNextKey", ""), deferred=True
        ),
        NDRIntField("dwReserved", 0),
    ]


class PDNS_RPC_SIGNING_VALIDATION_ERROR(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRPacketField("guidSKD", GUID(), GUID),
        NDRFullPointerField(
            NDRConfVarStrNullFieldUtf16("pwszSigningKeyPointerString", ""),
            deferred=True,
        ),
        NDRIntField("dwExtendedError", 0),
        NDRIntField("dwReserved", 0),
    ]


class TRUSTPOINT_STATE(IntEnum):
    TRUSTPOINT_STATE_INITIALIZED = 1
    TRUSTPOINT_STATE_DSPENDING = 2
    TRUSTPOINT_STATE_ACTIVE = 3
    TRUSTPOINT_STATE_DELETE_PENDING = 4
    TRUSTPOINT_STATE_DELETED = 5


class PDNS_RPC_TRUST_POINT(NDRPacket):
    ALIGNMENT = (8, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRFullPointerField(
            NDRConfVarStrNullField("pszTrustPointName", ""), deferred=True
        ),
        NDRInt3264EnumField("eTrustPointState", 0, TRUSTPOINT_STATE),
        NDRSignedLongField("i64LastActiveRefreshTime", 0),
        NDRSignedLongField("i64NextActiveRefreshTime", 0),
        NDRSignedLongField("i64LastSuccessfulActiveRefreshTime", 0),
        NDRIntField("dwLastActiveRefreshResult", 0),
        NDRIntField("dwReserved", 0),
    ]


class PDNS_RPC_TRUST_POINT_LIST(NDRPacket):
    ALIGNMENT = (4, 8)
    DEPORTED_CONFORMANTS = ["TrustPointArray"]
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRIntField("dwTrustPointCount", None, size_of="TrustPointArray"),
        NDRConfPacketListField(
            "TrustPointArray",
            [],
            PDNS_RPC_TRUST_POINT,
            size_is=lambda pkt: pkt.dwTrustPointCount,
            conformant_in_struct=True,
            ptr_pack=True,
        ),
    ]


class TRUSTANCHOR_STATE(IntEnum):
    TRUSTANCHOR_STATE_INITIALIZED = 1
    TRUSTANCHOR_STATE_DSPENDING = 2
    TRUSTANCHOR_STATE_DSINVALID = 3
    TRUSTANCHOR_STATE_ADDPEND = 4
    TRUSTANCHOR_STATE_VALID = 5
    TRUSTANCHOR_STATE_MISSING = 6
    TRUSTANCHOR_STATE_REVOKED = 7
    TRUSTANCHOR_STATE_DELETED = 8


class PDNS_RPC_TRUST_ANCHOR(NDRPacket):
    ALIGNMENT = (8, 8)
    DEPORTED_CONFORMANTS = ["RRData"]
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRShortField("wTrustAnchorType", 0),
        NDRShortField("wKeyTag", 0),
        NDRShortField("wRRLength", None, size_of="RRData"),
        NDRInt3264EnumField("eTrustAnchorState", 0, TRUSTANCHOR_STATE),
        NDRSignedLongField("i64EnteredStateTime", 0),
        NDRSignedLongField("i64NextStateTime", 0),
        NDRIntField("dwReserved", 0),
        NDRConfStrLenField(
            "RRData", "", size_is=lambda pkt: pkt.wRRLength, conformant_in_struct=True
        ),
    ]


class PDNS_RPC_TRUST_ANCHOR_LIST(NDRPacket):
    ALIGNMENT = (4, 8)
    DEPORTED_CONFORMANTS = ["TrustAnchorArray"]
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRIntField("dwTrustAnchorCount", None, size_of="TrustAnchorArray"),
        NDRConfPacketListField(
            "TrustAnchorArray",
            [],
            PDNS_RPC_TRUST_ANCHOR,
            size_is=lambda pkt: pkt.dwTrustAnchorCount,
            conformant_in_struct=True,
            ptr_pack=True,
        ),
    ]


class KeySignScope(IntEnum):
    SIGN_SCOPE_DEFAULT = 1
    SIGN_SCOPE_DNSKEY_ONLY = 2
    SIGN_SCOPE_ALL_RECORDS = 3
    SIGN_SCOPE_ADD_ONLY = 4
    SIGN_SCOPE_DO_NOT_PUBLISH = 5
    SIGN_SCOPE_REVOKED = 6


class PDNS_RPC_SKD_STATE_EX(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRPacketField("Guid", GUID(), GUID),
        NDRIntField("dwCurrentRollState", 0),
        NDRIntField("fManualTrigger", 0),
        NDRIntField("dwPreRollEventFired", 0),
        NDRPacketField("ftNextKeyGenerationTime", FILETIME(), FILETIME),
        NDRIntField("dwRevokedOrSwappedDnskeysLength", 0),
        NDRFullPointerField(
            NDRByteField("pRevokedOrSwappedDnskeysBuffer", 0), deferred=True
        ),
        NDRIntField("dwFinalDnskeysLength", 0),
        NDRFullPointerField(NDRByteField("pFinalDnskeys", 0), deferred=True),
        NDRInt3264EnumField("eActiveKeyScope", 0, KeySignScope),
        NDRInt3264EnumField("eStandByKeyScope", 0, KeySignScope),
        NDRInt3264EnumField("eNextKeyScope", 0, KeySignScope),
    ]


class PDNS_RPC_ZONE_SKD(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRFullPointerField(
            NDRPacketField("pSkd", PDNS_RPC_SKD(), PDNS_RPC_SKD), deferred=True
        ),
        NDRFullPointerField(
            NDRPacketField("pSkdState", PDNS_RPC_SKD_STATE(), PDNS_RPC_SKD_STATE),
            deferred=True,
        ),
        NDRFullPointerField(
            NDRPacketField(
                "pSkdStateEx", PDNS_RPC_SKD_STATE_EX(), PDNS_RPC_SKD_STATE_EX
            ),
            deferred=True,
        ),
    ]


class PDNS_RPC_ZONE_DNSSEC_SETTINGS(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved0", 0),
        NDRIntField("fIsSigned", 0),
        NDRIntField("fSignWithNSEC3", 0),
        NDRIntField("fNSEC3OptOut", 0),
        NDRIntField("dwMaintainTrustAnchor", 0),
        NDRIntField("fParentHasSecureDelegation", 0),
        NDRIntField("dwDSRecordAlgorithms", 0),
        NDRIntField("fRFC5011KeyRollovers", 0),
        NDRByteField("bNSEC3HashAlgorithm", 0),
        NDRByteField("bNSEC3RandomSaltLength", 0),
        NDRShortField("wNSEC3IterationCount", 0),
        NDRFullPointerField(NDRShortField("pwszNSEC3UserSalt", 0), deferred=True),
        NDRIntField("dwDNSKEYRecordSetTtl", 0),
        NDRIntField("dwDSRecordSetTtl", 0),
        NDRIntField("dwSignatureInceptionOffset", 0),
        NDRIntField("dwSecureDelegationPollingPeriod", 0),
        NDRIntField("dwPropagationTime", 0),
        NDRIntField("cbNSEC3CurrentSaltLength", 0),
        NDRFullPointerField(NDRByteField("pbNSEC3CurrentSalt", 0), deferred=True),
        NDRPacketField("CurrentRollingSKDGuid", GUID(), GUID),
        NDRIntField("dwBufferLength", 0),
        NDRFullPointerField(NDRByteField("pBuffer", 0), deferred=True),
        NDRIntField("dwCount", 0),
        PacketListField("pZoneSkdArray", [], PDNS_RPC_ZONE_SKD, count_from=lambda _: 1),
    ]


class PDNS_RPC_ENUM_ZONE_SCOPE_LIST(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwZoneScopeCount", 0),
        StrFixedLenFieldUtf16("ZoneScopeArray", "", length=1 * 2),
    ]


class DNS_SYSTEMTIME(NDRPacket):
    ALIGNMENT = (2, 2)
    fields_desc = [
        NDRShortField("wYear", 0),
        NDRShortField("wMonth", 0),
        NDRShortField("wDayOfWeek", 0),
        NDRShortField("wDay", 0),
        NDRShortField("wHour", 0),
        NDRShortField("wMinute", 0),
        NDRShortField("wSecond", 0),
        NDRShortField("wMilliseconds", 0),
    ]


class DNSSRV_ZONE_TIME_STATS(NDRPacket):
    ALIGNMENT = (2, 2)
    fields_desc = [
        NDRPacketField("StatsCollectionStartTime", DNS_SYSTEMTIME(), DNS_SYSTEMTIME)
    ]


class DNS_ZONE_STATS_TYPE(IntEnum):
    ZONE_STATS_TYPE_RECORD_A = 0
    ZONE_STATS_TYPE_RECORD_AAAA = 1
    ZONE_STATS_TYPE_RECORD_PTR = 2
    ZONE_STATS_TYPE_RECORD_CNAME = 3
    ZONE_STATS_TYPE_RECORD_MX = 4
    ZONE_STATS_TYPE_RECORD_AFSDB = 5
    ZONE_STATS_TYPE_RECORD_ATMA = 6
    ZONE_STATS_TYPE_RECORD_DHCID = 7
    ZONE_STATS_TYPE_RECORD_DNAME = 8
    ZONE_STATS_TYPE_RECORD_HINFO = 9
    ZONE_STATS_TYPE_RECORD_ISDN = 10
    ZONE_STATS_TYPE_RECORD_MG = 11
    ZONE_STATS_TYPE_RECORD_MB = 12
    ZONE_STATS_TYPE_RECORD_MINFO = 13
    ZONE_STATS_TYPE_RECORD_NAPTR = 14
    ZONE_STATS_TYPE_RECORD_NXT = 15
    ZONE_STATS_TYPE_RECORD_KEY = 16
    ZONE_STATS_TYPE_RECORD_MR = 17
    ZONE_STATS_TYPE_RECORD_RP = 18
    ZONE_STATS_TYPE_RECORD_RT = 19
    ZONE_STATS_TYPE_RECORD_SRV = 20
    ZONE_STATS_TYPE_RECORD_SIG = 21
    ZONE_STATS_TYPE_RECORD_TEXT = 22
    ZONE_STATS_TYPE_RECORD_WKS = 23
    ZONE_STATS_TYPE_RECORD_X25 = 24
    ZONE_STATS_TYPE_RECORD_DNSKEY = 25
    ZONE_STATS_TYPE_RECORD_DS = 26
    ZONE_STATS_TYPE_RECORD_NS = 27
    ZONE_STATS_TYPE_RECORD_SOA = 28
    ZONE_STATS_TYPE_RECORD_TLSA = 29
    ZONE_STATS_TYPE_RECORD_ALL = 30
    ZONE_STATS_TYPE_RECORD_OTHERS = 31
    ZONE_STATS_TYPE_TRANSFER_AXFR = 32
    ZONE_STATS_TYPE_TRANSFER_IXFR = 33
    ZONE_STATS_TYPE_UPDATE = 34
    ZONE_STATS_TYPE_RRL = 35
    MAX_ZONE_STATS_TYPES = 36


class DNSSRV_ZONE_QUERY_STATS(NDRPacket):
    ALIGNMENT = (8, 8)
    fields_desc = [
        NDRInt3264EnumField("RecordType", 0, DNS_ZONE_STATS_TYPE),
        NDRLongField("QueriesResponded", 0),
        NDRLongField("QueriesReceived", 0),
        NDRLongField("QueriesFailure", 0),
        NDRLongField("QueriesNameError", 0),
    ]


class DNSSRV_ZONE_TRANSFER_STATS(NDRPacket):
    ALIGNMENT = (8, 8)
    fields_desc = [
        NDRInt3264EnumField("TransferType", 0, DNS_ZONE_STATS_TYPE),
        NDRLongField("RequestReceived", 0),
        NDRLongField("RequestSent", 0),
        NDRLongField("ResponseReceived", 0),
        NDRLongField("SuccessReceived", 0),
        NDRLongField("SuccessSent", 0),
    ]


class DNSSRV_ZONE_UPDATE_STATS(NDRPacket):
    ALIGNMENT = (8, 8)
    fields_desc = [
        NDRInt3264EnumField("Type", 0, DNS_ZONE_STATS_TYPE),
        NDRLongField("DynamicUpdateReceived", 0),
        NDRLongField("DynamicUpdateRejected", 0),
    ]


class DNSSRV_ZONE_RRL_STATS(NDRPacket):
    ALIGNMENT = (4, 4)
    fields_desc = [
        NDRInt3264EnumField("Type", 0, DNS_ZONE_STATS_TYPE),
        NDRIntField("TotalResponsesSent", 0),
        NDRIntField("TotalResponsesDropped", 0),
        NDRIntField("TotalResponsesTruncated", 0),
        NDRIntField("TotalResponsesLeaked", 0),
    ]


class PDNS_RPC_ZONE_STATS_V1(NDRPacket):
    ALIGNMENT = (8, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRPacketField(
            "ZoneTimeStats", DNSSRV_ZONE_TIME_STATS(), DNSSRV_ZONE_TIME_STATS
        ),
        PacketListField(
            "ZoneQueryStats", [], DNSSRV_ZONE_QUERY_STATS, count_from=lambda _: 32
        ),
        PacketListField(
            "ZoneTransferStats", [], DNSSRV_ZONE_TRANSFER_STATS, count_from=lambda _: 2
        ),
        NDRPacketField(
            "ZoneUpdateStats", DNSSRV_ZONE_UPDATE_STATS(), DNSSRV_ZONE_UPDATE_STATS
        ),
        NDRPacketField("ZoneRRLStats", DNSSRV_ZONE_RRL_STATS(), DNSSRV_ZONE_RRL_STATS),
    ]


class PDNS_RPC_ZONE_SCOPE_CREATE_INFO_V1(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwFlags", 0),
        NDRFullPointerField(NDRShortField("pwszScopeName", 0), deferred=True),
    ]


class PDNS_RPC_ZONE_SCOPE_INFO_V1(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRFullPointerField(NDRShortField("pwszScopeName", 0), deferred=True),
        NDRFullPointerField(NDRShortField("pwszDataFile", 0), deferred=True),
    ]


class PDNS_RPC_ENUM_SCOPE_LIST(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwScopeCount", 0),
        StrFixedLenFieldUtf16("ScopeArray", "", length=1 * 2),
    ]


class PDNS_RPC_CLIENT_SUBNET_RECORD(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRFullPointerField(NDRShortField("pwszClientSubnetName", 0), deferred=True),
        NDRFullPointerField(
            NDRPacketField("pIPAddr", PDNS_ADDR_ARRAY(), PDNS_ADDR_ARRAY), deferred=True
        ),
        NDRFullPointerField(
            NDRPacketField("pIPv6Addr", PDNS_ADDR_ARRAY(), PDNS_ADDR_ARRAY),
            deferred=True,
        ),
    ]


class DNS_RPC_POLICY_LEVEL(IntEnum):
    DnsPolicyServerLevel = 1
    DnsPolicyZoneLevel = 2
    DnsPolicyLevelMax = 3


class DNS_RPC_POLICY_TYPE(IntEnum):
    DnsPolicyQueryProcessing = 1
    DnsPolicyZoneTransfer = 2
    DnsPolicyDynamicUpdate = 3
    DnsPolicyRecursion = 4
    DnsPolicyMax = 5


class DNS_RPC_POLICY_ACTION_TYPE(IntEnum):
    DnsPolicyDeny = 1
    DnsPolicyAllow = 2
    DnsPolicyIgnore = 3
    DnsPolicyActionMax = 4


class DNS_RPC_POLICY_CONDITION(IntEnum):
    DNS_AND = 1
    DNS_OR = 2


class PDNS_RPC_POLICY_CONTENT(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRFullPointerField(NDRShortField("pwszScopeName", 0), deferred=True),
        NDRIntField("dwWeight", 0),
    ]


class PDNS_RPC_POLICY_CONTENT_LIST(NDRPacket):
    ALIGNMENT = (4, 8)
    DEPORTED_CONFORMANTS = ["pContent"]
    fields_desc = [
        NDRIntField("dwContentCount", None, size_of="pContent"),
        NDRConfPacketListField(
            "pContent",
            [],
            PDNS_RPC_POLICY_CONTENT,
            size_is=lambda pkt: pkt.dwContentCount,
            conformant_in_struct=True,
            ptr_pack=True,
        ),
    ]


class DNS_RPC_CRITERIA_ENUM(IntEnum):
    DnsPolicyCriteriaSubnet = 1
    DnsPolicyCriteriaTransportProtocol = 2
    DnsPolicyCriteriaNetworkProtocol = 3
    DnsPolicyCriteriaInterface = 4
    DnsPolicyCriteriaFqdn = 5
    DnsPolicyCriteriaQtype = 6
    DnsPolicyCriteriaTime = 7
    DnsPolicyCriteriaMax = 8


class PDNS_RPC_CRITERIA(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRInt3264EnumField("type", 0, DNS_RPC_CRITERIA_ENUM),
        NDRFullPointerField(NDRShortField("pCriteria", 0), deferred=True),
    ]


class PDNS_RPC_POLICY(NDRPacket):
    ALIGNMENT = (8, 8)
    DEPORTED_CONFORMANTS = ["pCriteriaList"]
    fields_desc = [
        NDRFullPointerField(NDRShortField("pwszPolicyName", 0), deferred=True),
        NDRInt3264EnumField("level", 0, DNS_RPC_POLICY_LEVEL),
        NDRInt3264EnumField("appliesOn", 0, DNS_RPC_POLICY_TYPE),
        NDRInt3264EnumField("action", 0, DNS_RPC_POLICY_ACTION_TYPE),
        NDRInt3264EnumField("condition", 0, DNS_RPC_POLICY_CONDITION),
        NDRSignedIntField("isEnabled", 0),
        NDRIntField("dwProcessingOrder", 0),
        NDRFullPointerField(NDRSignedByteField("pszZoneName", 0), deferred=True),
        NDRFullPointerField(
            NDRPacketField(
                "pContentList",
                PDNS_RPC_POLICY_CONTENT_LIST(),
                PDNS_RPC_POLICY_CONTENT_LIST,
            ),
            deferred=True,
        ),
        NDRLongField("flags", 0),
        NDRIntField("dwCriteriaCount", None, size_of="pCriteriaList"),
        NDRConfPacketListField(
            "pCriteriaList",
            [],
            PDNS_RPC_CRITERIA,
            size_is=lambda pkt: pkt.dwCriteriaCount,
            conformant_in_struct=True,
            ptr_pack=True,
        ),
    ]


class PDNS_RPC_POLICY_NAME(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRFullPointerField(NDRShortField("pwszPolicyName", 0), deferred=True),
        NDRInt3264EnumField("appliesOn", 0, DNS_RPC_POLICY_TYPE),
        NDRSignedIntField("fEnabled", 0),
        NDRIntField("processingOrder", 0),
    ]


class PDNS_RPC_ENUMERATE_POLICY_LIST(NDRPacket):
    ALIGNMENT = (4, 8)
    DEPORTED_CONFORMANTS = ["pPolicyArray"]
    fields_desc = [
        NDRIntField("dwPolicyCount", None, size_of="pPolicyArray"),
        NDRConfPacketListField(
            "pPolicyArray",
            [],
            PDNS_RPC_POLICY_NAME,
            size_is=lambda pkt: pkt.dwPolicyCount,
            conformant_in_struct=True,
            ptr_pack=True,
        ),
    ]


class DNS_RRL_MODE_ENUM(IntEnum):
    DnsRRLLogOnly = 1
    DnsRRLEnabled = 2
    DnsRRLDisabled = 3


class PDNS_RPC_RRL_PARAMS(NDRPacket):
    ALIGNMENT = (4, 4)
    fields_desc = [
        NDRIntField("dwResponsesPerSecond", 0),
        NDRIntField("dwErrorsPerSecond", 0),
        NDRIntField("dwLeakRate", 0),
        NDRIntField("dwTCRate", 0),
        NDRIntField("dwTotalResponsesInWindow", 0),
        NDRIntField("dwWindowSize", 0),
        NDRIntField("dwIPv4PrefixLength", 0),
        NDRIntField("dwIPv6PrefixLength", 0),
        NDRInt3264EnumField("eMode", 0, DNS_RRL_MODE_ENUM),
        NDRIntField("dwFlags", 0),
        NDRSignedIntField("fSetDefault", 0),
    ]


class PDNS_RPC_VIRTUALIZATION_INSTANCE(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwReserved", 0),
        NDRIntField("dwFlags", 0),
        NDRFullPointerField(NDRShortField("pwszVirtualizationID", 0), deferred=True),
        NDRFullPointerField(NDRShortField("pwszFriendlyName", 0), deferred=True),
        NDRFullPointerField(NDRShortField("pwszDescription", 0), deferred=True),
    ]


class PDNS_RPC_VIRTUALIZATION_INSTANCE_INFO(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRFullPointerField(NDRShortField("pwszVirtualizationID", 0), deferred=True),
        NDRFullPointerField(NDRShortField("pwszFriendlyName", 0), deferred=True),
        NDRFullPointerField(NDRShortField("pwszDescription", 0), deferred=True),
    ]


class PDNS_RPC_ENUM_VIRTUALIZATION_INSTANCE_LIST(NDRPacket):
    ALIGNMENT = (4, 8)
    fields_desc = [
        NDRIntField("dwRpcStructureVersion", 0),
        NDRIntField("dwVirtualizationInstanceCount", 0),
        PacketListField(
            "VirtualizationInstanceArray",
            [],
            PDNS_RPC_VIRTUALIZATION_INSTANCE_INFO,
            count_from=lambda _: 1,
        ),
    ]


class R_DnssrvOperation_Request(NDRPacket):
    fields_desc = [
        NDRFullPointerField(NDRConfVarStrNullFieldUtf16("pwszServerName", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszZone", "")),
        NDRIntField("dwContext", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszOperation", "")),
        NDRIntField("dwTypeId", 0),
        NDRUnionField(
            [
                (
                    NDRFullPointerField(NDRByteField("ppData", 0)),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NULL
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_NULL),
                    ),
                ),
                (
                    NDRIntField("ppData", 0),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DWORD
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_DWORD),
                    ),
                ),
                (
                    NDRFullPointerField(NDRConfVarStrNullField("ppData", "")),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPSTR
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPSTR),
                    ),
                ),
                (
                    NDRFullPointerField(NDRConfVarStrNullFieldUtf16("ppData", "")),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPWSTR
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPWSTR),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PIP4_ARRAY(), PIP4_ARRAY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IPARRAY
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IPARRAY
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_BUFFER(), PDNS_RPC_BUFFER)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_BUFFER
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_BUFFER),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SERVER_INFO_W2K(),
                            PDNS_RPC_SERVER_INFO_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNSSRV_STATS(), PDNSSRV_STATS)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_STATS
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_STATS),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_FORWARDERS_W2K(), PDNS_RPC_FORWARDERS_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_ZONE_W2K(), PDNS_RPC_ZONE_W2K)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_INFO_W2K(), PDNS_RPC_ZONE_INFO_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES_W2K(),
                            PDNS_RPC_ZONE_SECONDARIES_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_DATABASE_W2K(),
                            PDNS_RPC_ZONE_DATABASE_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO_W2K(),
                            PDNS_RPC_ZONE_CREATE_INFO_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_NAME_AND_PARAM(), PDNS_RPC_NAME_AND_PARAM
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NAME_AND_PARAM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NAME_AND_PARAM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_LIST_W2K(), PDNS_RPC_ZONE_LIST_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SERVER_INFO_DOTNET(),
                            PDNS_RPC_SERVER_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_FORWARDERS_DOTNET(),
                            PDNS_RPC_FORWARDERS_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_ZONE(), PDNS_RPC_ZONE)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_INFO_DOTNET(),
                            PDNS_RPC_ZONE_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES_DOTNET(),
                            PDNS_RPC_ZONE_SECONDARIES_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_DATABASE(), PDNS_RPC_ZONE_DATABASE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO_DOTNET(),
                            PDNS_RPC_ZONE_CREATE_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_LIST(), PDNS_RPC_ZONE_LIST
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_EXPORT_INFO(),
                            PDNS_RPC_ZONE_EXPORT_INFO,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_EXPORT
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_EXPORT
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_INFO(), PDNS_RPC_DP_INFO)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_ENUM(), PDNS_RPC_DP_ENUM)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_LIST(), PDNS_RPC_DP_LIST)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ENLIST_DP(), PDNS_RPC_ENLIST_DP
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENLIST_DP
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENLIST_DP
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_CHANGE_DP(), PDNS_RPC_ZONE_CHANGE_DP
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CHANGE_DP
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CHANGE_DP
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_ZONES_FILTER(),
                            PDNS_RPC_ENUM_ZONES_FILTER,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENUM_ZONES_FILTER
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENUM_ZONES_FILTER
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_ADDR_ARRAY(), PDNS_ADDR_ARRAY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ADDRARRAY
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ADDRARRAY
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_SERVER_INFO(), PDNS_RPC_SERVER_INFO
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO(),
                            PDNS_RPC_ZONE_CREATE_INFO,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_FORWARDERS(), PDNS_RPC_FORWARDERS
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES(),
                            PDNS_RPC_ZONE_SECONDARIES,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_IP_VALIDATE(), PDNS_RPC_IP_VALIDATE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IP_VALIDATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IP_VALIDATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_INFO(), PDNS_RPC_ZONE_INFO
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_AUTOCONFIGURE(), PDNS_RPC_AUTOCONFIGURE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_AUTOCONFIGURE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_AUTOCONFIGURE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_UTF8_STRING_LIST(),
                            PDNS_RPC_UTF8_STRING_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UTF8_STRING_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UTF8_STRING_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_UNICODE_STRING_LIST(),
                            PDNS_RPC_UNICODE_STRING_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UNICODE_STRING_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UNICODE_STRING_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_SKD(), PDNS_RPC_SKD)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_SKD_LIST(), PDNS_RPC_SKD_LIST)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_SKD_STATE(), PDNS_RPC_SKD_STATE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_STATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_STATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SIGNING_VALIDATION_ERROR(),
                            PDNS_RPC_SIGNING_VALIDATION_ERROR,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SIGNING_VALIDATION_ERROR
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SIGNING_VALIDATION_ERROR
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_TRUST_POINT_LIST(),
                            PDNS_RPC_TRUST_POINT_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_POINT_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_POINT_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_TRUST_ANCHOR_LIST(),
                            PDNS_RPC_TRUST_ANCHOR_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_ANCHOR_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_ANCHOR_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_DNSSEC_SETTINGS(),
                            PDNS_RPC_ZONE_DNSSEC_SETTINGS,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SIGNING_SETTINGS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SIGNING_SETTINGS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_ZONE_SCOPE_LIST(),
                            PDNS_RPC_ENUM_ZONE_SCOPE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_STATS_V1(), PDNS_RPC_ZONE_STATS_V1
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_STATS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_STATS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SCOPE_CREATE_INFO_V1(),
                            PDNS_RPC_ZONE_SCOPE_CREATE_INFO_V1,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_CREATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_CREATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SCOPE_INFO_V1(),
                            PDNS_RPC_ZONE_SCOPE_INFO_V1,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_SCOPE_LIST(),
                            PDNS_RPC_ENUM_SCOPE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SCOPE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SCOPE_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_CLIENT_SUBNET_RECORD(),
                            PDNS_RPC_CLIENT_SUBNET_RECORD,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_CLIENT_SUBNET_RECORD
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_CLIENT_SUBNET_RECORD
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_POLICY(), PDNS_RPC_POLICY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_POLICY_NAME(), PDNS_RPC_POLICY_NAME
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_NAME
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_NAME
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUMERATE_POLICY_LIST(),
                            PDNS_RPC_ENUMERATE_POLICY_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_RRL_PARAMS(), PDNS_RPC_RRL_PARAMS
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_RRL
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_RRL),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_VIRTUALIZATION_INSTANCE(),
                            PDNS_RPC_VIRTUALIZATION_INSTANCE,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_VIRTUALIZATION_INSTANCE_LIST(),
                            PDNS_RPC_ENUM_VIRTUALIZATION_INSTANCE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE_ENUM
                        ),
                    ),
                ),
            ],
            StrFixedLenField("ppData", "", length=0),
            align=(4, 8),
            switch_fmt=("L", "L"),
        ),
    ]


class R_DnssrvOperation_Response(NDRPacket):
    fields_desc = [NDRIntField("status", 0)]


class R_DnssrvQuery_Request(NDRPacket):
    fields_desc = [
        NDRFullPointerField(NDRConfVarStrNullFieldUtf16("pwszServerName", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszZone", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszOperation", "")),
    ]


class R_DnssrvQuery_Response(NDRPacket):
    fields_desc = [
        NDRIntField("pdwTypeId", 0),
        NDRUnionField(
            [
                (
                    NDRFullPointerField(NDRByteField("ppData", 0)),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NULL
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_NULL),
                    ),
                ),
                (
                    NDRIntField("ppData", 0),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DWORD
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_DWORD),
                    ),
                ),
                (
                    NDRFullPointerField(NDRConfVarStrNullField("ppData", "")),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPSTR
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPSTR),
                    ),
                ),
                (
                    NDRFullPointerField(NDRConfVarStrNullFieldUtf16("ppData", "")),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPWSTR
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPWSTR),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PIP4_ARRAY(), PIP4_ARRAY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IPARRAY
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IPARRAY
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_BUFFER(), PDNS_RPC_BUFFER)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_BUFFER
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_BUFFER),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SERVER_INFO_W2K(),
                            PDNS_RPC_SERVER_INFO_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNSSRV_STATS(), PDNSSRV_STATS)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_STATS
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_STATS),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_FORWARDERS_W2K(), PDNS_RPC_FORWARDERS_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_ZONE_W2K(), PDNS_RPC_ZONE_W2K)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_INFO_W2K(), PDNS_RPC_ZONE_INFO_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES_W2K(),
                            PDNS_RPC_ZONE_SECONDARIES_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_DATABASE_W2K(),
                            PDNS_RPC_ZONE_DATABASE_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO_W2K(),
                            PDNS_RPC_ZONE_CREATE_INFO_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_NAME_AND_PARAM(), PDNS_RPC_NAME_AND_PARAM
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NAME_AND_PARAM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NAME_AND_PARAM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_LIST_W2K(), PDNS_RPC_ZONE_LIST_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SERVER_INFO_DOTNET(),
                            PDNS_RPC_SERVER_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_FORWARDERS_DOTNET(),
                            PDNS_RPC_FORWARDERS_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_ZONE(), PDNS_RPC_ZONE)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_INFO_DOTNET(),
                            PDNS_RPC_ZONE_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES_DOTNET(),
                            PDNS_RPC_ZONE_SECONDARIES_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_DATABASE(), PDNS_RPC_ZONE_DATABASE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO_DOTNET(),
                            PDNS_RPC_ZONE_CREATE_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_LIST(), PDNS_RPC_ZONE_LIST
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_EXPORT_INFO(),
                            PDNS_RPC_ZONE_EXPORT_INFO,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_EXPORT
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_EXPORT
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_INFO(), PDNS_RPC_DP_INFO)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_ENUM(), PDNS_RPC_DP_ENUM)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_LIST(), PDNS_RPC_DP_LIST)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ENLIST_DP(), PDNS_RPC_ENLIST_DP
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENLIST_DP
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENLIST_DP
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_CHANGE_DP(), PDNS_RPC_ZONE_CHANGE_DP
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CHANGE_DP
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CHANGE_DP
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_ZONES_FILTER(),
                            PDNS_RPC_ENUM_ZONES_FILTER,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENUM_ZONES_FILTER
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENUM_ZONES_FILTER
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_ADDR_ARRAY(), PDNS_ADDR_ARRAY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ADDRARRAY
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ADDRARRAY
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_SERVER_INFO(), PDNS_RPC_SERVER_INFO
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO(),
                            PDNS_RPC_ZONE_CREATE_INFO,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_FORWARDERS(), PDNS_RPC_FORWARDERS
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES(),
                            PDNS_RPC_ZONE_SECONDARIES,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_IP_VALIDATE(), PDNS_RPC_IP_VALIDATE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IP_VALIDATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IP_VALIDATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_INFO(), PDNS_RPC_ZONE_INFO
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_AUTOCONFIGURE(), PDNS_RPC_AUTOCONFIGURE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_AUTOCONFIGURE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_AUTOCONFIGURE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_UTF8_STRING_LIST(),
                            PDNS_RPC_UTF8_STRING_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UTF8_STRING_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UTF8_STRING_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_UNICODE_STRING_LIST(),
                            PDNS_RPC_UNICODE_STRING_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UNICODE_STRING_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UNICODE_STRING_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_SKD(), PDNS_RPC_SKD)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_SKD_LIST(), PDNS_RPC_SKD_LIST)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_SKD_STATE(), PDNS_RPC_SKD_STATE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_STATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_STATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SIGNING_VALIDATION_ERROR(),
                            PDNS_RPC_SIGNING_VALIDATION_ERROR,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SIGNING_VALIDATION_ERROR
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SIGNING_VALIDATION_ERROR
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_TRUST_POINT_LIST(),
                            PDNS_RPC_TRUST_POINT_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_POINT_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_POINT_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_TRUST_ANCHOR_LIST(),
                            PDNS_RPC_TRUST_ANCHOR_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_ANCHOR_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_ANCHOR_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_DNSSEC_SETTINGS(),
                            PDNS_RPC_ZONE_DNSSEC_SETTINGS,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SIGNING_SETTINGS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SIGNING_SETTINGS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_ZONE_SCOPE_LIST(),
                            PDNS_RPC_ENUM_ZONE_SCOPE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_STATS_V1(), PDNS_RPC_ZONE_STATS_V1
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_STATS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_STATS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SCOPE_CREATE_INFO_V1(),
                            PDNS_RPC_ZONE_SCOPE_CREATE_INFO_V1,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_CREATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_CREATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SCOPE_INFO_V1(),
                            PDNS_RPC_ZONE_SCOPE_INFO_V1,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_SCOPE_LIST(),
                            PDNS_RPC_ENUM_SCOPE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SCOPE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SCOPE_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_CLIENT_SUBNET_RECORD(),
                            PDNS_RPC_CLIENT_SUBNET_RECORD,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_CLIENT_SUBNET_RECORD
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_CLIENT_SUBNET_RECORD
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_POLICY(), PDNS_RPC_POLICY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_POLICY_NAME(), PDNS_RPC_POLICY_NAME
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_NAME
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_NAME
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUMERATE_POLICY_LIST(),
                            PDNS_RPC_ENUMERATE_POLICY_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_RRL_PARAMS(), PDNS_RPC_RRL_PARAMS
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_RRL
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_RRL),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_VIRTUALIZATION_INSTANCE(),
                            PDNS_RPC_VIRTUALIZATION_INSTANCE,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_VIRTUALIZATION_INSTANCE_LIST(),
                            PDNS_RPC_ENUM_VIRTUALIZATION_INSTANCE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE_ENUM
                        ),
                    ),
                ),
            ],
            StrFixedLenField("ppData", "", length=0),
            align=(4, 8),
            switch_fmt=("L", "L"),
        ),
        NDRIntField("status", 0),
    ]


class R_DnssrvComplexOperation_Request(NDRPacket):
    fields_desc = [
        NDRFullPointerField(NDRConfVarStrNullFieldUtf16("pwszServerName", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszZone", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszOperation", "")),
        NDRIntField("dwTypeIn", 0),
        NDRUnionField(
            [
                (
                    NDRFullPointerField(NDRByteField("ppData", 0)),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NULL
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_NULL),
                    ),
                ),
                (
                    NDRIntField("ppData", 0),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DWORD
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_DWORD),
                    ),
                ),
                (
                    NDRFullPointerField(NDRConfVarStrNullField("ppData", "")),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPSTR
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPSTR),
                    ),
                ),
                (
                    NDRFullPointerField(NDRConfVarStrNullFieldUtf16("ppData", "")),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPWSTR
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPWSTR),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PIP4_ARRAY(), PIP4_ARRAY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IPARRAY
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IPARRAY
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_BUFFER(), PDNS_RPC_BUFFER)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_BUFFER
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_BUFFER),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SERVER_INFO_W2K(),
                            PDNS_RPC_SERVER_INFO_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNSSRV_STATS(), PDNSSRV_STATS)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_STATS
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_STATS),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_FORWARDERS_W2K(), PDNS_RPC_FORWARDERS_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_ZONE_W2K(), PDNS_RPC_ZONE_W2K)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_INFO_W2K(), PDNS_RPC_ZONE_INFO_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES_W2K(),
                            PDNS_RPC_ZONE_SECONDARIES_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_DATABASE_W2K(),
                            PDNS_RPC_ZONE_DATABASE_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO_W2K(),
                            PDNS_RPC_ZONE_CREATE_INFO_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_NAME_AND_PARAM(), PDNS_RPC_NAME_AND_PARAM
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NAME_AND_PARAM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NAME_AND_PARAM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_LIST_W2K(), PDNS_RPC_ZONE_LIST_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SERVER_INFO_DOTNET(),
                            PDNS_RPC_SERVER_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_FORWARDERS_DOTNET(),
                            PDNS_RPC_FORWARDERS_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_ZONE(), PDNS_RPC_ZONE)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_INFO_DOTNET(),
                            PDNS_RPC_ZONE_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES_DOTNET(),
                            PDNS_RPC_ZONE_SECONDARIES_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_DATABASE(), PDNS_RPC_ZONE_DATABASE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO_DOTNET(),
                            PDNS_RPC_ZONE_CREATE_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_LIST(), PDNS_RPC_ZONE_LIST
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_EXPORT_INFO(),
                            PDNS_RPC_ZONE_EXPORT_INFO,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_EXPORT
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_EXPORT
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_INFO(), PDNS_RPC_DP_INFO)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_ENUM(), PDNS_RPC_DP_ENUM)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_LIST(), PDNS_RPC_DP_LIST)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ENLIST_DP(), PDNS_RPC_ENLIST_DP
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENLIST_DP
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENLIST_DP
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_CHANGE_DP(), PDNS_RPC_ZONE_CHANGE_DP
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CHANGE_DP
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CHANGE_DP
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_ZONES_FILTER(),
                            PDNS_RPC_ENUM_ZONES_FILTER,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENUM_ZONES_FILTER
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENUM_ZONES_FILTER
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_ADDR_ARRAY(), PDNS_ADDR_ARRAY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ADDRARRAY
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ADDRARRAY
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_SERVER_INFO(), PDNS_RPC_SERVER_INFO
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO(),
                            PDNS_RPC_ZONE_CREATE_INFO,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_FORWARDERS(), PDNS_RPC_FORWARDERS
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES(),
                            PDNS_RPC_ZONE_SECONDARIES,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_IP_VALIDATE(), PDNS_RPC_IP_VALIDATE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IP_VALIDATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IP_VALIDATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_INFO(), PDNS_RPC_ZONE_INFO
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_AUTOCONFIGURE(), PDNS_RPC_AUTOCONFIGURE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_AUTOCONFIGURE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_AUTOCONFIGURE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_UTF8_STRING_LIST(),
                            PDNS_RPC_UTF8_STRING_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UTF8_STRING_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UTF8_STRING_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_UNICODE_STRING_LIST(),
                            PDNS_RPC_UNICODE_STRING_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UNICODE_STRING_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UNICODE_STRING_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_SKD(), PDNS_RPC_SKD)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_SKD_LIST(), PDNS_RPC_SKD_LIST)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_SKD_STATE(), PDNS_RPC_SKD_STATE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_STATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_STATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SIGNING_VALIDATION_ERROR(),
                            PDNS_RPC_SIGNING_VALIDATION_ERROR,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SIGNING_VALIDATION_ERROR
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SIGNING_VALIDATION_ERROR
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_TRUST_POINT_LIST(),
                            PDNS_RPC_TRUST_POINT_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_POINT_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_POINT_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_TRUST_ANCHOR_LIST(),
                            PDNS_RPC_TRUST_ANCHOR_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_ANCHOR_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_ANCHOR_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_DNSSEC_SETTINGS(),
                            PDNS_RPC_ZONE_DNSSEC_SETTINGS,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SIGNING_SETTINGS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SIGNING_SETTINGS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_ZONE_SCOPE_LIST(),
                            PDNS_RPC_ENUM_ZONE_SCOPE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_STATS_V1(), PDNS_RPC_ZONE_STATS_V1
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_STATS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_STATS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SCOPE_CREATE_INFO_V1(),
                            PDNS_RPC_ZONE_SCOPE_CREATE_INFO_V1,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_CREATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_CREATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SCOPE_INFO_V1(),
                            PDNS_RPC_ZONE_SCOPE_INFO_V1,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_SCOPE_LIST(),
                            PDNS_RPC_ENUM_SCOPE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SCOPE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SCOPE_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_CLIENT_SUBNET_RECORD(),
                            PDNS_RPC_CLIENT_SUBNET_RECORD,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_CLIENT_SUBNET_RECORD
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_CLIENT_SUBNET_RECORD
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_POLICY(), PDNS_RPC_POLICY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_POLICY_NAME(), PDNS_RPC_POLICY_NAME
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_NAME
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_NAME
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUMERATE_POLICY_LIST(),
                            PDNS_RPC_ENUMERATE_POLICY_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_RRL_PARAMS(), PDNS_RPC_RRL_PARAMS
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_RRL
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_RRL),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_VIRTUALIZATION_INSTANCE(),
                            PDNS_RPC_VIRTUALIZATION_INSTANCE,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_VIRTUALIZATION_INSTANCE_LIST(),
                            PDNS_RPC_ENUM_VIRTUALIZATION_INSTANCE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE_ENUM
                        ),
                    ),
                ),
            ],
            StrFixedLenField("ppData", "", length=0),
            align=(4, 8),
            switch_fmt=("L", "L"),
        ),
    ]


class R_DnssrvComplexOperation_Response(NDRPacket):
    fields_desc = [
        NDRIntField("pdwTypeOut", 0),
        NDRUnionField(
            [
                (
                    NDRFullPointerField(NDRByteField("ppData", 0)),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NULL
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_NULL),
                    ),
                ),
                (
                    NDRIntField("ppData", 0),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DWORD
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_DWORD),
                    ),
                ),
                (
                    NDRFullPointerField(NDRConfVarStrNullField("ppData", "")),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPSTR
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPSTR),
                    ),
                ),
                (
                    NDRFullPointerField(NDRConfVarStrNullFieldUtf16("ppData", "")),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPWSTR
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPWSTR),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PIP4_ARRAY(), PIP4_ARRAY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IPARRAY
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IPARRAY
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_BUFFER(), PDNS_RPC_BUFFER)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_BUFFER
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_BUFFER),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SERVER_INFO_W2K(),
                            PDNS_RPC_SERVER_INFO_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNSSRV_STATS(), PDNSSRV_STATS)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_STATS
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_STATS),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_FORWARDERS_W2K(), PDNS_RPC_FORWARDERS_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_ZONE_W2K(), PDNS_RPC_ZONE_W2K)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_INFO_W2K(), PDNS_RPC_ZONE_INFO_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES_W2K(),
                            PDNS_RPC_ZONE_SECONDARIES_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_DATABASE_W2K(),
                            PDNS_RPC_ZONE_DATABASE_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO_W2K(),
                            PDNS_RPC_ZONE_CREATE_INFO_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_NAME_AND_PARAM(), PDNS_RPC_NAME_AND_PARAM
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NAME_AND_PARAM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NAME_AND_PARAM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_LIST_W2K(), PDNS_RPC_ZONE_LIST_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SERVER_INFO_DOTNET(),
                            PDNS_RPC_SERVER_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_FORWARDERS_DOTNET(),
                            PDNS_RPC_FORWARDERS_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_ZONE(), PDNS_RPC_ZONE)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_INFO_DOTNET(),
                            PDNS_RPC_ZONE_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES_DOTNET(),
                            PDNS_RPC_ZONE_SECONDARIES_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_DATABASE(), PDNS_RPC_ZONE_DATABASE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO_DOTNET(),
                            PDNS_RPC_ZONE_CREATE_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_LIST(), PDNS_RPC_ZONE_LIST
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_EXPORT_INFO(),
                            PDNS_RPC_ZONE_EXPORT_INFO,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_EXPORT
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_EXPORT
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_INFO(), PDNS_RPC_DP_INFO)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_ENUM(), PDNS_RPC_DP_ENUM)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_LIST(), PDNS_RPC_DP_LIST)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ENLIST_DP(), PDNS_RPC_ENLIST_DP
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENLIST_DP
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENLIST_DP
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_CHANGE_DP(), PDNS_RPC_ZONE_CHANGE_DP
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CHANGE_DP
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CHANGE_DP
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_ZONES_FILTER(),
                            PDNS_RPC_ENUM_ZONES_FILTER,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENUM_ZONES_FILTER
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENUM_ZONES_FILTER
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_ADDR_ARRAY(), PDNS_ADDR_ARRAY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ADDRARRAY
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ADDRARRAY
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_SERVER_INFO(), PDNS_RPC_SERVER_INFO
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO(),
                            PDNS_RPC_ZONE_CREATE_INFO,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_FORWARDERS(), PDNS_RPC_FORWARDERS
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES(),
                            PDNS_RPC_ZONE_SECONDARIES,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_IP_VALIDATE(), PDNS_RPC_IP_VALIDATE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IP_VALIDATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IP_VALIDATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_INFO(), PDNS_RPC_ZONE_INFO
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_AUTOCONFIGURE(), PDNS_RPC_AUTOCONFIGURE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_AUTOCONFIGURE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_AUTOCONFIGURE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_UTF8_STRING_LIST(),
                            PDNS_RPC_UTF8_STRING_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UTF8_STRING_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UTF8_STRING_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_UNICODE_STRING_LIST(),
                            PDNS_RPC_UNICODE_STRING_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UNICODE_STRING_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UNICODE_STRING_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_SKD(), PDNS_RPC_SKD)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_SKD_LIST(), PDNS_RPC_SKD_LIST)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_SKD_STATE(), PDNS_RPC_SKD_STATE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_STATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_STATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SIGNING_VALIDATION_ERROR(),
                            PDNS_RPC_SIGNING_VALIDATION_ERROR,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SIGNING_VALIDATION_ERROR
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SIGNING_VALIDATION_ERROR
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_TRUST_POINT_LIST(),
                            PDNS_RPC_TRUST_POINT_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_POINT_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_POINT_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_TRUST_ANCHOR_LIST(),
                            PDNS_RPC_TRUST_ANCHOR_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_ANCHOR_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_ANCHOR_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_DNSSEC_SETTINGS(),
                            PDNS_RPC_ZONE_DNSSEC_SETTINGS,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SIGNING_SETTINGS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SIGNING_SETTINGS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_ZONE_SCOPE_LIST(),
                            PDNS_RPC_ENUM_ZONE_SCOPE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_STATS_V1(), PDNS_RPC_ZONE_STATS_V1
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_STATS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_STATS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SCOPE_CREATE_INFO_V1(),
                            PDNS_RPC_ZONE_SCOPE_CREATE_INFO_V1,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_CREATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_CREATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SCOPE_INFO_V1(),
                            PDNS_RPC_ZONE_SCOPE_INFO_V1,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_SCOPE_LIST(),
                            PDNS_RPC_ENUM_SCOPE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SCOPE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SCOPE_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_CLIENT_SUBNET_RECORD(),
                            PDNS_RPC_CLIENT_SUBNET_RECORD,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_CLIENT_SUBNET_RECORD
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_CLIENT_SUBNET_RECORD
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_POLICY(), PDNS_RPC_POLICY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_POLICY_NAME(), PDNS_RPC_POLICY_NAME
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_NAME
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_NAME
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUMERATE_POLICY_LIST(),
                            PDNS_RPC_ENUMERATE_POLICY_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_RRL_PARAMS(), PDNS_RPC_RRL_PARAMS
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_RRL
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_RRL),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_VIRTUALIZATION_INSTANCE(),
                            PDNS_RPC_VIRTUALIZATION_INSTANCE,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_VIRTUALIZATION_INSTANCE_LIST(),
                            PDNS_RPC_ENUM_VIRTUALIZATION_INSTANCE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE_ENUM
                        ),
                    ),
                ),
            ],
            StrFixedLenField("ppData", "", length=0),
            align=(4, 8),
            switch_fmt=("L", "L"),
        ),
        NDRIntField("status", 0),
    ]


class R_DnssrvEnumRecords_Request(NDRPacket):
    fields_desc = [
        NDRFullPointerField(NDRConfVarStrNullFieldUtf16("pwszServerName", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszZone", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszNodeName", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszStartChild", "")),
        NDRShortField("wRecordType", 0),
        NDRIntField("fSelectFlag", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszFilterStart", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszFilterStop", "")),
    ]


class R_DnssrvEnumRecords_Response(NDRPacket):
    fields_desc = [
        NDRIntField("pdwBufferLength", None, size_of="ppBuffer"),
        NDRConfStrLenField("ppBuffer", "", size_is=lambda pkt: pkt.pdwBufferLength),
        NDRIntField("status", 0),
    ]


class PDNS_RPC_RECORD(NDRPacket):
    ALIGNMENT = (4, 8)
    DEPORTED_CONFORMANTS = ["Buffer"]
    fields_desc = [
        NDRShortField("wDataLength", None, size_of="Buffer"),
        NDRShortField("wType", 0),
        NDRIntField("dwFlags", 0),
        NDRIntField("dwSerial", 0),
        NDRIntField("dwTtlSeconds", 0),
        NDRIntField("dwTimeStamp", 0),
        NDRIntField("dwReserved", 0),
        NDRConfStrLenField(
            "Buffer", "", size_is=lambda pkt: pkt.wDataLength, conformant_in_struct=True
        ),
    ]


class R_DnssrvUpdateRecord_Request(NDRPacket):
    fields_desc = [
        NDRFullPointerField(NDRConfVarStrNullFieldUtf16("pwszServerName", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszZone", "")),
        NDRConfVarStrNullField("pszNodeName", ""),
        NDRFullPointerField(
            NDRPacketField("pAddRecord", PDNS_RPC_RECORD(), PDNS_RPC_RECORD)
        ),
        NDRFullPointerField(
            NDRPacketField("pDeleteRecord", PDNS_RPC_RECORD(), PDNS_RPC_RECORD)
        ),
    ]


class R_DnssrvUpdateRecord_Response(NDRPacket):
    fields_desc = [NDRIntField("status", 0)]


class R_DnssrvOperation2_Request(NDRPacket):
    fields_desc = [
        NDRIntField("dwClientVersion", 0),
        NDRIntField("dwSettingFlags", 0),
        NDRFullPointerField(NDRConfVarStrNullFieldUtf16("pwszServerName", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszZone", "")),
        NDRIntField("dwContext", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszOperation", "")),
        NDRIntField("dwTypeId", 0),
        NDRUnionField(
            [
                (
                    NDRFullPointerField(NDRByteField("ppData", 0)),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NULL
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_NULL),
                    ),
                ),
                (
                    NDRIntField("ppData", 0),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DWORD
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_DWORD),
                    ),
                ),
                (
                    NDRFullPointerField(NDRConfVarStrNullField("ppData", "")),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPSTR
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPSTR),
                    ),
                ),
                (
                    NDRFullPointerField(NDRConfVarStrNullFieldUtf16("ppData", "")),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPWSTR
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPWSTR),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PIP4_ARRAY(), PIP4_ARRAY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IPARRAY
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IPARRAY
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_BUFFER(), PDNS_RPC_BUFFER)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_BUFFER
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_BUFFER),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SERVER_INFO_W2K(),
                            PDNS_RPC_SERVER_INFO_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNSSRV_STATS(), PDNSSRV_STATS)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_STATS
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_STATS),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_FORWARDERS_W2K(), PDNS_RPC_FORWARDERS_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_ZONE_W2K(), PDNS_RPC_ZONE_W2K)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_INFO_W2K(), PDNS_RPC_ZONE_INFO_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES_W2K(),
                            PDNS_RPC_ZONE_SECONDARIES_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_DATABASE_W2K(),
                            PDNS_RPC_ZONE_DATABASE_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO_W2K(),
                            PDNS_RPC_ZONE_CREATE_INFO_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_NAME_AND_PARAM(), PDNS_RPC_NAME_AND_PARAM
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NAME_AND_PARAM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NAME_AND_PARAM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_LIST_W2K(), PDNS_RPC_ZONE_LIST_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SERVER_INFO_DOTNET(),
                            PDNS_RPC_SERVER_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_FORWARDERS_DOTNET(),
                            PDNS_RPC_FORWARDERS_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_ZONE(), PDNS_RPC_ZONE)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_INFO_DOTNET(),
                            PDNS_RPC_ZONE_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES_DOTNET(),
                            PDNS_RPC_ZONE_SECONDARIES_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_DATABASE(), PDNS_RPC_ZONE_DATABASE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO_DOTNET(),
                            PDNS_RPC_ZONE_CREATE_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_LIST(), PDNS_RPC_ZONE_LIST
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_EXPORT_INFO(),
                            PDNS_RPC_ZONE_EXPORT_INFO,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_EXPORT
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_EXPORT
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_INFO(), PDNS_RPC_DP_INFO)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_ENUM(), PDNS_RPC_DP_ENUM)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_LIST(), PDNS_RPC_DP_LIST)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ENLIST_DP(), PDNS_RPC_ENLIST_DP
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENLIST_DP
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENLIST_DP
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_CHANGE_DP(), PDNS_RPC_ZONE_CHANGE_DP
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CHANGE_DP
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CHANGE_DP
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_ZONES_FILTER(),
                            PDNS_RPC_ENUM_ZONES_FILTER,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENUM_ZONES_FILTER
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENUM_ZONES_FILTER
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_ADDR_ARRAY(), PDNS_ADDR_ARRAY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ADDRARRAY
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ADDRARRAY
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_SERVER_INFO(), PDNS_RPC_SERVER_INFO
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO(),
                            PDNS_RPC_ZONE_CREATE_INFO,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_FORWARDERS(), PDNS_RPC_FORWARDERS
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES(),
                            PDNS_RPC_ZONE_SECONDARIES,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_IP_VALIDATE(), PDNS_RPC_IP_VALIDATE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IP_VALIDATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IP_VALIDATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_INFO(), PDNS_RPC_ZONE_INFO
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_AUTOCONFIGURE(), PDNS_RPC_AUTOCONFIGURE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_AUTOCONFIGURE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_AUTOCONFIGURE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_UTF8_STRING_LIST(),
                            PDNS_RPC_UTF8_STRING_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UTF8_STRING_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UTF8_STRING_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_UNICODE_STRING_LIST(),
                            PDNS_RPC_UNICODE_STRING_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UNICODE_STRING_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UNICODE_STRING_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_SKD(), PDNS_RPC_SKD)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_SKD_LIST(), PDNS_RPC_SKD_LIST)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_SKD_STATE(), PDNS_RPC_SKD_STATE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_STATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_STATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SIGNING_VALIDATION_ERROR(),
                            PDNS_RPC_SIGNING_VALIDATION_ERROR,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SIGNING_VALIDATION_ERROR
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SIGNING_VALIDATION_ERROR
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_TRUST_POINT_LIST(),
                            PDNS_RPC_TRUST_POINT_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_POINT_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_POINT_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_TRUST_ANCHOR_LIST(),
                            PDNS_RPC_TRUST_ANCHOR_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_ANCHOR_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_ANCHOR_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_DNSSEC_SETTINGS(),
                            PDNS_RPC_ZONE_DNSSEC_SETTINGS,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SIGNING_SETTINGS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SIGNING_SETTINGS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_ZONE_SCOPE_LIST(),
                            PDNS_RPC_ENUM_ZONE_SCOPE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_STATS_V1(), PDNS_RPC_ZONE_STATS_V1
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_STATS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_STATS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SCOPE_CREATE_INFO_V1(),
                            PDNS_RPC_ZONE_SCOPE_CREATE_INFO_V1,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_CREATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_CREATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SCOPE_INFO_V1(),
                            PDNS_RPC_ZONE_SCOPE_INFO_V1,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_SCOPE_LIST(),
                            PDNS_RPC_ENUM_SCOPE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SCOPE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SCOPE_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_CLIENT_SUBNET_RECORD(),
                            PDNS_RPC_CLIENT_SUBNET_RECORD,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_CLIENT_SUBNET_RECORD
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_CLIENT_SUBNET_RECORD
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_POLICY(), PDNS_RPC_POLICY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_POLICY_NAME(), PDNS_RPC_POLICY_NAME
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_NAME
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_NAME
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUMERATE_POLICY_LIST(),
                            PDNS_RPC_ENUMERATE_POLICY_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_RRL_PARAMS(), PDNS_RPC_RRL_PARAMS
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_RRL
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_RRL),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_VIRTUALIZATION_INSTANCE(),
                            PDNS_RPC_VIRTUALIZATION_INSTANCE,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_VIRTUALIZATION_INSTANCE_LIST(),
                            PDNS_RPC_ENUM_VIRTUALIZATION_INSTANCE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE_ENUM
                        ),
                    ),
                ),
            ],
            StrFixedLenField("ppData", "", length=0),
            align=(4, 8),
            switch_fmt=("L", "L"),
        ),
    ]


class R_DnssrvOperation2_Response(NDRPacket):
    fields_desc = [NDRIntField("status", 0)]


class R_DnssrvQuery2_Request(NDRPacket):
    fields_desc = [
        NDRIntField("dwClientVersion", 0),
        NDRIntField("dwSettingFlags", 0),
        NDRFullPointerField(NDRConfVarStrNullFieldUtf16("pwszServerName", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszZone", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszOperation", "")),
    ]


class R_DnssrvQuery2_Response(NDRPacket):
    fields_desc = [
        NDRIntField("pdwTypeId", 0),
        NDRUnionField(
            [
                (
                    NDRFullPointerField(NDRByteField("ppData", 0)),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NULL
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_NULL),
                    ),
                ),
                (
                    NDRIntField("ppData", 0),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DWORD
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_DWORD),
                    ),
                ),
                (
                    NDRFullPointerField(NDRConfVarStrNullField("ppData", "")),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPSTR
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPSTR),
                    ),
                ),
                (
                    NDRFullPointerField(NDRConfVarStrNullFieldUtf16("ppData", "")),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPWSTR
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPWSTR),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PIP4_ARRAY(), PIP4_ARRAY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IPARRAY
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IPARRAY
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_BUFFER(), PDNS_RPC_BUFFER)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_BUFFER
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_BUFFER),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SERVER_INFO_W2K(),
                            PDNS_RPC_SERVER_INFO_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNSSRV_STATS(), PDNSSRV_STATS)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_STATS
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_STATS),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_FORWARDERS_W2K(), PDNS_RPC_FORWARDERS_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_ZONE_W2K(), PDNS_RPC_ZONE_W2K)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_INFO_W2K(), PDNS_RPC_ZONE_INFO_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES_W2K(),
                            PDNS_RPC_ZONE_SECONDARIES_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_DATABASE_W2K(),
                            PDNS_RPC_ZONE_DATABASE_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO_W2K(),
                            PDNS_RPC_ZONE_CREATE_INFO_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_NAME_AND_PARAM(), PDNS_RPC_NAME_AND_PARAM
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NAME_AND_PARAM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NAME_AND_PARAM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_LIST_W2K(), PDNS_RPC_ZONE_LIST_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SERVER_INFO_DOTNET(),
                            PDNS_RPC_SERVER_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_FORWARDERS_DOTNET(),
                            PDNS_RPC_FORWARDERS_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_ZONE(), PDNS_RPC_ZONE)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_INFO_DOTNET(),
                            PDNS_RPC_ZONE_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES_DOTNET(),
                            PDNS_RPC_ZONE_SECONDARIES_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_DATABASE(), PDNS_RPC_ZONE_DATABASE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO_DOTNET(),
                            PDNS_RPC_ZONE_CREATE_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_LIST(), PDNS_RPC_ZONE_LIST
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_EXPORT_INFO(),
                            PDNS_RPC_ZONE_EXPORT_INFO,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_EXPORT
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_EXPORT
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_INFO(), PDNS_RPC_DP_INFO)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_ENUM(), PDNS_RPC_DP_ENUM)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_LIST(), PDNS_RPC_DP_LIST)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ENLIST_DP(), PDNS_RPC_ENLIST_DP
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENLIST_DP
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENLIST_DP
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_CHANGE_DP(), PDNS_RPC_ZONE_CHANGE_DP
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CHANGE_DP
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CHANGE_DP
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_ZONES_FILTER(),
                            PDNS_RPC_ENUM_ZONES_FILTER,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENUM_ZONES_FILTER
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENUM_ZONES_FILTER
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_ADDR_ARRAY(), PDNS_ADDR_ARRAY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ADDRARRAY
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ADDRARRAY
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_SERVER_INFO(), PDNS_RPC_SERVER_INFO
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO(),
                            PDNS_RPC_ZONE_CREATE_INFO,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_FORWARDERS(), PDNS_RPC_FORWARDERS
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES(),
                            PDNS_RPC_ZONE_SECONDARIES,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_IP_VALIDATE(), PDNS_RPC_IP_VALIDATE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IP_VALIDATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IP_VALIDATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_INFO(), PDNS_RPC_ZONE_INFO
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_AUTOCONFIGURE(), PDNS_RPC_AUTOCONFIGURE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_AUTOCONFIGURE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_AUTOCONFIGURE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_UTF8_STRING_LIST(),
                            PDNS_RPC_UTF8_STRING_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UTF8_STRING_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UTF8_STRING_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_UNICODE_STRING_LIST(),
                            PDNS_RPC_UNICODE_STRING_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UNICODE_STRING_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UNICODE_STRING_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_SKD(), PDNS_RPC_SKD)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_SKD_LIST(), PDNS_RPC_SKD_LIST)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_SKD_STATE(), PDNS_RPC_SKD_STATE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_STATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_STATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SIGNING_VALIDATION_ERROR(),
                            PDNS_RPC_SIGNING_VALIDATION_ERROR,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SIGNING_VALIDATION_ERROR
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SIGNING_VALIDATION_ERROR
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_TRUST_POINT_LIST(),
                            PDNS_RPC_TRUST_POINT_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_POINT_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_POINT_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_TRUST_ANCHOR_LIST(),
                            PDNS_RPC_TRUST_ANCHOR_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_ANCHOR_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_ANCHOR_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_DNSSEC_SETTINGS(),
                            PDNS_RPC_ZONE_DNSSEC_SETTINGS,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SIGNING_SETTINGS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SIGNING_SETTINGS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_ZONE_SCOPE_LIST(),
                            PDNS_RPC_ENUM_ZONE_SCOPE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_STATS_V1(), PDNS_RPC_ZONE_STATS_V1
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_STATS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_STATS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SCOPE_CREATE_INFO_V1(),
                            PDNS_RPC_ZONE_SCOPE_CREATE_INFO_V1,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_CREATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_CREATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SCOPE_INFO_V1(),
                            PDNS_RPC_ZONE_SCOPE_INFO_V1,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_SCOPE_LIST(),
                            PDNS_RPC_ENUM_SCOPE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SCOPE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SCOPE_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_CLIENT_SUBNET_RECORD(),
                            PDNS_RPC_CLIENT_SUBNET_RECORD,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_CLIENT_SUBNET_RECORD
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_CLIENT_SUBNET_RECORD
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_POLICY(), PDNS_RPC_POLICY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_POLICY_NAME(), PDNS_RPC_POLICY_NAME
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_NAME
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_NAME
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUMERATE_POLICY_LIST(),
                            PDNS_RPC_ENUMERATE_POLICY_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_RRL_PARAMS(), PDNS_RPC_RRL_PARAMS
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_RRL
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_RRL),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_VIRTUALIZATION_INSTANCE(),
                            PDNS_RPC_VIRTUALIZATION_INSTANCE,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_VIRTUALIZATION_INSTANCE_LIST(),
                            PDNS_RPC_ENUM_VIRTUALIZATION_INSTANCE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE_ENUM
                        ),
                    ),
                ),
            ],
            StrFixedLenField("ppData", "", length=0),
            align=(4, 8),
            switch_fmt=("L", "L"),
        ),
        NDRIntField("status", 0),
    ]


class R_DnssrvComplexOperation2_Request(NDRPacket):
    fields_desc = [
        NDRIntField("dwClientVersion", 0),
        NDRIntField("dwSettingFlags", 0),
        NDRFullPointerField(NDRConfVarStrNullFieldUtf16("pwszServerName", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszZone", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszOperation", "")),
        NDRIntField("dwTypeIn", 0),
        NDRUnionField(
            [
                (
                    NDRFullPointerField(NDRByteField("ppData", 0)),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NULL
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_NULL),
                    ),
                ),
                (
                    NDRIntField("ppData", 0),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DWORD
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_DWORD),
                    ),
                ),
                (
                    NDRFullPointerField(NDRConfVarStrNullField("ppData", "")),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPSTR
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPSTR),
                    ),
                ),
                (
                    NDRFullPointerField(NDRConfVarStrNullFieldUtf16("ppData", "")),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPWSTR
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPWSTR),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PIP4_ARRAY(), PIP4_ARRAY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IPARRAY
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IPARRAY
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_BUFFER(), PDNS_RPC_BUFFER)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_BUFFER
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_BUFFER),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SERVER_INFO_W2K(),
                            PDNS_RPC_SERVER_INFO_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNSSRV_STATS(), PDNSSRV_STATS)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_STATS
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_STATS),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_FORWARDERS_W2K(), PDNS_RPC_FORWARDERS_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_ZONE_W2K(), PDNS_RPC_ZONE_W2K)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_INFO_W2K(), PDNS_RPC_ZONE_INFO_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES_W2K(),
                            PDNS_RPC_ZONE_SECONDARIES_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_DATABASE_W2K(),
                            PDNS_RPC_ZONE_DATABASE_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO_W2K(),
                            PDNS_RPC_ZONE_CREATE_INFO_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_NAME_AND_PARAM(), PDNS_RPC_NAME_AND_PARAM
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NAME_AND_PARAM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NAME_AND_PARAM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_LIST_W2K(), PDNS_RPC_ZONE_LIST_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SERVER_INFO_DOTNET(),
                            PDNS_RPC_SERVER_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_FORWARDERS_DOTNET(),
                            PDNS_RPC_FORWARDERS_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_ZONE(), PDNS_RPC_ZONE)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_INFO_DOTNET(),
                            PDNS_RPC_ZONE_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES_DOTNET(),
                            PDNS_RPC_ZONE_SECONDARIES_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_DATABASE(), PDNS_RPC_ZONE_DATABASE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO_DOTNET(),
                            PDNS_RPC_ZONE_CREATE_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_LIST(), PDNS_RPC_ZONE_LIST
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_EXPORT_INFO(),
                            PDNS_RPC_ZONE_EXPORT_INFO,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_EXPORT
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_EXPORT
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_INFO(), PDNS_RPC_DP_INFO)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_ENUM(), PDNS_RPC_DP_ENUM)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_LIST(), PDNS_RPC_DP_LIST)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ENLIST_DP(), PDNS_RPC_ENLIST_DP
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENLIST_DP
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENLIST_DP
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_CHANGE_DP(), PDNS_RPC_ZONE_CHANGE_DP
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CHANGE_DP
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CHANGE_DP
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_ZONES_FILTER(),
                            PDNS_RPC_ENUM_ZONES_FILTER,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENUM_ZONES_FILTER
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENUM_ZONES_FILTER
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_ADDR_ARRAY(), PDNS_ADDR_ARRAY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ADDRARRAY
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ADDRARRAY
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_SERVER_INFO(), PDNS_RPC_SERVER_INFO
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO(),
                            PDNS_RPC_ZONE_CREATE_INFO,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_FORWARDERS(), PDNS_RPC_FORWARDERS
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES(),
                            PDNS_RPC_ZONE_SECONDARIES,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_IP_VALIDATE(), PDNS_RPC_IP_VALIDATE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IP_VALIDATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IP_VALIDATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_INFO(), PDNS_RPC_ZONE_INFO
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_AUTOCONFIGURE(), PDNS_RPC_AUTOCONFIGURE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_AUTOCONFIGURE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_AUTOCONFIGURE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_UTF8_STRING_LIST(),
                            PDNS_RPC_UTF8_STRING_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UTF8_STRING_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UTF8_STRING_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_UNICODE_STRING_LIST(),
                            PDNS_RPC_UNICODE_STRING_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UNICODE_STRING_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UNICODE_STRING_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_SKD(), PDNS_RPC_SKD)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_SKD_LIST(), PDNS_RPC_SKD_LIST)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_SKD_STATE(), PDNS_RPC_SKD_STATE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_STATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_STATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SIGNING_VALIDATION_ERROR(),
                            PDNS_RPC_SIGNING_VALIDATION_ERROR,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SIGNING_VALIDATION_ERROR
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SIGNING_VALIDATION_ERROR
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_TRUST_POINT_LIST(),
                            PDNS_RPC_TRUST_POINT_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_POINT_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_POINT_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_TRUST_ANCHOR_LIST(),
                            PDNS_RPC_TRUST_ANCHOR_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_ANCHOR_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_ANCHOR_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_DNSSEC_SETTINGS(),
                            PDNS_RPC_ZONE_DNSSEC_SETTINGS,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SIGNING_SETTINGS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SIGNING_SETTINGS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_ZONE_SCOPE_LIST(),
                            PDNS_RPC_ENUM_ZONE_SCOPE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_STATS_V1(), PDNS_RPC_ZONE_STATS_V1
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_STATS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_STATS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SCOPE_CREATE_INFO_V1(),
                            PDNS_RPC_ZONE_SCOPE_CREATE_INFO_V1,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_CREATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_CREATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SCOPE_INFO_V1(),
                            PDNS_RPC_ZONE_SCOPE_INFO_V1,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_SCOPE_LIST(),
                            PDNS_RPC_ENUM_SCOPE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SCOPE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SCOPE_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_CLIENT_SUBNET_RECORD(),
                            PDNS_RPC_CLIENT_SUBNET_RECORD,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_CLIENT_SUBNET_RECORD
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_CLIENT_SUBNET_RECORD
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_POLICY(), PDNS_RPC_POLICY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_POLICY_NAME(), PDNS_RPC_POLICY_NAME
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_NAME
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_NAME
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUMERATE_POLICY_LIST(),
                            PDNS_RPC_ENUMERATE_POLICY_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_RRL_PARAMS(), PDNS_RPC_RRL_PARAMS
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_RRL
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_RRL),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_VIRTUALIZATION_INSTANCE(),
                            PDNS_RPC_VIRTUALIZATION_INSTANCE,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_VIRTUALIZATION_INSTANCE_LIST(),
                            PDNS_RPC_ENUM_VIRTUALIZATION_INSTANCE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE_ENUM
                        ),
                    ),
                ),
            ],
            StrFixedLenField("ppData", "", length=0),
            align=(4, 8),
            switch_fmt=("L", "L"),
        ),
    ]


class R_DnssrvComplexOperation2_Response(NDRPacket):
    fields_desc = [
        NDRIntField("pdwTypeOut", 0),
        NDRUnionField(
            [
                (
                    NDRFullPointerField(NDRByteField("ppData", 0)),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NULL
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_NULL),
                    ),
                ),
                (
                    NDRIntField("ppData", 0),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DWORD
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_DWORD),
                    ),
                ),
                (
                    NDRFullPointerField(NDRConfVarStrNullField("ppData", "")),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPSTR
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPSTR),
                    ),
                ),
                (
                    NDRFullPointerField(NDRConfVarStrNullFieldUtf16("ppData", "")),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPWSTR
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPWSTR),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PIP4_ARRAY(), PIP4_ARRAY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IPARRAY
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IPARRAY
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_BUFFER(), PDNS_RPC_BUFFER)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_BUFFER
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_BUFFER),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SERVER_INFO_W2K(),
                            PDNS_RPC_SERVER_INFO_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNSSRV_STATS(), PDNSSRV_STATS)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_STATS
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_STATS),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_FORWARDERS_W2K(), PDNS_RPC_FORWARDERS_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_ZONE_W2K(), PDNS_RPC_ZONE_W2K)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_INFO_W2K(), PDNS_RPC_ZONE_INFO_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES_W2K(),
                            PDNS_RPC_ZONE_SECONDARIES_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_DATABASE_W2K(),
                            PDNS_RPC_ZONE_DATABASE_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO_W2K(),
                            PDNS_RPC_ZONE_CREATE_INFO_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_NAME_AND_PARAM(), PDNS_RPC_NAME_AND_PARAM
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NAME_AND_PARAM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NAME_AND_PARAM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_LIST_W2K(), PDNS_RPC_ZONE_LIST_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SERVER_INFO_DOTNET(),
                            PDNS_RPC_SERVER_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_FORWARDERS_DOTNET(),
                            PDNS_RPC_FORWARDERS_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_ZONE(), PDNS_RPC_ZONE)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_INFO_DOTNET(),
                            PDNS_RPC_ZONE_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES_DOTNET(),
                            PDNS_RPC_ZONE_SECONDARIES_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_DATABASE(), PDNS_RPC_ZONE_DATABASE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO_DOTNET(),
                            PDNS_RPC_ZONE_CREATE_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_LIST(), PDNS_RPC_ZONE_LIST
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_EXPORT_INFO(),
                            PDNS_RPC_ZONE_EXPORT_INFO,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_EXPORT
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_EXPORT
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_INFO(), PDNS_RPC_DP_INFO)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_ENUM(), PDNS_RPC_DP_ENUM)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_LIST(), PDNS_RPC_DP_LIST)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ENLIST_DP(), PDNS_RPC_ENLIST_DP
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENLIST_DP
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENLIST_DP
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_CHANGE_DP(), PDNS_RPC_ZONE_CHANGE_DP
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CHANGE_DP
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CHANGE_DP
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_ZONES_FILTER(),
                            PDNS_RPC_ENUM_ZONES_FILTER,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENUM_ZONES_FILTER
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENUM_ZONES_FILTER
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_ADDR_ARRAY(), PDNS_ADDR_ARRAY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ADDRARRAY
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ADDRARRAY
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_SERVER_INFO(), PDNS_RPC_SERVER_INFO
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO(),
                            PDNS_RPC_ZONE_CREATE_INFO,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_FORWARDERS(), PDNS_RPC_FORWARDERS
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES(),
                            PDNS_RPC_ZONE_SECONDARIES,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_IP_VALIDATE(), PDNS_RPC_IP_VALIDATE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IP_VALIDATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IP_VALIDATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_INFO(), PDNS_RPC_ZONE_INFO
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_AUTOCONFIGURE(), PDNS_RPC_AUTOCONFIGURE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_AUTOCONFIGURE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_AUTOCONFIGURE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_UTF8_STRING_LIST(),
                            PDNS_RPC_UTF8_STRING_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UTF8_STRING_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UTF8_STRING_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_UNICODE_STRING_LIST(),
                            PDNS_RPC_UNICODE_STRING_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UNICODE_STRING_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UNICODE_STRING_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_SKD(), PDNS_RPC_SKD)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_SKD_LIST(), PDNS_RPC_SKD_LIST)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_SKD_STATE(), PDNS_RPC_SKD_STATE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_STATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_STATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SIGNING_VALIDATION_ERROR(),
                            PDNS_RPC_SIGNING_VALIDATION_ERROR,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SIGNING_VALIDATION_ERROR
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SIGNING_VALIDATION_ERROR
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_TRUST_POINT_LIST(),
                            PDNS_RPC_TRUST_POINT_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_POINT_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_POINT_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_TRUST_ANCHOR_LIST(),
                            PDNS_RPC_TRUST_ANCHOR_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_ANCHOR_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_ANCHOR_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_DNSSEC_SETTINGS(),
                            PDNS_RPC_ZONE_DNSSEC_SETTINGS,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SIGNING_SETTINGS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SIGNING_SETTINGS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_ZONE_SCOPE_LIST(),
                            PDNS_RPC_ENUM_ZONE_SCOPE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_STATS_V1(), PDNS_RPC_ZONE_STATS_V1
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_STATS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_STATS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SCOPE_CREATE_INFO_V1(),
                            PDNS_RPC_ZONE_SCOPE_CREATE_INFO_V1,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_CREATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_CREATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SCOPE_INFO_V1(),
                            PDNS_RPC_ZONE_SCOPE_INFO_V1,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_SCOPE_LIST(),
                            PDNS_RPC_ENUM_SCOPE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SCOPE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SCOPE_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_CLIENT_SUBNET_RECORD(),
                            PDNS_RPC_CLIENT_SUBNET_RECORD,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_CLIENT_SUBNET_RECORD
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_CLIENT_SUBNET_RECORD
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_POLICY(), PDNS_RPC_POLICY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_POLICY_NAME(), PDNS_RPC_POLICY_NAME
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_NAME
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_NAME
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUMERATE_POLICY_LIST(),
                            PDNS_RPC_ENUMERATE_POLICY_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_RRL_PARAMS(), PDNS_RPC_RRL_PARAMS
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_RRL
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_RRL),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_VIRTUALIZATION_INSTANCE(),
                            PDNS_RPC_VIRTUALIZATION_INSTANCE,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_VIRTUALIZATION_INSTANCE_LIST(),
                            PDNS_RPC_ENUM_VIRTUALIZATION_INSTANCE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE_ENUM
                        ),
                    ),
                ),
            ],
            StrFixedLenField("ppData", "", length=0),
            align=(4, 8),
            switch_fmt=("L", "L"),
        ),
        NDRIntField("status", 0),
    ]


class R_DnssrvEnumRecords2_Request(NDRPacket):
    fields_desc = [
        NDRIntField("dwClientVersion", 0),
        NDRIntField("dwSettingFlags", 0),
        NDRFullPointerField(NDRConfVarStrNullFieldUtf16("pwszServerName", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszZone", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszNodeName", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszStartChild", "")),
        NDRShortField("wRecordType", 0),
        NDRIntField("fSelectFlag", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszFilterStart", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszFilterStop", "")),
    ]


class R_DnssrvEnumRecords2_Response(NDRPacket):
    fields_desc = [
        NDRIntField("pdwBufferLength", None, size_of="ppBuffer"),
        NDRConfStrLenField("ppBuffer", "", size_is=lambda pkt: pkt.pdwBufferLength),
        NDRIntField("status", 0),
    ]


class R_DnssrvUpdateRecord2_Request(NDRPacket):
    fields_desc = [
        NDRIntField("dwClientVersion", 0),
        NDRIntField("dwSettingFlags", 0),
        NDRFullPointerField(NDRConfVarStrNullFieldUtf16("pwszServerName", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszZone", "")),
        NDRConfVarStrNullField("pszNodeName", ""),
        NDRFullPointerField(
            NDRPacketField("pAddRecord", PDNS_RPC_RECORD(), PDNS_RPC_RECORD)
        ),
        NDRFullPointerField(
            NDRPacketField("pDeleteRecord", PDNS_RPC_RECORD(), PDNS_RPC_RECORD)
        ),
    ]


class R_DnssrvUpdateRecord2_Response(NDRPacket):
    fields_desc = [NDRIntField("status", 0)]


class R_DnssrvUpdateRecord3_Request(NDRPacket):
    fields_desc = [
        NDRIntField("dwClientVersion", 0),
        NDRIntField("dwSettingFlags", 0),
        NDRFullPointerField(NDRConfVarStrNullFieldUtf16("pwszServerName", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszZone", "")),
        NDRFullPointerField(NDRConfVarStrNullFieldUtf16("pwszZoneScope", "")),
        NDRConfVarStrNullField("pszNodeName", ""),
        NDRFullPointerField(
            NDRPacketField("pAddRecord", PDNS_RPC_RECORD(), PDNS_RPC_RECORD)
        ),
        NDRFullPointerField(
            NDRPacketField("pDeleteRecord", PDNS_RPC_RECORD(), PDNS_RPC_RECORD)
        ),
    ]


class R_DnssrvUpdateRecord3_Response(NDRPacket):
    fields_desc = [NDRIntField("status", 0)]


class R_DnssrvEnumRecords3_Request(NDRPacket):
    fields_desc = [
        NDRIntField("dwClientVersion", 0),
        NDRIntField("dwSettingFlags", 0),
        NDRFullPointerField(NDRConfVarStrNullFieldUtf16("pwszServerName", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszZone", "")),
        NDRFullPointerField(NDRConfVarStrNullFieldUtf16("pwszZoneScope", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszNodeName", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszStartChild", "")),
        NDRShortField("wRecordType", 0),
        NDRIntField("fSelectFlag", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszFilterStart", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszFilterStop", "")),
    ]


class R_DnssrvEnumRecords3_Response(NDRPacket):
    fields_desc = [
        NDRIntField("pdwBufferLength", None, size_of="ppBuffer"),
        NDRConfStrLenField("ppBuffer", "", size_is=lambda pkt: pkt.pdwBufferLength),
        NDRIntField("status", 0),
    ]


class R_DnssrvOperation3_Request(NDRPacket):
    fields_desc = [
        NDRIntField("dwClientVersion", 0),
        NDRIntField("dwSettingFlags", 0),
        NDRFullPointerField(NDRConfVarStrNullFieldUtf16("pwszServerName", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszZone", "")),
        NDRFullPointerField(NDRConfVarStrNullFieldUtf16("pwszZoneScopeName", "")),
        NDRIntField("dwContext", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszOperation", "")),
        NDRIntField("dwTypeId", 0),
        NDRUnionField(
            [
                (
                    NDRFullPointerField(NDRByteField("ppData", 0)),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NULL
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_NULL),
                    ),
                ),
                (
                    NDRIntField("ppData", 0),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DWORD
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_DWORD),
                    ),
                ),
                (
                    NDRFullPointerField(NDRConfVarStrNullField("ppData", "")),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPSTR
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPSTR),
                    ),
                ),
                (
                    NDRFullPointerField(NDRConfVarStrNullFieldUtf16("ppData", "")),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPWSTR
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPWSTR),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PIP4_ARRAY(), PIP4_ARRAY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IPARRAY
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IPARRAY
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_BUFFER(), PDNS_RPC_BUFFER)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_BUFFER
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_BUFFER),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SERVER_INFO_W2K(),
                            PDNS_RPC_SERVER_INFO_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNSSRV_STATS(), PDNSSRV_STATS)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_STATS
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_STATS),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_FORWARDERS_W2K(), PDNS_RPC_FORWARDERS_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_ZONE_W2K(), PDNS_RPC_ZONE_W2K)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_INFO_W2K(), PDNS_RPC_ZONE_INFO_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES_W2K(),
                            PDNS_RPC_ZONE_SECONDARIES_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_DATABASE_W2K(),
                            PDNS_RPC_ZONE_DATABASE_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO_W2K(),
                            PDNS_RPC_ZONE_CREATE_INFO_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_NAME_AND_PARAM(), PDNS_RPC_NAME_AND_PARAM
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NAME_AND_PARAM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NAME_AND_PARAM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_LIST_W2K(), PDNS_RPC_ZONE_LIST_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SERVER_INFO_DOTNET(),
                            PDNS_RPC_SERVER_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_FORWARDERS_DOTNET(),
                            PDNS_RPC_FORWARDERS_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_ZONE(), PDNS_RPC_ZONE)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_INFO_DOTNET(),
                            PDNS_RPC_ZONE_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES_DOTNET(),
                            PDNS_RPC_ZONE_SECONDARIES_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_DATABASE(), PDNS_RPC_ZONE_DATABASE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO_DOTNET(),
                            PDNS_RPC_ZONE_CREATE_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_LIST(), PDNS_RPC_ZONE_LIST
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_EXPORT_INFO(),
                            PDNS_RPC_ZONE_EXPORT_INFO,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_EXPORT
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_EXPORT
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_INFO(), PDNS_RPC_DP_INFO)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_ENUM(), PDNS_RPC_DP_ENUM)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_LIST(), PDNS_RPC_DP_LIST)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ENLIST_DP(), PDNS_RPC_ENLIST_DP
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENLIST_DP
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENLIST_DP
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_CHANGE_DP(), PDNS_RPC_ZONE_CHANGE_DP
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CHANGE_DP
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CHANGE_DP
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_ZONES_FILTER(),
                            PDNS_RPC_ENUM_ZONES_FILTER,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENUM_ZONES_FILTER
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENUM_ZONES_FILTER
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_ADDR_ARRAY(), PDNS_ADDR_ARRAY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ADDRARRAY
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ADDRARRAY
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_SERVER_INFO(), PDNS_RPC_SERVER_INFO
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO(),
                            PDNS_RPC_ZONE_CREATE_INFO,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_FORWARDERS(), PDNS_RPC_FORWARDERS
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES(),
                            PDNS_RPC_ZONE_SECONDARIES,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_IP_VALIDATE(), PDNS_RPC_IP_VALIDATE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IP_VALIDATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IP_VALIDATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_INFO(), PDNS_RPC_ZONE_INFO
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_AUTOCONFIGURE(), PDNS_RPC_AUTOCONFIGURE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_AUTOCONFIGURE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_AUTOCONFIGURE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_UTF8_STRING_LIST(),
                            PDNS_RPC_UTF8_STRING_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UTF8_STRING_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UTF8_STRING_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_UNICODE_STRING_LIST(),
                            PDNS_RPC_UNICODE_STRING_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UNICODE_STRING_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UNICODE_STRING_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_SKD(), PDNS_RPC_SKD)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_SKD_LIST(), PDNS_RPC_SKD_LIST)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_SKD_STATE(), PDNS_RPC_SKD_STATE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_STATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_STATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SIGNING_VALIDATION_ERROR(),
                            PDNS_RPC_SIGNING_VALIDATION_ERROR,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SIGNING_VALIDATION_ERROR
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SIGNING_VALIDATION_ERROR
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_TRUST_POINT_LIST(),
                            PDNS_RPC_TRUST_POINT_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_POINT_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_POINT_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_TRUST_ANCHOR_LIST(),
                            PDNS_RPC_TRUST_ANCHOR_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_ANCHOR_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_ANCHOR_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_DNSSEC_SETTINGS(),
                            PDNS_RPC_ZONE_DNSSEC_SETTINGS,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SIGNING_SETTINGS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SIGNING_SETTINGS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_ZONE_SCOPE_LIST(),
                            PDNS_RPC_ENUM_ZONE_SCOPE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_STATS_V1(), PDNS_RPC_ZONE_STATS_V1
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_STATS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_STATS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SCOPE_CREATE_INFO_V1(),
                            PDNS_RPC_ZONE_SCOPE_CREATE_INFO_V1,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_CREATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_CREATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SCOPE_INFO_V1(),
                            PDNS_RPC_ZONE_SCOPE_INFO_V1,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_SCOPE_LIST(),
                            PDNS_RPC_ENUM_SCOPE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SCOPE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SCOPE_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_CLIENT_SUBNET_RECORD(),
                            PDNS_RPC_CLIENT_SUBNET_RECORD,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_CLIENT_SUBNET_RECORD
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_CLIENT_SUBNET_RECORD
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_POLICY(), PDNS_RPC_POLICY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_POLICY_NAME(), PDNS_RPC_POLICY_NAME
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_NAME
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_NAME
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUMERATE_POLICY_LIST(),
                            PDNS_RPC_ENUMERATE_POLICY_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_RRL_PARAMS(), PDNS_RPC_RRL_PARAMS
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_RRL
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_RRL),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_VIRTUALIZATION_INSTANCE(),
                            PDNS_RPC_VIRTUALIZATION_INSTANCE,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_VIRTUALIZATION_INSTANCE_LIST(),
                            PDNS_RPC_ENUM_VIRTUALIZATION_INSTANCE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE_ENUM
                        ),
                    ),
                ),
            ],
            StrFixedLenField("ppData", "", length=0),
            align=(4, 8),
            switch_fmt=("L", "L"),
        ),
    ]


class R_DnssrvOperation3_Response(NDRPacket):
    fields_desc = [NDRIntField("status", 0)]


class R_DnssrvQuery3_Request(NDRPacket):
    fields_desc = [
        NDRIntField("dwClientVersion", 0),
        NDRIntField("dwSettingFlags", 0),
        NDRFullPointerField(NDRConfVarStrNullFieldUtf16("pwszServerName", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszZone", "")),
        NDRFullPointerField(NDRConfVarStrNullFieldUtf16("pszZoneScopeName", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszOperation", "")),
    ]


class R_DnssrvQuery3_Response(NDRPacket):
    fields_desc = [
        NDRIntField("pdwTypeId", 0),
        NDRUnionField(
            [
                (
                    NDRFullPointerField(NDRByteField("ppData", 0)),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NULL
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_NULL),
                    ),
                ),
                (
                    NDRIntField("ppData", 0),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DWORD
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_DWORD),
                    ),
                ),
                (
                    NDRFullPointerField(NDRConfVarStrNullField("ppData", "")),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPSTR
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPSTR),
                    ),
                ),
                (
                    NDRFullPointerField(NDRConfVarStrNullFieldUtf16("ppData", "")),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPWSTR
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPWSTR),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PIP4_ARRAY(), PIP4_ARRAY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IPARRAY
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IPARRAY
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_BUFFER(), PDNS_RPC_BUFFER)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_BUFFER
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_BUFFER),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SERVER_INFO_W2K(),
                            PDNS_RPC_SERVER_INFO_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNSSRV_STATS(), PDNSSRV_STATS)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_STATS
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_STATS),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_FORWARDERS_W2K(), PDNS_RPC_FORWARDERS_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_ZONE_W2K(), PDNS_RPC_ZONE_W2K)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_INFO_W2K(), PDNS_RPC_ZONE_INFO_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES_W2K(),
                            PDNS_RPC_ZONE_SECONDARIES_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_DATABASE_W2K(),
                            PDNS_RPC_ZONE_DATABASE_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO_W2K(),
                            PDNS_RPC_ZONE_CREATE_INFO_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_NAME_AND_PARAM(), PDNS_RPC_NAME_AND_PARAM
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NAME_AND_PARAM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NAME_AND_PARAM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_LIST_W2K(), PDNS_RPC_ZONE_LIST_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SERVER_INFO_DOTNET(),
                            PDNS_RPC_SERVER_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_FORWARDERS_DOTNET(),
                            PDNS_RPC_FORWARDERS_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_ZONE(), PDNS_RPC_ZONE)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_INFO_DOTNET(),
                            PDNS_RPC_ZONE_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES_DOTNET(),
                            PDNS_RPC_ZONE_SECONDARIES_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_DATABASE(), PDNS_RPC_ZONE_DATABASE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO_DOTNET(),
                            PDNS_RPC_ZONE_CREATE_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_LIST(), PDNS_RPC_ZONE_LIST
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_EXPORT_INFO(),
                            PDNS_RPC_ZONE_EXPORT_INFO,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_EXPORT
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_EXPORT
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_INFO(), PDNS_RPC_DP_INFO)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_ENUM(), PDNS_RPC_DP_ENUM)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_LIST(), PDNS_RPC_DP_LIST)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ENLIST_DP(), PDNS_RPC_ENLIST_DP
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENLIST_DP
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENLIST_DP
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_CHANGE_DP(), PDNS_RPC_ZONE_CHANGE_DP
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CHANGE_DP
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CHANGE_DP
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_ZONES_FILTER(),
                            PDNS_RPC_ENUM_ZONES_FILTER,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENUM_ZONES_FILTER
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENUM_ZONES_FILTER
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_ADDR_ARRAY(), PDNS_ADDR_ARRAY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ADDRARRAY
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ADDRARRAY
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_SERVER_INFO(), PDNS_RPC_SERVER_INFO
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO(),
                            PDNS_RPC_ZONE_CREATE_INFO,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_FORWARDERS(), PDNS_RPC_FORWARDERS
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES(),
                            PDNS_RPC_ZONE_SECONDARIES,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_IP_VALIDATE(), PDNS_RPC_IP_VALIDATE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IP_VALIDATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IP_VALIDATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_INFO(), PDNS_RPC_ZONE_INFO
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_AUTOCONFIGURE(), PDNS_RPC_AUTOCONFIGURE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_AUTOCONFIGURE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_AUTOCONFIGURE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_UTF8_STRING_LIST(),
                            PDNS_RPC_UTF8_STRING_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UTF8_STRING_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UTF8_STRING_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_UNICODE_STRING_LIST(),
                            PDNS_RPC_UNICODE_STRING_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UNICODE_STRING_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UNICODE_STRING_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_SKD(), PDNS_RPC_SKD)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_SKD_LIST(), PDNS_RPC_SKD_LIST)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_SKD_STATE(), PDNS_RPC_SKD_STATE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_STATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_STATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SIGNING_VALIDATION_ERROR(),
                            PDNS_RPC_SIGNING_VALIDATION_ERROR,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SIGNING_VALIDATION_ERROR
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SIGNING_VALIDATION_ERROR
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_TRUST_POINT_LIST(),
                            PDNS_RPC_TRUST_POINT_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_POINT_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_POINT_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_TRUST_ANCHOR_LIST(),
                            PDNS_RPC_TRUST_ANCHOR_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_ANCHOR_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_ANCHOR_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_DNSSEC_SETTINGS(),
                            PDNS_RPC_ZONE_DNSSEC_SETTINGS,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SIGNING_SETTINGS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SIGNING_SETTINGS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_ZONE_SCOPE_LIST(),
                            PDNS_RPC_ENUM_ZONE_SCOPE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_STATS_V1(), PDNS_RPC_ZONE_STATS_V1
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_STATS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_STATS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SCOPE_CREATE_INFO_V1(),
                            PDNS_RPC_ZONE_SCOPE_CREATE_INFO_V1,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_CREATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_CREATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SCOPE_INFO_V1(),
                            PDNS_RPC_ZONE_SCOPE_INFO_V1,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_SCOPE_LIST(),
                            PDNS_RPC_ENUM_SCOPE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SCOPE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SCOPE_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_CLIENT_SUBNET_RECORD(),
                            PDNS_RPC_CLIENT_SUBNET_RECORD,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_CLIENT_SUBNET_RECORD
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_CLIENT_SUBNET_RECORD
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_POLICY(), PDNS_RPC_POLICY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_POLICY_NAME(), PDNS_RPC_POLICY_NAME
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_NAME
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_NAME
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUMERATE_POLICY_LIST(),
                            PDNS_RPC_ENUMERATE_POLICY_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_RRL_PARAMS(), PDNS_RPC_RRL_PARAMS
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_RRL
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_RRL),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_VIRTUALIZATION_INSTANCE(),
                            PDNS_RPC_VIRTUALIZATION_INSTANCE,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_VIRTUALIZATION_INSTANCE_LIST(),
                            PDNS_RPC_ENUM_VIRTUALIZATION_INSTANCE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE_ENUM
                        ),
                    ),
                ),
            ],
            StrFixedLenField("ppData", "", length=0),
            align=(4, 8),
            switch_fmt=("L", "L"),
        ),
        NDRIntField("status", 0),
    ]


class R_DnssrvComplexOperation3_Request(NDRPacket):
    fields_desc = [
        NDRIntField("dwClientVersion", 0),
        NDRIntField("dwSettingFlags", 0),
        NDRFullPointerField(NDRConfVarStrNullFieldUtf16("pwszServerName", "")),
        NDRFullPointerField(
            NDRConfVarStrNullFieldUtf16("pwszVirtualizationInstanceID", "")
        ),
        NDRFullPointerField(NDRConfVarStrNullField("pszZone", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszOperation", "")),
        NDRIntField("dwTypeIn", 0),
        NDRUnionField(
            [
                (
                    NDRFullPointerField(NDRByteField("ppData", 0)),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NULL
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_NULL),
                    ),
                ),
                (
                    NDRIntField("ppData", 0),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DWORD
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_DWORD),
                    ),
                ),
                (
                    NDRFullPointerField(NDRConfVarStrNullField("ppData", "")),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPSTR
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPSTR),
                    ),
                ),
                (
                    NDRFullPointerField(NDRConfVarStrNullFieldUtf16("ppData", "")),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPWSTR
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPWSTR),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PIP4_ARRAY(), PIP4_ARRAY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IPARRAY
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IPARRAY
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_BUFFER(), PDNS_RPC_BUFFER)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_BUFFER
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_BUFFER),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SERVER_INFO_W2K(),
                            PDNS_RPC_SERVER_INFO_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNSSRV_STATS(), PDNSSRV_STATS)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_STATS
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_STATS),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_FORWARDERS_W2K(), PDNS_RPC_FORWARDERS_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_ZONE_W2K(), PDNS_RPC_ZONE_W2K)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_INFO_W2K(), PDNS_RPC_ZONE_INFO_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES_W2K(),
                            PDNS_RPC_ZONE_SECONDARIES_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_DATABASE_W2K(),
                            PDNS_RPC_ZONE_DATABASE_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO_W2K(),
                            PDNS_RPC_ZONE_CREATE_INFO_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_NAME_AND_PARAM(), PDNS_RPC_NAME_AND_PARAM
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NAME_AND_PARAM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NAME_AND_PARAM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_LIST_W2K(), PDNS_RPC_ZONE_LIST_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SERVER_INFO_DOTNET(),
                            PDNS_RPC_SERVER_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_FORWARDERS_DOTNET(),
                            PDNS_RPC_FORWARDERS_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_ZONE(), PDNS_RPC_ZONE)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_INFO_DOTNET(),
                            PDNS_RPC_ZONE_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES_DOTNET(),
                            PDNS_RPC_ZONE_SECONDARIES_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_DATABASE(), PDNS_RPC_ZONE_DATABASE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO_DOTNET(),
                            PDNS_RPC_ZONE_CREATE_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_LIST(), PDNS_RPC_ZONE_LIST
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_EXPORT_INFO(),
                            PDNS_RPC_ZONE_EXPORT_INFO,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_EXPORT
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_EXPORT
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_INFO(), PDNS_RPC_DP_INFO)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_ENUM(), PDNS_RPC_DP_ENUM)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_LIST(), PDNS_RPC_DP_LIST)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ENLIST_DP(), PDNS_RPC_ENLIST_DP
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENLIST_DP
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENLIST_DP
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_CHANGE_DP(), PDNS_RPC_ZONE_CHANGE_DP
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CHANGE_DP
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CHANGE_DP
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_ZONES_FILTER(),
                            PDNS_RPC_ENUM_ZONES_FILTER,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENUM_ZONES_FILTER
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENUM_ZONES_FILTER
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_ADDR_ARRAY(), PDNS_ADDR_ARRAY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ADDRARRAY
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ADDRARRAY
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_SERVER_INFO(), PDNS_RPC_SERVER_INFO
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO(),
                            PDNS_RPC_ZONE_CREATE_INFO,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_FORWARDERS(), PDNS_RPC_FORWARDERS
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES(),
                            PDNS_RPC_ZONE_SECONDARIES,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_IP_VALIDATE(), PDNS_RPC_IP_VALIDATE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IP_VALIDATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IP_VALIDATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_INFO(), PDNS_RPC_ZONE_INFO
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_AUTOCONFIGURE(), PDNS_RPC_AUTOCONFIGURE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_AUTOCONFIGURE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_AUTOCONFIGURE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_UTF8_STRING_LIST(),
                            PDNS_RPC_UTF8_STRING_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UTF8_STRING_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UTF8_STRING_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_UNICODE_STRING_LIST(),
                            PDNS_RPC_UNICODE_STRING_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UNICODE_STRING_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UNICODE_STRING_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_SKD(), PDNS_RPC_SKD)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_SKD_LIST(), PDNS_RPC_SKD_LIST)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_SKD_STATE(), PDNS_RPC_SKD_STATE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_STATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_STATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SIGNING_VALIDATION_ERROR(),
                            PDNS_RPC_SIGNING_VALIDATION_ERROR,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SIGNING_VALIDATION_ERROR
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SIGNING_VALIDATION_ERROR
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_TRUST_POINT_LIST(),
                            PDNS_RPC_TRUST_POINT_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_POINT_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_POINT_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_TRUST_ANCHOR_LIST(),
                            PDNS_RPC_TRUST_ANCHOR_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_ANCHOR_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_ANCHOR_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_DNSSEC_SETTINGS(),
                            PDNS_RPC_ZONE_DNSSEC_SETTINGS,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SIGNING_SETTINGS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SIGNING_SETTINGS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_ZONE_SCOPE_LIST(),
                            PDNS_RPC_ENUM_ZONE_SCOPE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_STATS_V1(), PDNS_RPC_ZONE_STATS_V1
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_STATS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_STATS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SCOPE_CREATE_INFO_V1(),
                            PDNS_RPC_ZONE_SCOPE_CREATE_INFO_V1,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_CREATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_CREATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SCOPE_INFO_V1(),
                            PDNS_RPC_ZONE_SCOPE_INFO_V1,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_SCOPE_LIST(),
                            PDNS_RPC_ENUM_SCOPE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SCOPE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SCOPE_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_CLIENT_SUBNET_RECORD(),
                            PDNS_RPC_CLIENT_SUBNET_RECORD,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_CLIENT_SUBNET_RECORD
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_CLIENT_SUBNET_RECORD
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_POLICY(), PDNS_RPC_POLICY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_POLICY_NAME(), PDNS_RPC_POLICY_NAME
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_NAME
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_NAME
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUMERATE_POLICY_LIST(),
                            PDNS_RPC_ENUMERATE_POLICY_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_RRL_PARAMS(), PDNS_RPC_RRL_PARAMS
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_RRL
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_RRL),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_VIRTUALIZATION_INSTANCE(),
                            PDNS_RPC_VIRTUALIZATION_INSTANCE,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_VIRTUALIZATION_INSTANCE_LIST(),
                            PDNS_RPC_ENUM_VIRTUALIZATION_INSTANCE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeIn", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE_ENUM
                        ),
                    ),
                ),
            ],
            StrFixedLenField("ppData", "", length=0),
            align=(4, 8),
            switch_fmt=("L", "L"),
        ),
    ]


class R_DnssrvComplexOperation3_Response(NDRPacket):
    fields_desc = [
        NDRIntField("pdwTypeOut", 0),
        NDRUnionField(
            [
                (
                    NDRFullPointerField(NDRByteField("ppData", 0)),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NULL
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_NULL),
                    ),
                ),
                (
                    NDRIntField("ppData", 0),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DWORD
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_DWORD),
                    ),
                ),
                (
                    NDRFullPointerField(NDRConfVarStrNullField("ppData", "")),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPSTR
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPSTR),
                    ),
                ),
                (
                    NDRFullPointerField(NDRConfVarStrNullFieldUtf16("ppData", "")),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPWSTR
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPWSTR),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PIP4_ARRAY(), PIP4_ARRAY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IPARRAY
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IPARRAY
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_BUFFER(), PDNS_RPC_BUFFER)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_BUFFER
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_BUFFER),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SERVER_INFO_W2K(),
                            PDNS_RPC_SERVER_INFO_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNSSRV_STATS(), PDNSSRV_STATS)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_STATS
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_STATS),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_FORWARDERS_W2K(), PDNS_RPC_FORWARDERS_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_ZONE_W2K(), PDNS_RPC_ZONE_W2K)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_INFO_W2K(), PDNS_RPC_ZONE_INFO_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES_W2K(),
                            PDNS_RPC_ZONE_SECONDARIES_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_DATABASE_W2K(),
                            PDNS_RPC_ZONE_DATABASE_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO_W2K(),
                            PDNS_RPC_ZONE_CREATE_INFO_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_NAME_AND_PARAM(), PDNS_RPC_NAME_AND_PARAM
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NAME_AND_PARAM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NAME_AND_PARAM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_LIST_W2K(), PDNS_RPC_ZONE_LIST_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SERVER_INFO_DOTNET(),
                            PDNS_RPC_SERVER_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_FORWARDERS_DOTNET(),
                            PDNS_RPC_FORWARDERS_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_ZONE(), PDNS_RPC_ZONE)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_INFO_DOTNET(),
                            PDNS_RPC_ZONE_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES_DOTNET(),
                            PDNS_RPC_ZONE_SECONDARIES_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_DATABASE(), PDNS_RPC_ZONE_DATABASE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO_DOTNET(),
                            PDNS_RPC_ZONE_CREATE_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_LIST(), PDNS_RPC_ZONE_LIST
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_EXPORT_INFO(),
                            PDNS_RPC_ZONE_EXPORT_INFO,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_EXPORT
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_EXPORT
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_INFO(), PDNS_RPC_DP_INFO)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_ENUM(), PDNS_RPC_DP_ENUM)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_LIST(), PDNS_RPC_DP_LIST)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ENLIST_DP(), PDNS_RPC_ENLIST_DP
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENLIST_DP
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENLIST_DP
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_CHANGE_DP(), PDNS_RPC_ZONE_CHANGE_DP
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CHANGE_DP
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CHANGE_DP
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_ZONES_FILTER(),
                            PDNS_RPC_ENUM_ZONES_FILTER,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENUM_ZONES_FILTER
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENUM_ZONES_FILTER
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_ADDR_ARRAY(), PDNS_ADDR_ARRAY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ADDRARRAY
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ADDRARRAY
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_SERVER_INFO(), PDNS_RPC_SERVER_INFO
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO(),
                            PDNS_RPC_ZONE_CREATE_INFO,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_FORWARDERS(), PDNS_RPC_FORWARDERS
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES(),
                            PDNS_RPC_ZONE_SECONDARIES,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_IP_VALIDATE(), PDNS_RPC_IP_VALIDATE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IP_VALIDATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IP_VALIDATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_INFO(), PDNS_RPC_ZONE_INFO
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_AUTOCONFIGURE(), PDNS_RPC_AUTOCONFIGURE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_AUTOCONFIGURE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_AUTOCONFIGURE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_UTF8_STRING_LIST(),
                            PDNS_RPC_UTF8_STRING_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UTF8_STRING_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UTF8_STRING_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_UNICODE_STRING_LIST(),
                            PDNS_RPC_UNICODE_STRING_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UNICODE_STRING_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UNICODE_STRING_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_SKD(), PDNS_RPC_SKD)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_SKD_LIST(), PDNS_RPC_SKD_LIST)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_SKD_STATE(), PDNS_RPC_SKD_STATE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_STATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_STATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SIGNING_VALIDATION_ERROR(),
                            PDNS_RPC_SIGNING_VALIDATION_ERROR,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SIGNING_VALIDATION_ERROR
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SIGNING_VALIDATION_ERROR
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_TRUST_POINT_LIST(),
                            PDNS_RPC_TRUST_POINT_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_POINT_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_POINT_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_TRUST_ANCHOR_LIST(),
                            PDNS_RPC_TRUST_ANCHOR_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_ANCHOR_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_ANCHOR_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_DNSSEC_SETTINGS(),
                            PDNS_RPC_ZONE_DNSSEC_SETTINGS,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SIGNING_SETTINGS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SIGNING_SETTINGS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_ZONE_SCOPE_LIST(),
                            PDNS_RPC_ENUM_ZONE_SCOPE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_STATS_V1(), PDNS_RPC_ZONE_STATS_V1
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_STATS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_STATS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SCOPE_CREATE_INFO_V1(),
                            PDNS_RPC_ZONE_SCOPE_CREATE_INFO_V1,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_CREATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_CREATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SCOPE_INFO_V1(),
                            PDNS_RPC_ZONE_SCOPE_INFO_V1,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_SCOPE_LIST(),
                            PDNS_RPC_ENUM_SCOPE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SCOPE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SCOPE_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_CLIENT_SUBNET_RECORD(),
                            PDNS_RPC_CLIENT_SUBNET_RECORD,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_CLIENT_SUBNET_RECORD
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_CLIENT_SUBNET_RECORD
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_POLICY(), PDNS_RPC_POLICY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_POLICY_NAME(), PDNS_RPC_POLICY_NAME
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_NAME
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_NAME
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUMERATE_POLICY_LIST(),
                            PDNS_RPC_ENUMERATE_POLICY_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_RRL_PARAMS(), PDNS_RPC_RRL_PARAMS
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_RRL
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_RRL),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_VIRTUALIZATION_INSTANCE(),
                            PDNS_RPC_VIRTUALIZATION_INSTANCE,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_VIRTUALIZATION_INSTANCE_LIST(),
                            PDNS_RPC_ENUM_VIRTUALIZATION_INSTANCE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeOut", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE_ENUM
                        ),
                    ),
                ),
            ],
            StrFixedLenField("ppData", "", length=0),
            align=(4, 8),
            switch_fmt=("L", "L"),
        ),
        NDRIntField("status", 0),
    ]


class R_DnssrvOperation4_Request(NDRPacket):
    fields_desc = [
        NDRIntField("dwClientVersion", 0),
        NDRIntField("dwSettingFlags", 0),
        NDRFullPointerField(NDRConfVarStrNullFieldUtf16("pwszServerName", "")),
        NDRFullPointerField(
            NDRConfVarStrNullFieldUtf16("pwszVirtualizationInstanceID", "")
        ),
        NDRFullPointerField(NDRConfVarStrNullField("pszZone", "")),
        NDRFullPointerField(NDRConfVarStrNullFieldUtf16("pwszZoneScopeName", "")),
        NDRIntField("dwContext", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszOperation", "")),
        NDRIntField("dwTypeId", 0),
        NDRUnionField(
            [
                (
                    NDRFullPointerField(NDRByteField("ppData", 0)),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NULL
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_NULL),
                    ),
                ),
                (
                    NDRIntField("ppData", 0),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DWORD
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_DWORD),
                    ),
                ),
                (
                    NDRFullPointerField(NDRConfVarStrNullField("ppData", "")),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPSTR
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPSTR),
                    ),
                ),
                (
                    NDRFullPointerField(NDRConfVarStrNullFieldUtf16("ppData", "")),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPWSTR
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPWSTR),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PIP4_ARRAY(), PIP4_ARRAY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IPARRAY
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IPARRAY
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_BUFFER(), PDNS_RPC_BUFFER)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_BUFFER
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_BUFFER),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SERVER_INFO_W2K(),
                            PDNS_RPC_SERVER_INFO_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNSSRV_STATS(), PDNSSRV_STATS)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_STATS
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_STATS),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_FORWARDERS_W2K(), PDNS_RPC_FORWARDERS_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_ZONE_W2K(), PDNS_RPC_ZONE_W2K)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_INFO_W2K(), PDNS_RPC_ZONE_INFO_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES_W2K(),
                            PDNS_RPC_ZONE_SECONDARIES_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_DATABASE_W2K(),
                            PDNS_RPC_ZONE_DATABASE_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO_W2K(),
                            PDNS_RPC_ZONE_CREATE_INFO_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_NAME_AND_PARAM(), PDNS_RPC_NAME_AND_PARAM
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NAME_AND_PARAM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NAME_AND_PARAM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_LIST_W2K(), PDNS_RPC_ZONE_LIST_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SERVER_INFO_DOTNET(),
                            PDNS_RPC_SERVER_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_FORWARDERS_DOTNET(),
                            PDNS_RPC_FORWARDERS_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_ZONE(), PDNS_RPC_ZONE)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_INFO_DOTNET(),
                            PDNS_RPC_ZONE_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES_DOTNET(),
                            PDNS_RPC_ZONE_SECONDARIES_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_DATABASE(), PDNS_RPC_ZONE_DATABASE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO_DOTNET(),
                            PDNS_RPC_ZONE_CREATE_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_LIST(), PDNS_RPC_ZONE_LIST
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_EXPORT_INFO(),
                            PDNS_RPC_ZONE_EXPORT_INFO,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_EXPORT
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_EXPORT
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_INFO(), PDNS_RPC_DP_INFO)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_ENUM(), PDNS_RPC_DP_ENUM)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_LIST(), PDNS_RPC_DP_LIST)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ENLIST_DP(), PDNS_RPC_ENLIST_DP
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENLIST_DP
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENLIST_DP
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_CHANGE_DP(), PDNS_RPC_ZONE_CHANGE_DP
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CHANGE_DP
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CHANGE_DP
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_ZONES_FILTER(),
                            PDNS_RPC_ENUM_ZONES_FILTER,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENUM_ZONES_FILTER
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENUM_ZONES_FILTER
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_ADDR_ARRAY(), PDNS_ADDR_ARRAY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ADDRARRAY
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ADDRARRAY
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_SERVER_INFO(), PDNS_RPC_SERVER_INFO
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO(),
                            PDNS_RPC_ZONE_CREATE_INFO,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_FORWARDERS(), PDNS_RPC_FORWARDERS
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES(),
                            PDNS_RPC_ZONE_SECONDARIES,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_IP_VALIDATE(), PDNS_RPC_IP_VALIDATE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IP_VALIDATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IP_VALIDATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_INFO(), PDNS_RPC_ZONE_INFO
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_AUTOCONFIGURE(), PDNS_RPC_AUTOCONFIGURE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_AUTOCONFIGURE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_AUTOCONFIGURE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_UTF8_STRING_LIST(),
                            PDNS_RPC_UTF8_STRING_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UTF8_STRING_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UTF8_STRING_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_UNICODE_STRING_LIST(),
                            PDNS_RPC_UNICODE_STRING_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UNICODE_STRING_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UNICODE_STRING_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_SKD(), PDNS_RPC_SKD)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_SKD_LIST(), PDNS_RPC_SKD_LIST)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_SKD_STATE(), PDNS_RPC_SKD_STATE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_STATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_STATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SIGNING_VALIDATION_ERROR(),
                            PDNS_RPC_SIGNING_VALIDATION_ERROR,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SIGNING_VALIDATION_ERROR
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SIGNING_VALIDATION_ERROR
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_TRUST_POINT_LIST(),
                            PDNS_RPC_TRUST_POINT_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_POINT_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_POINT_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_TRUST_ANCHOR_LIST(),
                            PDNS_RPC_TRUST_ANCHOR_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_ANCHOR_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_ANCHOR_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_DNSSEC_SETTINGS(),
                            PDNS_RPC_ZONE_DNSSEC_SETTINGS,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SIGNING_SETTINGS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SIGNING_SETTINGS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_ZONE_SCOPE_LIST(),
                            PDNS_RPC_ENUM_ZONE_SCOPE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_STATS_V1(), PDNS_RPC_ZONE_STATS_V1
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_STATS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_STATS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SCOPE_CREATE_INFO_V1(),
                            PDNS_RPC_ZONE_SCOPE_CREATE_INFO_V1,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_CREATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_CREATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SCOPE_INFO_V1(),
                            PDNS_RPC_ZONE_SCOPE_INFO_V1,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_SCOPE_LIST(),
                            PDNS_RPC_ENUM_SCOPE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SCOPE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SCOPE_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_CLIENT_SUBNET_RECORD(),
                            PDNS_RPC_CLIENT_SUBNET_RECORD,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_CLIENT_SUBNET_RECORD
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_CLIENT_SUBNET_RECORD
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_POLICY(), PDNS_RPC_POLICY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_POLICY_NAME(), PDNS_RPC_POLICY_NAME
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_NAME
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_NAME
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUMERATE_POLICY_LIST(),
                            PDNS_RPC_ENUMERATE_POLICY_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_RRL_PARAMS(), PDNS_RPC_RRL_PARAMS
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_RRL
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_RRL),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_VIRTUALIZATION_INSTANCE(),
                            PDNS_RPC_VIRTUALIZATION_INSTANCE,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_VIRTUALIZATION_INSTANCE_LIST(),
                            PDNS_RPC_ENUM_VIRTUALIZATION_INSTANCE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "dwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE_ENUM
                        ),
                    ),
                ),
            ],
            StrFixedLenField("ppData", "", length=0),
            align=(4, 8),
            switch_fmt=("L", "L"),
        ),
    ]


class R_DnssrvOperation4_Response(NDRPacket):
    fields_desc = [NDRIntField("status", 0)]


class R_DnssrvQuery4_Request(NDRPacket):
    fields_desc = [
        NDRIntField("dwClientVersion", 0),
        NDRIntField("dwSettingFlags", 0),
        NDRFullPointerField(NDRConfVarStrNullFieldUtf16("pwszServerName", "")),
        NDRFullPointerField(
            NDRConfVarStrNullFieldUtf16("pwszVirtualizationInstanceID", "")
        ),
        NDRFullPointerField(NDRConfVarStrNullField("pszZone", "")),
        NDRFullPointerField(NDRConfVarStrNullFieldUtf16("pszZoneScopeName", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszOperation", "")),
    ]


class R_DnssrvQuery4_Response(NDRPacket):
    fields_desc = [
        NDRIntField("pdwTypeId", 0),
        NDRUnionField(
            [
                (
                    NDRFullPointerField(NDRByteField("ppData", 0)),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NULL
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_NULL),
                    ),
                ),
                (
                    NDRIntField("ppData", 0),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DWORD
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_DWORD),
                    ),
                ),
                (
                    NDRFullPointerField(NDRConfVarStrNullField("ppData", "")),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPSTR
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPSTR),
                    ),
                ),
                (
                    NDRFullPointerField(NDRConfVarStrNullFieldUtf16("ppData", "")),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPWSTR
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_LPWSTR),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PIP4_ARRAY(), PIP4_ARRAY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IPARRAY
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IPARRAY
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_BUFFER(), PDNS_RPC_BUFFER)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_BUFFER
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_BUFFER),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SERVER_INFO_W2K(),
                            PDNS_RPC_SERVER_INFO_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNSSRV_STATS(), PDNSSRV_STATS)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_STATS
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_STATS),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_FORWARDERS_W2K(), PDNS_RPC_FORWARDERS_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_ZONE_W2K(), PDNS_RPC_ZONE_W2K)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_INFO_W2K(), PDNS_RPC_ZONE_INFO_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES_W2K(),
                            PDNS_RPC_ZONE_SECONDARIES_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_DATABASE_W2K(),
                            PDNS_RPC_ZONE_DATABASE_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO_W2K(),
                            PDNS_RPC_ZONE_CREATE_INFO_W2K,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_NAME_AND_PARAM(), PDNS_RPC_NAME_AND_PARAM
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NAME_AND_PARAM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_NAME_AND_PARAM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_LIST_W2K(), PDNS_RPC_ZONE_LIST_W2K
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST_W2K
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST_W2K
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SERVER_INFO_DOTNET(),
                            PDNS_RPC_SERVER_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_FORWARDERS_DOTNET(),
                            PDNS_RPC_FORWARDERS_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_ZONE(), PDNS_RPC_ZONE)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_INFO_DOTNET(),
                            PDNS_RPC_ZONE_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES_DOTNET(),
                            PDNS_RPC_ZONE_SECONDARIES_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_DATABASE(), PDNS_RPC_ZONE_DATABASE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_DATABASE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO_DOTNET(),
                            PDNS_RPC_ZONE_CREATE_INFO_DOTNET,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_DOTNET
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE_DOTNET
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_LIST(), PDNS_RPC_ZONE_LIST
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_EXPORT_INFO(),
                            PDNS_RPC_ZONE_EXPORT_INFO,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_EXPORT
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_EXPORT
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_INFO(), PDNS_RPC_DP_INFO)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_ENUM(), PDNS_RPC_DP_ENUM)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_DP_LIST(), PDNS_RPC_DP_LIST)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_DP_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ENLIST_DP(), PDNS_RPC_ENLIST_DP
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENLIST_DP
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENLIST_DP
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_CHANGE_DP(), PDNS_RPC_ZONE_CHANGE_DP
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CHANGE_DP
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CHANGE_DP
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_ZONES_FILTER(),
                            PDNS_RPC_ENUM_ZONES_FILTER,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENUM_ZONES_FILTER
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ENUM_ZONES_FILTER
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_ADDR_ARRAY(), PDNS_ADDR_ARRAY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ADDRARRAY
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ADDRARRAY
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_SERVER_INFO(), PDNS_RPC_SERVER_INFO
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SERVER_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_CREATE_INFO(),
                            PDNS_RPC_ZONE_CREATE_INFO,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_CREATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_FORWARDERS(), PDNS_RPC_FORWARDERS
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_FORWARDERS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SECONDARIES(),
                            PDNS_RPC_ZONE_SECONDARIES,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SECONDARIES
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_IP_VALIDATE(), PDNS_RPC_IP_VALIDATE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IP_VALIDATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_IP_VALIDATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_INFO(), PDNS_RPC_ZONE_INFO
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_AUTOCONFIGURE(), PDNS_RPC_AUTOCONFIGURE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_AUTOCONFIGURE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_AUTOCONFIGURE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_UTF8_STRING_LIST(),
                            PDNS_RPC_UTF8_STRING_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UTF8_STRING_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UTF8_STRING_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_UNICODE_STRING_LIST(),
                            PDNS_RPC_UNICODE_STRING_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UNICODE_STRING_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_UNICODE_STRING_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_SKD(), PDNS_RPC_SKD)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_SKD_LIST(), PDNS_RPC_SKD_LIST)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_SKD_STATE(), PDNS_RPC_SKD_STATE
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_STATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SKD_STATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_SIGNING_VALIDATION_ERROR(),
                            PDNS_RPC_SIGNING_VALIDATION_ERROR,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SIGNING_VALIDATION_ERROR
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SIGNING_VALIDATION_ERROR
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_TRUST_POINT_LIST(),
                            PDNS_RPC_TRUST_POINT_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_POINT_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_POINT_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_TRUST_ANCHOR_LIST(),
                            PDNS_RPC_TRUST_ANCHOR_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_ANCHOR_LIST
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_TRUST_ANCHOR_LIST
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_DNSSEC_SETTINGS(),
                            PDNS_RPC_ZONE_DNSSEC_SETTINGS,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SIGNING_SETTINGS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SIGNING_SETTINGS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_ZONE_SCOPE_LIST(),
                            PDNS_RPC_ENUM_ZONE_SCOPE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_ZONE_STATS_V1(), PDNS_RPC_ZONE_STATS_V1
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_STATS
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_STATS
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SCOPE_CREATE_INFO_V1(),
                            PDNS_RPC_ZONE_SCOPE_CREATE_INFO_V1,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_CREATE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_CREATE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ZONE_SCOPE_INFO_V1(),
                            PDNS_RPC_ZONE_SCOPE_INFO_V1,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_INFO
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_ZONE_SCOPE_INFO
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_SCOPE_LIST(),
                            PDNS_RPC_ENUM_SCOPE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SCOPE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_SCOPE_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_CLIENT_SUBNET_RECORD(),
                            PDNS_RPC_CLIENT_SUBNET_RECORD,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_CLIENT_SUBNET_RECORD
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_CLIENT_SUBNET_RECORD
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField("ppData", PDNS_RPC_POLICY(), PDNS_RPC_POLICY)
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_POLICY_NAME(), PDNS_RPC_POLICY_NAME
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_NAME
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_NAME
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUMERATE_POLICY_LIST(),
                            PDNS_RPC_ENUMERATE_POLICY_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_POLICY_ENUM
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData", PDNS_RPC_RRL_PARAMS(), PDNS_RPC_RRL_PARAMS
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_RRL
                        ),
                        (lambda _, val: val.tag == DNS_RPC_TYPEID.DNSSRV_TYPEID_RRL),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_VIRTUALIZATION_INSTANCE(),
                            PDNS_RPC_VIRTUALIZATION_INSTANCE,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE
                        ),
                    ),
                ),
                (
                    NDRFullPointerField(
                        NDRPacketField(
                            "ppData",
                            PDNS_RPC_ENUM_VIRTUALIZATION_INSTANCE_LIST(),
                            PDNS_RPC_ENUM_VIRTUALIZATION_INSTANCE_LIST,
                        )
                    ),
                    (
                        (
                            lambda pkt: getattr(pkt, "pdwTypeId", None)
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE_ENUM
                        ),
                        (
                            lambda _, val: val.tag
                            == DNS_RPC_TYPEID.DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE_ENUM
                        ),
                    ),
                ),
            ],
            StrFixedLenField("ppData", "", length=0),
            align=(4, 8),
            switch_fmt=("L", "L"),
        ),
        NDRIntField("status", 0),
    ]


class R_DnssrvUpdateRecord4_Request(NDRPacket):
    fields_desc = [
        NDRIntField("dwClientVersion", 0),
        NDRIntField("dwSettingFlags", 0),
        NDRFullPointerField(NDRConfVarStrNullFieldUtf16("pwszServerName", "")),
        NDRFullPointerField(
            NDRConfVarStrNullFieldUtf16("pwszVirtualizationInstanceID", "")
        ),
        NDRFullPointerField(NDRConfVarStrNullField("pszZone", "")),
        NDRFullPointerField(NDRConfVarStrNullFieldUtf16("pwszZoneScope", "")),
        NDRConfVarStrNullField("pszNodeName", ""),
        NDRFullPointerField(
            NDRPacketField("pAddRecord", PDNS_RPC_RECORD(), PDNS_RPC_RECORD)
        ),
        NDRFullPointerField(
            NDRPacketField("pDeleteRecord", PDNS_RPC_RECORD(), PDNS_RPC_RECORD)
        ),
    ]


class R_DnssrvUpdateRecord4_Response(NDRPacket):
    fields_desc = [NDRIntField("status", 0)]


class R_DnssrvEnumRecords4_Request(NDRPacket):
    fields_desc = [
        NDRIntField("dwClientVersion", 0),
        NDRIntField("dwSettingFlags", 0),
        NDRFullPointerField(NDRConfVarStrNullFieldUtf16("pwszServerName", "")),
        NDRFullPointerField(
            NDRConfVarStrNullFieldUtf16("pwszVirtualizationInstanceID", "")
        ),
        NDRFullPointerField(NDRConfVarStrNullField("pszZone", "")),
        NDRFullPointerField(NDRConfVarStrNullFieldUtf16("pwszZoneScope", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszNodeName", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszStartChild", "")),
        NDRShortField("wRecordType", 0),
        NDRIntField("fSelectFlag", 0),
        NDRFullPointerField(NDRConfVarStrNullField("pszFilterStart", "")),
        NDRFullPointerField(NDRConfVarStrNullField("pszFilterStop", "")),
    ]


class R_DnssrvEnumRecords4_Response(NDRPacket):
    fields_desc = [
        NDRIntField("pdwBufferLength", None, size_of="ppBuffer"),
        NDRConfStrLenField("ppBuffer", "", size_is=lambda pkt: pkt.pdwBufferLength),
        NDRIntField("status", 0),
    ]


DNSSERVER_OPNUMS = {
    0: DceRpcOp(R_DnssrvOperation_Request, R_DnssrvOperation_Response),
    1: DceRpcOp(R_DnssrvQuery_Request, R_DnssrvQuery_Response),
    2: DceRpcOp(R_DnssrvComplexOperation_Request, R_DnssrvComplexOperation_Response),
    3: DceRpcOp(R_DnssrvEnumRecords_Request, R_DnssrvEnumRecords_Response),
    4: DceRpcOp(R_DnssrvUpdateRecord_Request, R_DnssrvUpdateRecord_Response),
    5: DceRpcOp(R_DnssrvOperation2_Request, R_DnssrvOperation2_Response),
    6: DceRpcOp(R_DnssrvQuery2_Request, R_DnssrvQuery2_Response),
    7: DceRpcOp(R_DnssrvComplexOperation2_Request, R_DnssrvComplexOperation2_Response),
    8: DceRpcOp(R_DnssrvEnumRecords2_Request, R_DnssrvEnumRecords2_Response),
    9: DceRpcOp(R_DnssrvUpdateRecord2_Request, R_DnssrvUpdateRecord2_Response),
    10: DceRpcOp(R_DnssrvUpdateRecord3_Request, R_DnssrvUpdateRecord3_Response),
    11: DceRpcOp(R_DnssrvEnumRecords3_Request, R_DnssrvEnumRecords3_Response),
    12: DceRpcOp(R_DnssrvOperation3_Request, R_DnssrvOperation3_Response),
    13: DceRpcOp(R_DnssrvQuery3_Request, R_DnssrvQuery3_Response),
    14: DceRpcOp(R_DnssrvComplexOperation3_Request, R_DnssrvComplexOperation3_Response),
    15: DceRpcOp(R_DnssrvOperation4_Request, R_DnssrvOperation4_Response),
    16: DceRpcOp(R_DnssrvQuery4_Request, R_DnssrvQuery4_Response),
    17: DceRpcOp(R_DnssrvUpdateRecord4_Request, R_DnssrvUpdateRecord4_Response),
    18: DceRpcOp(R_DnssrvEnumRecords4_Request, R_DnssrvEnumRecords4_Response),
}
register_dcerpc_interface(
    name="DnsServer",
    uuid=uuid.UUID("50abc2a4-574d-40b3-9d66-ee4fd5fba076"),
    version="5.0",
    opnums=DNSSERVER_OPNUMS,
)
