dltm

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 30, 2024 License: MIT Imports: 10 Imported by: 0

Documentation

Overview

The dltm package implements the DLTM client protocol.

Introduction

This document specifies the Distributed Link Tracking: Central Manager Protocol.

Distributed Link Tracking (DLT) consists of two protocols that work together to discover the new location of a file that has moved. DLT can determine whether the file has moved on a mass-storage device, within a computer, or between computers in a network. In addition to the Distributed Link Tracking: Central Manager Protocol, DLT includes the Distributed Link Tracking: Workstation Protocol, as specified in [MS-DLTW], which is used to determine a file's current location. Both DLT protocols are remote procedure call (RPC) interfaces.

Overview

The Distributed Link Tracking: Central Manager Protocol is based on the Remote Procedure Call Protocol Extensions, as specified in [MS-RPCE]. The primary purpose of this protocol is to allow clients of the Distributed Link Tracking: Workstation Protocol to determine the correct server to contact when searching for a file. To accomplish this, the Distributed Link Tracking (DLT) Central Manager server accepts notifications of file and volume moves, in addition to other relevant information from participating computers. This information can be queried by clients to get the file's current location in UNC form.

The following is a scenario of this protocol working together with the Distributed Link Tracking: Workstation Protocol:

* A file is created on computer M1. M1 assigns identifiers, specifically FileID ( a45c8c1a-fb81-4a65-a3f1-82d471da2197#gt_3b097896-b707-47b5-b1bb-384867a453ea ) and FileLocation ( a45c8c1a-fb81-4a65-a3f1-82d471da2197#gt_d0fe4e63-48a5-4d63-9d51-d4f99306046e ) , to the file.

* Computer M0 makes note of the file, locally storing its identifiers.

* The file is moved from computer M1 to M2 and from there to M3. In conjunction with these moves, the file maintains its FileID value, but a new FileLocation identifier is assigned.

* To find the file in its new location, M0 contacts a DLT Central Manager server to query the current location of the file.

* The DLT Central Manager server queries its tables, and determines that the file is currently on computer M3.

* M0 contacts the Distributed Link Tracking: Central Manager Protocol on M3, and learns the file's new name and location.

The following diagram shows the machine configuration for this example. The list after the diagram walks through the scenario, and describes in more detail how the Distributed Link Tracking: Central Manager Protocol is used.

Index

Constants

This section is empty.

Variables

View Source
var (
	// import guard
	GoPackage = "dltm"
)

Functions

This section is empty.

Types

type CallDelete

type CallDelete struct {
	// cdroidBirth:  This field MUST contain the number of entries in the adroidBirth array.
	BirthCount uint32 `idl:"name:cdroidBirth" json:"birth_count"`
	// adroidBirth:  This field MUST contain an array of FileIDs of files that have been
	// deleted. CDomainRelativeObjId is as specified in [MS-DLTW] section 2.2.3.
	Birth []*dltw.DomainRelativeObjectID `idl:"name:adroidBirth;size_is:(cdroidBirth)" json:"birth"`
	// cVolumes:  This field is unused and MUST be zero.
	VolumesCount uint32 `idl:"name:cVolumes" json:"volumes_count"`
	// pVolumes:  This field is unused and MUST be set to zero.
	Volumes []*dltw.VolumeID `idl:"name:pVolumes;size_is:(cVolumes)" json:"volumes"`
}

CallDelete structure represents TRKSVR_CALL_DELETE RPC structure.

The TRKSVR_CALL_DELETE structure is used in LnkSvrMessage method calls that specify a DELETE_NOTIFY message (see section 2.2.11), to indicate which files are to be removed from the FileTable. See section 3.2.6.2 for an example of the client using this structure.

func (*CallDelete) MarshalNDR

func (o *CallDelete) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*CallDelete) UnmarshalNDR

func (o *CallDelete) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type CallMoveNotification

type CallMoveNotification struct {
	// cNotifications:  This field MUST contain the number of move notifications that were
	// received.
	NotificationsCount uint32 `idl:"name:cNotifications" json:"notifications_count"`
	// cProcessed:  On return to the client, this field MUST indicate the number of notifications
	// from the request message that were actually processed.
	ProcessedCount uint32 `idl:"name:cProcessed" json:"processed_count"`
	// seq:  This field MUST be set by the client to the VolumeSequenceNumber for this VolumeID.
	// This value is used by the client and server to detect whether or not notifications
	// have been lost. For information about sequence numbering, see sections 3.1.4.2 and
	// 3.2.4.2.
	Seq int32 `idl:"name:seq" json:"seq"`
	// fForceSeqNumber:  This field MUST be set by the client to indicate whether the seq
	// value is to be ignored. If set, seq MUST be ignored. Sequence numbering is as specified
	// in sections 3.1.4.2 and 3.2.4.2.
	ForceSeqNumber int32 `idl:"name:fForceSeqNumber" json:"force_seq_number"`
	// pvolid:  This field MUST contain the VolumeID, which indicates the volume from which
	// the files in this notification were moved. CVolumeId is as specified in [MS-DLTW]
	// section 2.2.4.
	Volume *dltw.VolumeID `idl:"name:pvolid" json:"volume"`
	// rgobjidCurrent:  This field MUST contain an array of ObjectIDs with the ObjectID
	// for each file that was moved. CObjId is as specified in [MS-DLTW] section 2.2.5.
	// Note that the previous FileLocation of each of the moved files MUST be determined
	// by composing the VolumeID from the pvolid value with each of the entries in the rgobjidCurrent
	// array.
	Current []*dltw.ObjectID `idl:"name:rgobjidCurrent;size_is:(cNotifications)" json:"current"`
	// rgdroidBirth:  This field MUST contain an array of FileIDs with the FileID for each
	// file that was moved in this request. Each element in the rgdroidBirth array corresponds
	// to the entry with the same index in the rgobjidCurrent array. CDomainRelativeObjId
	// is as specified in [MS-DLTW] section 2.2.3.
	Birth []*dltw.DomainRelativeObjectID `idl:"name:rgdroidBirth;size_is:(cNotifications)" json:"birth"`
	// rgdroidNew:  This field MUST contain an array of FileLocations, with the new FileLocation
	// for each file that was moved in this request. Each element in the rgdroidNew array
	// corresponds to the entry with the same index in the rgobjidCurrent and rgdroidBirth
	// arrays.
	New []*dltw.DomainRelativeObjectID `idl:"name:rgdroidNew;size_is:(cNotifications)" json:"new"`
}

