Skip to content

Commit

Permalink
Minor improvements to r-lablib
Browse files Browse the repository at this point in the history
  • Loading branch information
robgonnella committed Sep 24, 2024
1 parent edce626 commit 79f5076
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 59 deletions.
57 changes: 24 additions & 33 deletions r-lanlib/src/packet/wire.rs
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,22 @@ impl Sender for PNetSender {
unsafe impl Send for PNetSender {}
unsafe impl Sync for PNetSender {}

pub fn new_default_reader(
pub fn default(
interface: &NetworkInterface,
) -> Result<Arc<Mutex<dyn Reader>>, Box<dyn Error>> {
let cfg = pnet::datalink::Config::default();
) -> Result<(Arc<Mutex<dyn Reader>>, Arc<Mutex<dyn Sender>>), Box<dyn Error>> {
let cfg = pnet::datalink::Config {
bpf_fd_attempts: 1000,
channel_type: datalink::ChannelType::Layer2,
linux_fanout: None,
promiscuous: true,
read_buffer_size: 16384,
write_buffer_size: 16384,
read_timeout: None,
write_timeout: None,
socket_fd: None,
};

println!("cfg --> {:?}", cfg);

let channel = match pnet::datalink::channel(&interface.into(), cfg) {
Ok(pnet::datalink::Channel::Ethernet(tx, rx)) => Ok((tx, rx)),
Expand All @@ -65,26 +77,12 @@ pub fn new_default_reader(
Err(e) => Err(e),
}?;

Ok(Arc::new(Mutex::new(PNetReader {
receiver: channel.1,
})))
}

pub fn new_default_sender(
interface: &NetworkInterface,
) -> Result<Arc<Mutex<dyn Sender>>, Box<dyn Error>> {
let cfg = pnet::datalink::Config::default();

let channel = match pnet::datalink::channel(&interface.into(), cfg) {
Ok(pnet::datalink::Channel::Ethernet(tx, rx)) => Ok((tx, rx)),
Ok(_) => Err(std::io::Error::new(
std::io::ErrorKind::Other,
"failed to create packet sender",
)),
Err(e) => Err(e),
}?;

Ok(Arc::new(Mutex::new(PNetSender { sender: channel.0 })))
Ok((
Arc::new(Mutex::new(PNetReader {
receiver: channel.1,
})),
Arc::new(Mutex::new(PNetSender { sender: channel.0 })),
))
}

#[cfg(test)]
Expand All @@ -108,16 +106,9 @@ mod tests {
}

#[test]
fn creates_default_reader() {
let interface = get_default_interface();
let reader = new_default_reader(&interface);
assert!(reader.is_ok())
}

#[test]
fn creates_default_sender() {
fn creates_default_wire() {
let interface = get_default_interface();
let sender = new_default_sender(&interface);
assert!(sender.is_ok())
let wire = default(&interface);
assert!(wire.is_ok())
}
}
18 changes: 5 additions & 13 deletions r-lanscan/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -299,15 +299,7 @@ fn main() -> Result<(), Report> {

let (tx, rx) = mpsc::channel::<ScanMessage>();

let packet_reader = packet::wire::new_default_reader(&interface).or_else(|e| {
Err(ScanError {
ip: None,
port: None,
error: Box::from(e),
})
})?;

let packet_sender = packet::wire::new_default_sender(&interface).or_else(|e| {
let wire = packet::wire::default(&interface).or_else(|e| {
Err(ScanError {
ip: None,
port: None,
Expand All @@ -318,8 +310,8 @@ fn main() -> Result<(), Report> {
let (arp_results, rx) = process_arp(
&args,
&interface,
Arc::clone(&packet_reader),
Arc::clone(&packet_sender),
Arc::clone(&wire.0),
Arc::clone(&wire.1),
rx,
tx.clone(),
)?;
Expand All @@ -333,8 +325,8 @@ fn main() -> Result<(), Report> {
let final_results = process_syn(
&args,
&interface,
Arc::clone(&packet_reader),
Arc::clone(&packet_sender),
Arc::clone(&wire.0),
Arc::clone(&wire.1),
arp_results,
rx,
tx.clone(),
Expand Down
18 changes: 5 additions & 13 deletions r-lanui/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -211,15 +211,7 @@ fn monitor_network(

let (tx, rx) = mpsc::channel::<ScanMessage>();

let packet_reader = packet::wire::new_default_reader(&interface).or_else(|e| {
Err(ScanError {
ip: None,
port: None,
error: Box::from(e),
})
})?;

let packet_sender = packet::wire::new_default_sender(&interface).or_else(|e| {
let wire = packet::wire::default(&interface).or_else(|e| {
Err(ScanError {
ip: None,
port: None,
Expand All @@ -228,8 +220,8 @@ fn monitor_network(
})?;

let (arp_results, rx) = process_arp(
Arc::clone(&packet_reader),
Arc::clone(&packet_sender),
Arc::clone(&wire.0),
Arc::clone(&wire.1),
&interface,
interface.cidr.clone(),
rx,
Expand All @@ -238,8 +230,8 @@ fn monitor_network(
)?;

let results = process_syn(
Arc::clone(&packet_reader),
Arc::clone(&packet_sender),
Arc::clone(&wire.0),
Arc::clone(&wire.1),
&interface,
arp_results,
config.ports.clone(),
Expand Down

0 comments on commit 79f5076

Please sign in to comment.