Optimizations

This commit is contained in:
Dennis Schwerdel 2015-11-19 17:20:34 +01:00
parent eaed378bb7
commit e4c773f10a
1 changed files with 2 additions and 10 deletions

View File

@ -136,7 +136,6 @@ impl MacTable {
} }
} }
pub struct EthCloudInner { pub struct EthCloudInner {
peers: Mutex<PeerList>, peers: Mutex<PeerList>,
mactable: Mutex<MacTable>, mactable: Mutex<MacTable>,
@ -165,13 +164,6 @@ impl EthCloud {
Ok(socket) => socket, Ok(socket) => socket,
_ => panic!("Failed to open socket") _ => panic!("Failed to open socket")
}; };
/*let res: i32;
unsafe {
res = libc::fcntl(socket.as_raw_fd(), libc::consts::os::posix01::F_SETFL, libc::consts::os::extra::O_NONBLOCK);
}
if res != 0 {
panic!("Failed to set socket to non-blocking");
}*/
let tapdev = match TapDevice::new(device) { let tapdev = match TapDevice::new(device) {
Ok(tapdev) => tapdev, Ok(tapdev) => tapdev,
_ => panic!("Failed to open tap device") _ => panic!("Failed to open tap device")
@ -249,8 +241,6 @@ impl EthCloud {
debug!("Recieved {:?} from {}", msg, peer); debug!("Recieved {:?} from {}", msg, peer);
match msg { match msg {
UdpMessage::Frame(frame) => { UdpMessage::Frame(frame) => {
self.peers.lock().expect("Lock poisoned").add(&peer);
self.mactable.lock().expect("Lock poisoned").learn(frame.src, frame.vlan, &peer);
let mut buffer = [0u8; 64*1024]; let mut buffer = [0u8; 64*1024];
let size = eth_encode(&frame, &mut buffer); let size = eth_encode(&frame, &mut buffer);
debug!("Writing ethernet frame to tap: {:?}", frame); debug!("Writing ethernet frame to tap: {:?}", frame);
@ -261,6 +251,8 @@ impl EthCloud {
return Err(Error::TapdevError("Failed to write to tap device")); return Err(Error::TapdevError("Failed to write to tap device"));
} }
} }
self.peers.lock().expect("Lock poisoned").add(&peer);
self.mactable.lock().expect("Lock poisoned").learn(frame.src, frame.vlan, &peer);
}, },
UdpMessage::Peers(peers) => { UdpMessage::Peers(peers) => {
self.peers.lock().expect("Lock poisoned").add(&peer); self.peers.lock().expect("Lock poisoned").add(&peer);