CallMoveNotification structure represents TRKSVR_CALL_MOVE_NOTIFICATION RPC structure.

The TRKSVR_CALL_MOVE_NOTIFICATION structure is used in LnkSvrMessage method calls that specify a MOVE_NOTIFICATION message (see section 2.2.11), to indicate when one or more files have been moved off a volume. See section 3.2.6.1 for an example of the client using this structure.

func (*CallMoveNotification) MarshalNDR

func (o *CallMoveNotification) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*CallMoveNotification) UnmarshalNDR

func (o *CallMoveNotification) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type CallRefresh

type CallRefresh struct {
	// cSources:  This field MUST contain the number of elements in the adroidBirth array.
	SourcesCount uint32 `idl:"name:cSources" json:"sources_count"`
	// adroidBirth:  This field MUST contain an array of FileIDs, with the FileID for files
	// on the client computer for which the client is requesting a refresh. The type of
	// this field, CDomainRelativeObjId, is as specified in [MS-DLTW] section 2.2.3. If
	// this array is empty, it indicates that there are no FileIDs to be refreshed by this
	// request.
	Birth []*dltw.DomainRelativeObjectID `idl:"name:adroidBirth;size_is:(cSources)" json:"birth"`
	// cVolumes:  This field MUST contain the number of elements in the avolid array. Note
	// that this is independent of the cSources value.
	VolumesCount uint32 `idl:"name:cVolumes" json:"volumes_count"`
	// avolid:  This field MUST contain an array of VolumeIDs for volumes on the client
	// computer for which the client requests a refresh. CVolumeId is as specified in [MS-DLTW]
	// section 2.2.4. If this array is empty, it indicates that there are no VolumeIDs to
	// be refreshed by this request.
	Volumes []*dltw.VolumeID `idl:"name:avolid;size_is:(cVolumes)" json:"volumes"`
}

CallRefresh structure represents TRKSVR_CALL_REFRESH RPC structure.

The TRKSVR_CALL_REFRESH structure is used in LnkSvrMessage method calls that specify a REFRESH message (see section 2.2.11), to indicate to the server that a file or volume is still in use. The server uses this to determine when an entry in its tables is no longer in use and can be deleted. See section 3.2.5.2 for an example of client use of this structure.

func (*CallRefresh) MarshalNDR

func (o *CallRefresh) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*CallRefresh) UnmarshalNDR

func (o *CallRefresh) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type CallSearch

type CallSearch struct {
	// cSearch:  This value MUST be set to one.
	SearchCount uint32 `idl:"name:cSearch" json:"search_count"`
	// pSearches:  A pointer to a single search request. See TRK_FILE_TRACKING_INFORMATION
	// (section 2.2.8).
	Searches []*FileTrackingInformation `idl:"name:pSearches;size_is:(cSearch)" json:"searches"`
}

CallSearch structure represents TRKSVR_CALL_SEARCH RPC structure.

The TRKSVR_CALL_SEARCH structure is used in LnkSvrMessage method calls that specify a SEARCH message (see section 2.2.11), to query the DLT Central Manager server for the location of a file. See section 3.2.6.3 for an example of client use of this structure.

func (*CallSearch) MarshalNDR

func (o *CallSearch) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*CallSearch) UnmarshalNDR

func (o *CallSearch) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type CallSyncVolumes

type CallSyncVolumes struct {
	// cVolumes:  On input, the number of subrequests in this message. On return, this is
	// the number of subrequests that the server processed. The details of this usage are
	// specified in sections 3.1.4.4 and 3.2.4.4.
	VolumesCount uint32 `idl:"name:cVolumes" json:"volumes_count"`
	// pVolumes:  An array of subrequests.
	Volumes []*SyncVolume `idl:"name:pVolumes;size_is:(cVolumes)" json:"volumes"`
}

CallSyncVolumes structure represents TRKSVR_CALL_SYNC_VOLUMES RPC structure.

