public void BVT_Negotiate_Compatible_Wildcard() { //Send wildcard revision number to verify if the server supports SMB2.1 or future dialect revisions. BaseTestSite.Log.Add( LogEntryKind.TestStep, "Send MultiProtocolNegotiate request with dialects: SMB 2.002, SMB 2.???"); string[] dialects = new string[] { "SMB 2.002", "SMB 2.???" }; bool isSmb2002Selected = false; status = client.MultiProtocolNegotiate( dialects, (Packet_Header header, NEGOTIATE_Response response) => { BaseTestSite.Log.Add( LogEntryKind.Debug, "The selected dialect is " + response.DialectRevision); if (TestConfig.MaxSmbVersionSupported == DialectRevision.Smb2002) { BaseTestSite.Assert.AreEqual( DialectRevision.Smb2002, response.DialectRevision, "The server is expected to use dialect: {0}", DialectRevision.Smb2002); isSmb2002Selected = true; } else { BaseTestSite.Assert.AreEqual( DialectRevision.Smb2Wildcard, response.DialectRevision, "The server is expected to use dialect: {0}", DialectRevision.Smb2Wildcard); } }); if (isSmb2002Selected) { return; } //According to server response, send new dialects for negotiation. BaseTestSite.Log.Add( LogEntryKind.TestStep, "Send Negotiate request with dialects: Smb2002, Smb21, Smb30, SMB302"); status = client.Negotiate( Packet_Header_Flags_Values.NONE, TestConfig.RequestDialects, checker: (Packet_Header header, NEGOTIATE_Response response) => { BaseTestSite.Assert.AreEqual( Smb2Status.STATUS_SUCCESS, header.Status, "{0} should succeed, actually server returns {1}.", header.Command, Smb2Status.GetStatusCode(header.Status)); CheckServerCapabilities(response); }); }