/// <summary> /// Create TRANS2_GET_DFS_REFERRAL Response /// </summary> /// <param name="connection">the connection identified the client</param> /// <param name = "data"> /// field MUST be a properly formatted DFS referral response, as specified in [MS-DFSC] section 2.2.3 /// </param> /// <returns>The SmbTrans2GetDfsReferralResponsePacket </returns> /// <exception cref="ArgumentNullException">connection must not be null</exception> public virtual SmbTrans2GetDfsReferralResponsePacket CreateTrans2GetDfsRefferralResponse( SmbServerConnection connection, RESP_GET_DFS_REFERRAL data) { if (connection == null) { throw new ArgumentNullException("connection"); } SmbTrans2GetDfsReferralResponsePacket packet = new SmbTrans2GetDfsReferralResponsePacket(); // get the request packet SmbPacket request = connection.GetRequestPacket(connection.MessageId); // create smb packet header packet.SmbHeader = CifsMessageUtils.CreateSmbHeader( SmbCommand.SMB_COM_TRANSACTION2, connection.ProcessId, connection.MessageId, request.SmbHeader.Uid, request.SmbHeader.Tid, (SmbFlags)connection.Capability.Flag, (SmbFlags2)connection.Capability.Flags2); // update smb parameters SMB_COM_TRANSACTION2_FinalResponse_SMB_Parameters smbParameters = packet.SmbParameters; smbParameters.Setup = new ushort[0]; smbParameters.WordCount = (byte)(CifsMessageUtils.GetSize<SMB_COM_TRANSACTION2_FinalResponse_SMB_Parameters>( smbParameters) / SmbCapability.NUM_BYTES_OF_WORD); // update smb data SMB_COM_TRANSACTION2_FinalResponse_SMB_Data smbData = packet.SmbData; // update trans2 data TRANS2_GET_DFS_REFERRAL_Response_Trans2_Data trans2Data = packet.Trans2Data; trans2Data.ReferralResponse = data; // store the parameters and data to packet. packet.Trans2Data = trans2Data; packet.SmbParameters = smbParameters; packet.SmbData = smbData; packet.UpdateCountAndOffset(); return packet; }
public SmbTrans2GetDfsReferalFinalResponsePacket CreateTrans2GetDfsReferalFinalResponse( CifsServerPerConnection connection, SmbTrans2GetDfsReferalRequestPacket request, RESP_GET_DFS_REFERRAL referralResponse) { SmbTrans2GetDfsReferalFinalResponsePacket response = new SmbTrans2GetDfsReferalFinalResponsePacket(); response.SmbHeader = CifsMessageUtils.CreateSmbHeader(connection, request); TRANS2_GET_DFS_REFERRAL_Response_Trans2_Data trans2Data = response.Trans2Data; trans2Data.ReferralResponse = referralResponse; response.Trans2Data = trans2Data; response.UpdateCountAndOffset(); return response; }