The TRKSVR_CALL_SYNC_VOLUMES structure is used in LnkSvrMessage method calls that specify a SYNC_VOLUMES message (see section 2.2.11), to synchronize volumes between the client and server. For example, this structure is used by the client to request that the server create an entry in its ServerVolumeTable.

This structure holds an array of independent requests. Each of those individual requests is termed a subrequest in this protocol specification. See section 2.2.14 for more information about the individual subrequest data structures. See sections 3.2.5.3 and 3.2.6.4 for examples of the client using this structure.

func (*CallSyncVolumes) MarshalNDR

func (o *CallSyncVolumes) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*CallSyncVolumes) UnmarshalNDR

func (o *CallSyncVolumes) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type Config

type Config struct {
	Parameter uint32 `idl:"name:dwParameter" json:"parameter"`
	NewValue  uint32 `idl:"name:dwNewValue" json:"new_value"`
}

Config structure represents TRKWKS_CONFIG RPC structure.

The TRKWKS_CONFIG structure is unused but is included in this protocol because it affects the definition of the TRKSVR_MESSAGE_UNION, as defined in section 2.2.13.

func (*Config) MarshalNDR

func (o *Config) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*Config) UnmarshalNDR

func (o *Config) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type FileTrackingInformation

type FileTrackingInformation struct {
	// droidBirth:  The FileID of the file for which the location is being requested. For
	// details on this structure, see [MS-DLTW] section 2.2.3.
	Birth *dltw.DomainRelativeObjectID `idl:"name:droidBirth" json:"birth"`
	// droidLast:  On input, the last FileLocation that the client knew of for the file.
	// On output, this member contains the file's current FileLocation.
	LastObjectID *dltw.DomainRelativeObjectID `idl:"name:droidLast" json:"last_object_id"`
	// mcidLast:  On completion of the SEARCH request, this member is returned by the server
	// to indicate the MachineID of the VolumeOwner of the VolumeID component of the droidLast
	// field. The CMachineId type is specified in [MS-DLTW] section 2.2.2.
	LastMachineID *dltw.MachineID `idl:"name:mcidLast" json:"last_machine_id"`
	// hr:  Return value that indicates the success or failure of this message. The type
	// of this field is an HRESULT but, unlike the standard definition, only zero is a successful
	// return value for this field. Any nonzero value MUST be treated identically as a failure
	// value.
	HResult int32 `idl:"name:hr" json:"hresult"`
}

FileTrackingInformation structure represents TRK_FILE_TRACKING_INFORMATION RPC structure.

The TRK_FILE_TRACKING_INFORMATION structure is used in a SEARCH message of a LnkSvrMessage method call to search for the current location of a file. This structure contains information about a file that is being tracked. See section 2.2.11 for more information about the SEARCH message. See section 3.2.6.3 for an example of how the TRK_FILE_TRACKING_INFORMATION structure is used.

func (*FileTrackingInformation) MarshalNDR

func (o *FileTrackingInformation) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*FileTrackingInformation) UnmarshalNDR

func (o *FileTrackingInformation) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type MessagePriority

type MessagePriority uint32

MessagePriority type represents TRKSVR_MESSAGE_PRIORITY RPC enumeration.

The TRKSVR_MESSAGE_PRIORITY enumeration contains constants that indicate the priority level of messages that can be sent by the LnkSvrMessage method. It is used in the TRKSVR_MESSAGE_UNION structure. See section 3.1.4.1 for more information on the LnkSvrMessage method.

var (
	// PRI_0:  Priority 0, the highest priority.
	MessagePriorityP0 MessagePriority = 0
	// PRI_1:  Priority 1.
	MessagePriorityP1 MessagePriority = 1
	// PRI_2:  Priority 2.
	MessagePriorityP2 MessagePriority = 2
	// PRI_3:  Priority 3.
	MessagePriorityP3 MessagePriority = 3
	// PRI_4:  Priority 4.
	MessagePriorityP4 MessagePriority = 4
	// PRI_5:  Priority 5.
	MessagePriorityP5 MessagePriority = 5
	// PRI_6:  Priority 6.
	MessagePriorityP6 MessagePriority = 6
	// PRI_7:  Priority 7.
	MessagePriorityP7 MessagePriority = 7
	// PRI_8:  Priority 8.
	MessagePriorityP8 MessagePriority = 8
	// PRI_9:  Priority 9, the lowest priority.
	MessagePriorityP9 MessagePriority = 9
)

func (MessagePriority) String

func (o MessagePriority) String() string

type MessageType

type MessageType uint32

MessageType type represents TRKSVR_MESSAGE_TYPE RPC enumeration.

The TRKSVR_MESSAGE_TYPE enumeration defines the type of a message that is sent to the DLT Central Manager server by the LnkSvrMessage method. That is, the LnkSvrMessage method is defined such that the caller can send different messages in the form of different structures, and the TRKSVR_MESSAGE_TYPE enumeration is used in the TRKSVR_MESSAGE_UNION parameter of the LnkSvrMessage method to indicate which structure is being passed in a method call. See section 2.2.12 for information on TRKSVR_MESSAGE_UNION, and section 3.1.4.1 for more information on the LnkSvrMessage method.

