use crate::connection::IscsiConnection; use crate::pdu::{IscsiPdu, Opcode}; use crate::scsi::{InquiryResponse, ReadCapacityResponse, ScsiCommand}; /// Common tool utilities pub async fn inquiry(conn: &mut IscsiConnection, lun: u64) -> crate::Result { let cmd = ScsiCommand::Inquiry; let cdb = cmd.encode_cdb(); let mut pdu = IscsiPdu::new(Opcode::ScsiCmd); pdu.lun = lun; pdu.set_data(bytes::Bytes::from(cdb)); conn.send_pdu(&pdu).await?; let response = conn.recv_pdu().await?; InquiryResponse::parse(&response.data) } pub async fn read_capacity( conn: &mut IscsiConnection, lun: u64, ) -> crate::Result { let cmd = ScsiCommand::ReadCapacity10; let cdb = cmd.encode_cdb(); let mut pdu = IscsiPdu::new(Opcode::ScsiCmd); pdu.lun = lun; pdu.set_data(bytes::Bytes::from(cdb)); conn.send_pdu(&pdu).await?; let response = conn.recv_pdu().await?; ReadCapacityResponse::parse_10(&response.data) }