use std::env;
use std::fs::File;
use std::io::Write;
use std::thread;
use std::time::Duration;
use nix::errno::Errno;
use nix::sys::socket::socket;
use nix::sys::socket::AddressFamily;
use nix::sys::socket::SockFlag;
use nix::sys::socket::SockType;
fn main() {
let signal_path =
env::var("PTOOLS_TEST_READY_FILE").expect("PTOOLS_TEST_READY_FILE must be set");
let status_path = env::args()
.nth(1)
.expect("status file path argument must be provided");
let alg_socket = match socket(
AddressFamily::Alg,
SockType::SeqPacket,
SockFlag::empty(),
None,
) {
Ok(fd) => Some(fd),
Err(Errno::EAFNOSUPPORT | Errno::EPROTONOSUPPORT) => None,
Err(e) => panic!("failed to create AF_ALG socket: {e}"),
};
let alg_supported = alg_socket.is_some();
let _alg_socket = alg_socket;
let mut status_file = File::create(status_path).expect("failed to create status file");
if alg_supported {
writeln!(status_file, "supported").expect("failed to write status");
} else {
writeln!(status_file, "unsupported").expect("failed to write status");
}
File::create(signal_path).unwrap();
loop {
thread::sleep(Duration::from_millis(100));
}
}