var (
	// old_SEARCH:  Unused.
	MessageTypeOldSearch MessageType = 0
	// MOVE_NOTIFICATION:  The message includes information about one or more files that
	// have been moved (see section 3.2.6.1). The message data in this method call is formatted
	// in the TRSVR_CALL_MOVE_NOTIFICATION structure (see section 2.2.12.1).
	MessageTypeMoveNotification MessageType = 1
	// REFRESH:  The message communicates the current status of the entries in the ClientVolumeTable,
	// so that the server can update its ServerVolumeTable (see section 3.2.5.2). The message
	// data in this method call is formatted in the TRKSVR_CALL_REFRESH structure (see section
	// 2.2.12.2).
	MessageTypeRefresh MessageType = 2
	// SYNC_VOLUMES:  The message is used to synchronize a volume (see sections 3.2.5.3,
	// 3.2.5.4, and 3.2.6.4). The message data in this method call is formatted in the TRKSVR_CALL_SYNC_VOLUMES
	// structure (see section 2.2.12.3).
	MessageTypeSyncVolumes MessageType = 3
	// DELETE_NOTIFY:  The message includes information about one or more files that have
	// been deleted (see section 3.2.5.5). The message data in this method call is formatted
	// in the TRKSVR_CALL_DELETE structure (see section 2.2.12.4).
	MessageTypeDeleteNotify MessageType = 4
	// STATISTICS:  The message is a request for usage statistics. This message type is
	// not used in this protocol, but is included in this specification because it affects
	// the size of the TRKSVR_MESSAGE_UNION structure as it is transmitted over the RPC
	// Protocol. See section 2.2.12 for more information on the TRKSVR_MESSAGE_UNION.
	MessageTypeStatistics MessageType = 5
	// SEARCH:  The message is a request for information about a moved file’s updated
	// location. (see section 3.2.6.3). The message data in this method call is formatted
	// in the TRKSVRidl_struct_page_CALL_SEARCH structure (see section 2.2.12.6).
	MessageTypeSearch MessageType = 6
	// WKS_CONFIG:  Unused.
	MessageTypeWKSConfig MessageType = 7
	// WKS_VOLUME_REFRESH:  Unused.
	MessageTypeWKSVolumeRefresh MessageType = 8
)

func (MessageType) String

func (o MessageType) String() string

type MessageUnion

type MessageUnion struct {
	// MessageType:  The type of message to be selected from the TRKSVR_MESSAGE_TYPE enumeration.
	// The value of this field indicates the format of the MessageUnion field.
	MessageType MessageType `idl:"name:MessageType" json:"message_type"`
	// Priority:  The priority level of the operation. Valid values are defined in TRKSVR_MESSAGE_PRIORITY.
	// Section 3.2.5.2 and 3.2.5.3, and subsections of section 3.2.6 specify how this field
	// is set for different events.
	//
	// (unnamed union):  The message data for this message request. The MessageType field
	// indicates which of these fields is used to format the data. (see section 2.2.11 for
	// more information on the TRKSVR_MESSAGE_TYPE enumeration used by the MessageType field).
	// The fields are defined as follows:
	Priority     MessagePriority            `idl:"name:Priority" json:"priority"`
	MessageUnion *MessageUnion_MessageUnion `idl:"name:MessageUnion;switch_is:MessageType" json:"message_union"`
	// ptszMachineID:  Unused. MUST be set to 0 and ignored on receipt.
	MachineID string `idl:"name:ptszMachineID;string" json:"machine_id"`
}

MessageUnion structure represents TRKSVR_MESSAGE_UNION RPC structure.

The TRKSVR_MESSAGE_UNION structure is used in LnkSvrMessage method calls to request services. A single LnkSvrMessage method call can contain one type of message request, and the type-dependent data for a message request is stored in the TRKSVR_MESSAGE_UNION structure. The type of the message is indicated in the MessageType field, and the message data is stored in the MessageUnion field. The format of the MessageUnion field depends on the MessageType field. See section 2.2.11 for the definition of the TRKSVR_MESSAGE_TYPE enumeration used by the MessageType field. See section 3.1.4.1 for more information on the LnkSvrMessage method.

func (*MessageUnion) MarshalNDR

func (o *MessageUnion) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*MessageUnion) UnmarshalNDR

func (o *MessageUnion) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type MessageUnion_Delete

type MessageUnion_Delete struct {
	// Delete:  If MessageType is DELETE_NOTIFY, this field contains message data for a
	// DELETE_NOTIFY message, with the data formatted in the TRKSVR_CALL_DELETE structure.
	Delete *CallDelete `idl:"name:Delete" json:"delete"`
}

MessageUnion_Delete structure represents MessageUnion_MessageUnion RPC union arm.

It has following labels: 4

func (*MessageUnion_Delete) MarshalNDR

func (o *MessageUnion_Delete) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*MessageUnion_Delete) UnmarshalNDR

func (o *MessageUnion_Delete) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type MessageUnion_MessageUnion

type MessageUnion_MessageUnion struct {
	// Types that are assignable to Value
	//
	// *MessageUnion_OldSearch
	// *MessageUnion_MoveNotification
	// *MessageUnion_Refresh
	// *MessageUnion_SyncVolumes
	// *MessageUnion_Delete
	// *MessageUnion_Statistics
	// *MessageUnion_Search
	// *MessageUnion_WKSConfig
	// *MessageUnion_WKSRefresh
	Value is_MessageUnion_MessageUnion `json:"value"`
}

