Using Dummy Fields in Structures

The requirements of this protocol have evolved over time. During the original design phase, typed but unused fields were appended to some structures. In later versions of the protocol, if new data needed to be transmitted between the client and the server, these fields could be used without ill effects, so long as the type of the data was preserved. The servers of a previous version of the Netlogon protocol would receive and ignore the fields.

In many cases, an introduction of a new Ex structure necessitated an introduction of a corresponding Ex remote procedure call (RPC) method for passing the new structure between the client and the server. As an alternative to the growing number of Ex structures and methods, an approach was introduced to avoid the addition of new structures and methods by using dummy fields. New structures would have a few unused fields, such as DummyString1, DummyString2, DummyLong1, and DummyLong2. These dummy fields allow additional information that was not conceived originally to be passed through the interface in a safe fashion. If the structure has not been extended, these fields are set to zero and ignored upon receipt.

For example, a dummy field DummyString1 of the NETLOGON_ONE_DOMAIN_INFO (section structure was used at one point to carry trust extension attributes. As a dummy field got used, it might or might not be renamed. In the case of NETLOGON_ONE_DOMAIN_INFO, DummyString1 was renamed as TrustExtension to reflect the new nature of the field. This scheme of dummy field usage worked well: this protocol running on a new client receiving the NETLOGON_ONE_DOMAIN_INFO structure would use the TrustExtension field as appropriate, while the NETLOGON_ONE_DOMAIN_INFO running on an old client would completely ignore the DummyString1 field.