summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/network/sniffer.rs6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/network/sniffer.rs b/src/network/sniffer.rs
index 4426438..bd16cc4 100644
--- a/src/network/sniffer.rs
+++ b/src/network/sniffer.rs
@@ -95,7 +95,11 @@ impl Sniffer {
pub fn next(&mut self) -> Option<Segment> {
let bytes = self.network_frames.next().ok()?;
// See https://github.com/libpnet/libpnet/blob/master/examples/packetdump.rs
- let payload_offset = if self.network_interface.is_loopback() && cfg!(target_os = "macos") {
+ // VPN interfaces (such as utun0, utun1, etc) have POINT_TO_POINT bit set to 1
+ let payload_offset = if (self.network_interface.is_loopback()
+ || self.network_interface.is_point_to_point())
+ && cfg!(target_os = "macos")
+ {
// The pnet code for BPF loopback adds a zero'd out Ethernet header
14
} else {