MessageUnion_MessageUnion structure represents TRKSVR_MESSAGE_UNION union anonymous member.

The TRKSVR_MESSAGE_UNION structure is used in LnkSvrMessage method calls to request services. A single LnkSvrMessage method call can contain one type of message request, and the type-dependent data for a message request is stored in the TRKSVR_MESSAGE_UNION structure. The type of the message is indicated in the MessageType field, and the message data is stored in the MessageUnion field. The format of the MessageUnion field depends on the MessageType field. See section 2.2.11 for the definition of the TRKSVR_MESSAGE_TYPE enumeration used by the MessageType field. See section 3.1.4.1 for more information on the LnkSvrMessage method.

func (*MessageUnion_MessageUnion) GetValue

func (o *MessageUnion_MessageUnion) GetValue() any

func (*MessageUnion_MessageUnion) MarshalUnionNDR

func (o *MessageUnion_MessageUnion) MarshalUnionNDR(ctx context.Context, w ndr.Writer, sw uint32) error

func (*MessageUnion_MessageUnion) NDRSwitchValue

func (o *MessageUnion_MessageUnion) NDRSwitchValue(sw uint32) uint32

func (*MessageUnion_MessageUnion) UnmarshalUnionNDR

func (o *MessageUnion_MessageUnion) UnmarshalUnionNDR(ctx context.Context, w ndr.Reader, sw uint32) error

type MessageUnion_MoveNotification

type MessageUnion_MoveNotification struct {
	// MoveNotification:  If MessageType is MOVE_NOTIFICATION, this field contains message
	// data for a MOVE_NOTIFICATION message, with the data formatted in the TRKSVR_CALL_MOVE_NOTIFICATION
	// structure.
	MoveNotification *CallMoveNotification `idl:"name:MoveNotification" json:"move_notification"`
}

MessageUnion_MoveNotification structure represents MessageUnion_MessageUnion RPC union arm.

It has following labels: 1

func (*MessageUnion_MoveNotification) MarshalNDR

func (*MessageUnion_MoveNotification) UnmarshalNDR

func (o *MessageUnion_MoveNotification) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type MessageUnion_OldSearch

type MessageUnion_OldSearch struct {
	// old_Search:  Unused.
	OldSearch *OldCallSearch `idl:"name:old_Search" json:"old_search"`
}

MessageUnion_OldSearch structure represents MessageUnion_MessageUnion RPC union arm.

It has following labels: 0

func (*MessageUnion_OldSearch) MarshalNDR

func (o *MessageUnion_OldSearch) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*MessageUnion_OldSearch) UnmarshalNDR

func (o *MessageUnion_OldSearch) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type MessageUnion_Refresh

type MessageUnion_Refresh struct {
	// Refresh:  If MessageType is REFRESH, this field contains message data for a REFRESH
	// message, with the data formatted in the TRKSVR_CALL_REFRESH structure.
	Refresh *CallRefresh `idl:"name:Refresh" json:"refresh"`
}

MessageUnion_Refresh structure represents MessageUnion_MessageUnion RPC union arm.

It has following labels: 2

func (*MessageUnion_Refresh) MarshalNDR

func (o *MessageUnion_Refresh) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*MessageUnion_Refresh) UnmarshalNDR

func (o *MessageUnion_Refresh) UnmarshalNDR(ctx context.Context, w ndr.Reader) error
type MessageUnion_Search struct {
	// Search:  If MessageType is SEARCH, this field contains message data for a SEARCH
	// message, with the data formatted in a TRKSVR_CALL_SEARCH structure.
	Search *CallSearch `idl:"name:Search" json:"search"`
}

MessageUnion_Search structure represents MessageUnion_MessageUnion RPC union arm.

It has following labels: 6

func (*MessageUnion_Search) MarshalNDR

func (o *MessageUnion_Search) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*MessageUnion_Search) UnmarshalNDR

func (o *MessageUnion_Search) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type MessageUnion_Statistics

type MessageUnion_Statistics struct {
	// Statistics:  If MessageType is STATISTICS, this field contains message data for a
	// STATISTICS message, with the data formatted in a TRKSVR_STATISTICS structure. This
	// message type is not used in this protocol, but is included in this specification
	// because it affects the size of the TRKSVR_MESSAGE_UNION structure as it is transmitted
	// over the RPC Protocol.
	Statistics *Statistics `idl:"name:Statistics" json:"statistics"`
}

MessageUnion_Statistics structure represents MessageUnion_MessageUnion RPC union arm.

It has following labels: 5

func (*MessageUnion_Statistics) MarshalNDR

func (o *MessageUnion_Statistics) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*MessageUnion_Statistics) UnmarshalNDR

func (o *MessageUnion_Statistics) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type MessageUnion_SyncVolumes

type MessageUnion_SyncVolumes struct {
	// SyncVolumes:  If MessageType is SYNC_VOLUMES, this field contains message data for
	// a SYNC_VOLUMES message, with the data formatted in the TRKSVR_CALL_SYNC_VOLUMES structure.
	SyncVolumes *CallSyncVolumes `idl:"name:SyncVolumes" json:"sync_volumes"`
}

