libvirt-xdr 0.1.0

XDR serialization/deserialization for libvirt protocol
Documentation

libvirt-xdr

XDR (External Data Representation) serialization/deserialization for libvirt protocol.

This crate provides serde-based XDR encoding/decoding as specified in RFC 4506, specifically tailored for the libvirt RPC protocol.

Features

  • Serde-based serializer and deserializer
  • Support for all XDR primitive types (int, uint, hyper, bool, string, opaque, etc.)
  • Special handling for fixed-length opaque data (UUID)
  • 4-byte alignment and padding

Usage

use serde::{Serialize, Deserialize};

#[derive(Serialize, Deserialize)]
struct MyStruct {
    name: String,
    value: i32,
}

// Serialize to XDR
let data = MyStruct { name: "test".into(), value: 42 };
let bytes = libvirt_xdr::to_bytes(&data)?;

// Deserialize from XDR
let decoded: MyStruct = libvirt_xdr::from_bytes(&bytes)?;

License

MIT OR Apache-2.0