3.3.4.1 Change Orders

When a change happens in the local file system for the replica tree, the upstream partner MUST construct a change order to be sent to all downstream partners through FrsSendCommPkt.

The following are the six types of changes that the upstream partner MUST monitor.

This section specifies the common details for these six types of changes.

For each type of change, the upstream partner MUST call FrsRpcSendCommPkt to send a COMM_PACKET object to a downstream partner on each outbound connection.

The COMM_PACKET object MUST be constructed as specified in section 2.2.3.5 with the following values.

COMM_BOP: MUST be 0.

COMM_COMMAND: 0x218 (CMD_REMOTE_CO).

COMM_TO:

  • GUID: MUST be the ObjectGuid of the downstream partner's NTFRS member object (see section 2.3.2.3).

  • Name: SHOULD<64> be the FQDN of the downstream partner. <65>

COMM_FROM:

  • GUID: SHOULD be the objectGuid of the local member's NTFRS member object. <66>

  • Name: SHOULD<67> be the FQDN of the local member. <68>

COMM_REPLICA:

  • GUID: MUST be the objectGuid of the downstream partner's NTFRS member object.

  • Name: SHOULD be the name of the NTFRS replica set object. <69>

COMM_CXTION:

  • GUID: MUST be the outbound connection GUID

  • Name: SHOULD be the downstream partner's DNS hostname. <70>

COMM_JOIN_GUID: MUST be the GUID of the current connection session (see section 3.1.1.5).

COMM_LAST_JOIN_TIME: MUST be the Join time of the current successful connection session.

COMM_REMOTE_CO:

  • SequenceNumber: A 32-bit, unsigned integer that indicates the sequence number in the change order command. It MUST be initialized to 0. The sequence number is incremented with each change order that goes into the outbound log. The sequence number is unique per replica set per machine.

  • State: MUST be 0x14. (Request outbound propagation.)

  • Flags: Specified in sections 3.3.4.2 through 3.3.4.6.

  • IFlags: Specified in sections 3.3.4.2 through 3.3.4.6.

  • ContentCmd: Specified in sections 3.3.4.2 through 3.3.4.6.

  • LocationCmd: Specified in sections 3.3.4.2 through 3.3.4.6.

  • FileAttributes: File attributes, as specified in [MS-FSCC].

  • FileVersionNumber: The number of times that this file is closed after being modified. It is used in conflict resolution.

  • PartnerAckSeqNumber: MUST be the same as SequenceNumber.

  • FileSize: For files, MUST be the file size. For folders, it MUST be 0.   <71>

  • FileOffset: MUST be 0.

  • FrsVsn: MUST be the volume sequence number (VSN) for the file.

  • FileUsn: A 64-bit, unsigned integer that MUST indicate the internal implementation-specific data on the current replica member. This value is only meaningful on the current replica member and has no meaning on any other replica member.

  • JrnlUsn: A 64-bit, unsigned integer that MUST indicate the internal implementation-specific data on the current replica member. This value is only meaningful on the current replica member and has no meaning on any other replica member.

  • JrnlFirstUsn: A 64-bit, unsigned integer that MUST indicate the internal implementation-specific data on the current replica member. This value is only meaningful on the current replica member and has no meaning on any other replica member.

  • OriginalReplicaNum: A 32-bit, unsigned integer that MUST indicate the internal implementation-specific data on the current replica member. This value is only meaningful on the current replica member and has no meaning on any other replica member.

  • NewReplicaNum: A 32-bit, unsigned integer that MUST indicate the internal implementation-specific data on the current replica member. This value is only meaningful on the current replica member and has no meaning on any other replica member.

  • ChangeOrderGuid: MUST be the GUID of the change order.

  • OriginatorGuid: MUST be the originator GUID.

  • FileGuid: MUST be the file GUID in the IDTable.

  • OldParentGuid: MUST be the parent GUID.

  • NewParentGuid: MUST be the parent GUID.

  • CxtionGuid: MUST be the connection GUID.

  • AckVersion: A 64-bit, unsigned integer that MUST indicate the internal implementation-specific data on the current replica member. This value is only meaningful on the current replica member and has no meaning on any other replica member. After the change order is sent to another replica member, the receiving partner MUST NOT update this field.

  • Extension: MUST be ignored.

  • EventTime: MUST be the time stamp when the change happened in FILETIME format.  <72>

  • FileNameLength: MUST be the byte count of the FileName.

  • FileName: MUST be the file name.

  • Spare2Ull: MUST be 0.

  • Spare1Guid: MUST be 0.

  • Spare2Guid: MUST be 0.

  • Spare1Wcs: Must be 0

  • Spare2Wcs: MUST be 0.

  • Spare2Bin: MUST be 0.

COMM_CO_EXTENSION_2: Constructed as specified in section 2.2.3.6.22.

COMM_EOP: MUST be 0xffffffff.