MessageUnion_SyncVolumes structure represents MessageUnion_MessageUnion RPC union arm.

It has following labels: 3

func (*MessageUnion_SyncVolumes) MarshalNDR

func (o *MessageUnion_SyncVolumes) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*MessageUnion_SyncVolumes) UnmarshalNDR

func (o *MessageUnion_SyncVolumes) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type MessageUnion_WKSConfig

type MessageUnion_WKSConfig struct {
	// WksConfig:  Unused.
	WKSConfig *Config `idl:"name:WksConfig" json:"wks_config"`
}

MessageUnion_WKSConfig structure represents MessageUnion_MessageUnion RPC union arm.

It has following labels: 7

func (*MessageUnion_WKSConfig) MarshalNDR

func (o *MessageUnion_WKSConfig) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*MessageUnion_WKSConfig) UnmarshalNDR

func (o *MessageUnion_WKSConfig) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type MessageUnion_WKSRefresh

type MessageUnion_WKSRefresh struct {
	// WksRefresh:  Unused.
	WKSRefresh uint32 `idl:"name:WksRefresh" json:"wks_refresh"`
}

MessageUnion_WKSRefresh structure represents MessageUnion_MessageUnion RPC union arm.

It has following labels: 8

func (*MessageUnion_WKSRefresh) MarshalNDR

func (o *MessageUnion_WKSRefresh) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*MessageUnion_WKSRefresh) UnmarshalNDR

func (o *MessageUnion_WKSRefresh) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type OldCallSearch

type OldCallSearch struct {
	SearchCount uint32                        `idl:"name:cSearch" json:"search_count"`
	Searches    []*OldFileTrackingInformation `idl:"name:pSearches;size_is:(cSearch)" json:"searches"`
}

OldCallSearch structure represents old_TRKSVR_CALL_SEARCH RPC structure.

The old_TRKSVR_CALL_SEARCH structure is unused but is included in this protocol because it affects the definition of the TRKSVR_MESSAGE_UNION, as defined in section 2.2.13.

func (*OldCallSearch) MarshalNDR

func (o *OldCallSearch) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*OldCallSearch) UnmarshalNDR

func (o *OldCallSearch) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type OldFileTrackingInformation

type OldFileTrackingInformation struct {
	FilePath     []uint16                     `idl:"name:tszFilePath" json:"file_path"`
	Birth        *dltw.DomainRelativeObjectID `idl:"name:droidBirth" json:"birth"`
	LastObjectID *dltw.DomainRelativeObjectID `idl:"name:droidLast" json:"last_object_id"`
	HResult      int32                        `idl:"name:hr" json:"hresult"`
}

OldFileTrackingInformation structure represents old_TRK_FILE_TRACKING_INFORMATION RPC structure.

The old_TRK_FILE_TRACKING_INFORMATION structure is unused, but is included in this protocol because it affects the definition of the TRKSVR_MESSAGE_UNION, as defined in section 2.2.13.

func (*OldFileTrackingInformation) MarshalNDR

func (o *OldFileTrackingInformation) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*OldFileTrackingInformation) UnmarshalNDR

func (o *OldFileTrackingInformation) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type Statistics

