Initial commit

master
Dustin 2018-08-14 22:09:15 -05:00
commit 84bf8c04cd
5 changed files with 77 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/target
**/*.rs.bk

4
Cargo.lock generated Normal file
View File

@ -0,0 +1,4 @@
[[package]]
name = "wakeonlan"
version = "0.1.0"

6
Cargo.toml Normal file
View File

@ -0,0 +1,6 @@
[package]
name = "wakeonlan"
version = "0.1.0"
authors = ["Dustin C. Hatch <dustin@hatch.name>"]
[dependencies]

59
src/magic.rs Normal file
View File

@ -0,0 +1,59 @@
use std::io;
use std::net;
pub struct MagicPacket {
addr: [u8; 6],
}
impl MagicPacket {
pub fn new(addr: [u8; 6]) -> Self {
MagicPacket { addr }
}
pub fn send(&self) -> io::Result<usize> {
let socket = net::UdpSocket::bind("0.0.0.0:0")?;
socket.set_broadcast(true)?;
socket.connect("255.255.255.255:9")?;
socket.send(&self.to_buf())
}
pub fn to_buf(&self) -> [u8; 102] {
[
0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
self.addr[0], self.addr[1], self.addr[2],
self.addr[3], self.addr[4], self.addr[5],
self.addr[0], self.addr[1], self.addr[2],
self.addr[3], self.addr[4], self.addr[5],
self.addr[0], self.addr[1], self.addr[2],
self.addr[3], self.addr[4], self.addr[5],
self.addr[0], self.addr[1], self.addr[2],
self.addr[3], self.addr[4], self.addr[5],
self.addr[0], self.addr[1], self.addr[2],
self.addr[3], self.addr[4], self.addr[5],
self.addr[0], self.addr[1], self.addr[2],
self.addr[3], self.addr[4], self.addr[5],
self.addr[0], self.addr[1], self.addr[2],
self.addr[3], self.addr[4], self.addr[5],
self.addr[0], self.addr[1], self.addr[2],
self.addr[3], self.addr[4], self.addr[5],
self.addr[0], self.addr[1], self.addr[2],
self.addr[3], self.addr[4], self.addr[5],
self.addr[0], self.addr[1], self.addr[2],
self.addr[3], self.addr[4], self.addr[5],
self.addr[0], self.addr[1], self.addr[2],
self.addr[3], self.addr[4], self.addr[5],
self.addr[0], self.addr[1], self.addr[2],
self.addr[3], self.addr[4], self.addr[5],
self.addr[0], self.addr[1], self.addr[2],
self.addr[3], self.addr[4], self.addr[5],
self.addr[0], self.addr[1], self.addr[2],
self.addr[3], self.addr[4], self.addr[5],
self.addr[0], self.addr[1], self.addr[2],
self.addr[3], self.addr[4], self.addr[5],
self.addr[0], self.addr[1], self.addr[2],
self.addr[3], self.addr[4], self.addr[5],
]
}
}

6
src/main.rs Normal file
View File

@ -0,0 +1,6 @@
mod magic;
fn main() {
let packet = magic::MagicPacket::new([0x0c, 0x9d, 0x92, 0x0e, 0x3a, 0x41]);
packet.send().unwrap();
}