From 0ba5230d078530fe4daa79b6269675a581fda7f5 Mon Sep 17 00:00:00 2001 From: FxQnLr Date: Thu, 11 Apr 2024 15:42:55 +0200 Subject: revert removal of `create_buffer` --- src/wol.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'src/wol.rs') diff --git a/src/wol.rs b/src/wol.rs index 6392366..1176b28 100644 --- a/src/wol.rs +++ b/src/wol.rs @@ -1,7 +1,29 @@ use std::net::{ToSocketAddrs, UdpSocket}; +use tracing::trace; + use crate::error::Error; +/// Creates the magic packet from a mac address +/// +/// # Panics +/// +/// Panics if `mac_addr` is an invalid mac +pub fn create_buffer(mac_addr: &str) -> Result, Error> { + let mut mac = Vec::new(); + let sp = mac_addr.split(':'); + for f in sp { + mac.push(u8::from_str_radix(f, 16)?); + } + let mut buf = vec![255; 6]; + for _ in 0..16 { + for i in &mac { + buf.push(*i); + } + } + Ok(buf) +} + /// Sends a buffer on UDP broadcast pub fn send_packet( bind_addr: A, @@ -10,5 +32,6 @@ pub fn send_packet( ) -> Result { let socket = UdpSocket::bind(bind_addr)?; socket.set_broadcast(true)?; + trace!(?buffer ,"start with"); Ok(socket.send_to(buffer, broadcast_addr)?) } -- cgit v1.2.3