type Statistics struct {
	SyncVolumeRequestsCount        uint32              `idl:"name:cSyncVolumeRequests" json:"sync_volume_requests_count"`
	SyncVolumeErrorsCount          uint32              `idl:"name:cSyncVolumeErrors" json:"sync_volume_errors_count"`
	SyncVolumeThreadsCount         uint32              `idl:"name:cSyncVolumeThreads" json:"sync_volume_threads_count"`
	CreateVolumeRequestsCount      uint32              `idl:"name:cCreateVolumeRequests" json:"create_volume_requests_count"`
	CreateVolumeErrorsCount        uint32              `idl:"name:cCreateVolumeErrors" json:"create_volume_errors_count"`
	ClaimVolumeRequestsCount       uint32              `idl:"name:cClaimVolumeRequests" json:"claim_volume_requests_count"`
	ClaimVolumeErrorsCount         uint32              `idl:"name:cClaimVolumeErrors" json:"claim_volume_errors_count"`
	QueryVolumeRequestsCount       uint32              `idl:"name:cQueryVolumeRequests" json:"query_volume_requests_count"`
	QueryVolumeErrorsCount         uint32              `idl:"name:cQueryVolumeErrors" json:"query_volume_errors_count"`
	FindVolumeRequestsCount        uint32              `idl:"name:cFindVolumeRequests" json:"find_volume_requests_count"`
	FindVolumeErrorsCount          uint32              `idl:"name:cFindVolumeErrors" json:"find_volume_errors_count"`
	TestVolumeRequestsCount        uint32              `idl:"name:cTestVolumeRequests" json:"test_volume_requests_count"`
	TestVolumeErrorsCount          uint32              `idl:"name:cTestVolumeErrors" json:"test_volume_errors_count"`
	SearchRequestsCount            uint32              `idl:"name:cSearchRequests" json:"search_requests_count"`
	SearchErrorsCount              uint32              `idl:"name:cSearchErrors" json:"search_errors_count"`
	SearchThreadsCount             uint32              `idl:"name:cSearchThreads" json:"search_threads_count"`
	MoveNotifyRequestsCount        uint32              `idl:"name:cMoveNotifyRequests" json:"move_notify_requests_count"`
	MoveNotifyErrorsCount          uint32              `idl:"name:cMoveNotifyErrors" json:"move_notify_errors_count"`
	MoveNotifyThreadsCount         uint32              `idl:"name:cMoveNotifyThreads" json:"move_notify_threads_count"`
	RefreshRequestsCount           uint32              `idl:"name:cRefreshRequests" json:"refresh_requests_count"`
	RefreshErrorsCount             uint32              `idl:"name:cRefreshErrors" json:"refresh_errors_count"`
	RefreshThreadsCount            uint32              `idl:"name:cRefreshThreads" json:"refresh_threads_count"`
	DeleteNotifyRequestsCount      uint32              `idl:"name:cDeleteNotifyRequests" json:"delete_notify_requests_count"`
	DeleteNotifyErrorsCount        uint32              `idl:"name:cDeleteNotifyErrors" json:"delete_notify_errors_count"`
	DeleteNotifyThreadsCount       uint32              `idl:"name:cDeleteNotifyThreads" json:"delete_notify_threads_count"`
	GCIterationPeriod              uint32              `idl:"name:ulGCIterationPeriod" json:"gc_iteration_period"`
	LastSuccessfulRequest          *dtyp.Filetime      `idl:"name:ftLastSuccessfulRequest" json:"last_successful_request"`
	LastError                      int32               `idl:"name:hrLastError" json:"last_error"`
	MoveLimit                      uint32              `idl:"name:dwMoveLimit" json:"move_limit"`
	RefreshCounter                 int32               `idl:"name:lRefreshCounter" json:"refresh_counter"`
	CachedVolumeTableCount         uint32              `idl:"name:dwCachedVolumeTableCount" json:"cached_volume_table_count"`
	CachedMoveTableCount           uint32              `idl:"name:dwCachedMoveTableCount" json:"cached_move_table_count"`
	CachedLastUpdated              *dtyp.Filetime      `idl:"name:ftCachedLastUpdated" json:"cached_last_updated"`
	IsDesignatedDC                 int32               `idl:"name:fIsDesignatedDc" json:"is_designated_dc"`
	NextGC                         *dtyp.Filetime      `idl:"name:ftNextGC" json:"next_gc"`
	ServiceStart                   *dtyp.Filetime      `idl:"name:ftServiceStart" json:"service_start"`
	MaxRPCThreadsCount             uint32              `idl:"name:cMaxRPCThreads" json:"max_rpc_threads_count"`
	AvailableRPCThreadsCount       uint32              `idl:"name:cAvailableRPCThreads" json:"available_rpc_threads_count"`
	LowestAvailableRPCThreadsCount uint32              `idl:"name:cLowestAvailableRPCThreads" json:"lowest_available_rpc_threads_count"`
	ThreadPoolThreadsCount         uint32              `idl:"name:cNumThreadPoolThreads" json:"thread_pool_threads_count"`
	MostThreadPoolThreadsCount     uint32              `idl:"name:cMostThreadPoolThreads" json:"most_thread_pool_threads_count"`
	EntriesToGCCount               int16               `idl:"name:cEntriesToGC" json:"entries_to_gc_count"`
	EntriesGCedCount               int16               `idl:"name:cEntriesGCed" json:"entries_g_ced_count"`
	MaxDSWriteEventsCount          int16               `idl:"name:cMaxDsWriteEvents" json:"max_ds_write_events_count"`
	CurrentFailedWritesCount       int16               `idl:"name:cCurrentFailedWrites" json:"current_failed_writes_count"`
	Version                        *Statistics_Version `idl:"name:Version" json:"version"`
}

Statistics structure represents TRKSVR_STATISTICS RPC structure.

The TRKSVR_STATISTICS structure was originally defined for use in LnkSvrMessage method calls that specify a STATISTICS message. The STATISTICS message type is not used in this protocol, but is included in this specification because it affects the size of the TRKSVR_MESSAGE_UNION structure as it is transmitted over the RPC Protocol.

func (*Statistics) MarshalNDR

func (o *Statistics) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*Statistics) UnmarshalNDR

func (o *Statistics) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type Statistics_Version

type Statistics_Version struct {
	Major       uint32 `idl:"name:dwMajor" json:"major"`
	Minor       uint32 `idl:"name:dwMinor" json:"minor"`
	BuildNumber uint32 `idl:"name:dwBuildNumber" json:"build_number"`
}

Statistics_Version structure represents TRKSVR_STATISTICS structure anonymous member.

The TRKSVR_STATISTICS structure was originally defined for use in LnkSvrMessage method calls that specify a STATISTICS message. The STATISTICS message type is not used in this protocol, but is included in this specification because it affects the size of the TRKSVR_MESSAGE_UNION structure as it is transmitted over the RPC Protocol.

func (*Statistics_Version) MarshalNDR

func (o *Statistics_Version) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*Statistics_Version) UnmarshalNDR

func (o *Statistics_Version) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type SyncType

type SyncType uint32

SyncType type represents TRKSVR_SYNC_TYPE RPC enumeration.

The TRKSVR_SYNC_TYPE enumeration specifies operations that can be handled during volume synchronization in a SYNC_VOLUMES message (see sections 2.2.11 and 2.2.12.3).

