rust-ipmi 0.1.1

IPMI client library for rust
Documentation
use crate::{
    commands::Command,
    parser::{AuthType, IpmiHeader, IpmiV2Header, Packet, Payload, PayloadType},
};

use super::{
    ipmi_payload::{IpmiPayload, NetFn},
    ipmi_payload_request::IpmiPayloadRequest,
};

pub struct IpmiPayloadRawRequest {
    pub netfn: NetFn,
    pub command_code: Command,
    pub data: Option<Vec<u8>>,
}

impl IpmiPayloadRawRequest {
    pub fn new(
        netfn: NetFn,
        command_code: Command,
        data: Option<Vec<u8>>,
    ) -> IpmiPayloadRawRequest {
        IpmiPayloadRawRequest {
            netfn,
            command_code,
            data,
        }
    }

    pub fn create_packet(&self, rmcp_plus_session_id: u32, session_seq_number: u32) -> Packet {
        let netfn = self.netfn.clone();
        let cmd = self.command_code.clone();
        let data = self.data.clone();
        Packet::new(
            IpmiHeader::V2_0(IpmiV2Header {
                auth_type: AuthType::RmcpPlus,
                payload_enc: true,
                payload_auth: true,
                payload_type: PayloadType::IPMI,
                oem_iana: None,
                oem_payload_id: None,
                rmcp_plus_session_id,
                session_seq_number,
                payload_length: 32,
            }),
            Payload::Ipmi(IpmiPayload::Request(IpmiPayloadRequest::new(
                netfn, cmd, data,
            ))),
        )
    }
}