1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
use std::net::{UdpSocket, ToSocketAddrs};
use std::io::Error;
pub fn send<A: ToSocketAddrs>(mac: Vec<u8>, bcast_addr: A, bind_addr: A) -> Result<(), Error> {
let mut packet = vec![0u8; 102];
for i in 0..6 {
packet[i] = 0xFF;
}
for i in 0..16 {
for j in 0..6 {
packet[6 + (i * 6) + j] = mac[j];
}
}
let socket = try!(UdpSocket::bind(bind_addr));
try!(socket.set_broadcast(true));
try!(socket.send_to(&packet, bcast_addr));
Ok(())
}