var (
	// CREATE_VOLUME:  Requests that the server maintain a mapping from a VolumeID to a
	// VolumeSecret and MachineID. See section 3.2.5.3 for an example of this subrequest.
	SyncTypeCreateVolume SyncType = 0
	// QUERY_VOLUME:  Requests information about a VolumeID so that the client and server
	// can keep their volume tables synchronized. See section 3.2.6.4 for an example of
	// this subrequest.
	SyncTypeQueryVolume SyncType = 1
	// CLAIM_VOLUME:  Requests that a MachineID become recognized by the server as the
	// VolumeOwner for a VolumeID. See section 3.2.5.3 for an example of this subrequest.
	SyncTypeClaimVolume SyncType = 2
	// FIND_VOLUME:  Requests the MachineID for a VolumeID. See section 3.2.6.4 for an
	// example of this subrequest.
	SyncTypeFindVolume SyncType = 3
	// TEST_VOLUME:  Reserved; MUST NOT be sent. Unused.
	SyncTypeTestVolume SyncType = 4
	// DELETE_VOLUME:  Reserved; MUST NOT be sent. Unused.
	SyncTypeDeleteVolume SyncType = 5
)

func (SyncType) String

func (o SyncType) String() string

type SyncVolume

type SyncVolume struct {
	// hr:  A return value that indicates the success or failure of this TRKSVR_SYNC_VOLUME
	// subrequest. The type of this field is an HRESULT, but unlike the standard definition,
	// for this field, only zero is a successful return value. Except where otherwise specified,
	// this value MUST NOT be TRK_E_VOLUME_QUOTA_EXCEEDED, which is defined in section 3.1.4.1.
	// Any other nonzero value MUST be treated identically as a failure value.
	HResult int32 `idl:"name:hr" json:"hresult"`
	// SyncType:  This indicates the type of synchronization request. Valid values are specified
	// in section 2.2.13.
	SyncType SyncType `idl:"name:SyncType" json:"sync_type"`
	// volume:  The VolumeID to be synchronized. Whether this field is used depends on the
	// SyncType value. For details, see sections 3.2.6.5 and 3.1.4.4. The CVolumeId type
	// is as specified in [MS-DLTW] section 2.2.4.
	Volume *dltw.VolumeID `idl:"name:volume" json:"volume"`
	// secret:  The new VolumeSecret to be used for this VolumeID. Whether this field is
	// used depends on the SyncType value. For details, see sections 3.2.6.5 and 3.1.4.4.
	Secret *VolumeSecret `idl:"name:secret" json:"secret"`
	// secretOld:  A VolumeSecret that is used to authenticate a VolumeOwner. Whether this
	// field is used depends on the SyncType value. For details, see sections 3.2.6.5 and
	// 3.1.4.4.
	SecretOld *VolumeSecret `idl:"name:secretOld" json:"secret_old"`
	// seq:  A VolumeSequenceNumber that is used for synchronization of move notifications,
	// as specified in section 3.1.4.2. Whether this field is used depends on the SyncType
	// value. For details, see sections 3.2.6.5 and 3.1.4.4.
	Seq int32 `idl:"name:seq" json:"seq"`
	// ftLastRefresh:  The last time the server received a REFRESH notification from a client.
	// Whether this field is used depends on the SyncType value. For details, see sections
	// 3.2.6.5 and 3.1.4.4.
	LastRefresh *dtyp.Filetime `idl:"name:ftLastRefresh" json:"last_refresh"`
	// machine:  A MachineID of a VolumeOwner. This VolumeOwner is the VolumeOwner for the
	// VolumeID specified in the volume field. Whether this field is used depends on the
	// SyncType value. For details, see sections 3.2.6.5 and 3.1.4.4; the CMachineId type
	// is as specified in [MS-DLTW] section 2.2.2.
	Machine *dltw.MachineID `idl:"name:machine" json:"machine"`
}

SyncVolume structure represents TRKSVR_SYNC_VOLUME RPC structure.

The TRKSVR_SYNC_VOLUME structure is used as an array in calls to the LnkSvrMessage method that specifies a SYNC_VOLUMES message (see section 2.2.11), which in turn synchronizes volume information between the client and the server. Each TRKSVR_SYNC_VOLUME structure is termed a subrequest in this protocol specification.

func (*SyncVolume) MarshalNDR

func (o *SyncVolume) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*SyncVolume) UnmarshalNDR

func (o *SyncVolume) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type VolumeSecret

type VolumeSecret struct {
	// _abSecret:  An 8-byte volume password. The content of these bytes is arbitrary and
	// is generated by the client. See section 3.2.5.3 for an example of where this value
	// is used.
	Secret []byte `idl:"name:_abSecret" json:"secret"`
}

VolumeSecret structure represents CVolumeSecret RPC structure.

The CVolumeSecret type stores a VolumeSecret value, which is used to authenticate a VolumeOwner value. For an example, see section 3.1.4.4.1, which describes the processing of a CLAIM_VOLUME message.

func (*VolumeSecret) MarshalNDR

func (o *VolumeSecret) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*VolumeSecret) UnmarshalNDR

func (o *VolumeSecret) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

Directories

Path Synopsis
trksvr
v1

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL