Răsfoiți Sursa

Improve logging on rejected packets

Thomas Eizinger 5 luni în urmă
părinte
comite
c5b706ac80
2 a modificat fișierele cu 39 adăugiri și 14 ștergeri
  1. 20 6
      src/iface/interface/ipv4.rs
  2. 19 8
      src/iface/interface/ipv6.rs

+ 20 - 6
src/iface/interface/ipv4.rs

@@ -181,13 +181,27 @@ impl InterfaceInner {
         {
             // Ignore IP packets not directed at us, or broadcast, or any of the multicast groups.
             // If AnyIP is enabled, also check if the packet is routed locally.
-            if !self.any_ip
-                || !ipv4_repr.dst_addr.x_is_unicast()
-                || self
-                    .routes
-                    .lookup(&IpAddress::Ipv4(ipv4_repr.dst_addr), self.now)
-                    .map_or(true, |router_addr| !self.has_ip_addr(router_addr))
+
+            if !self.any_ip {
+                net_trace!("Rejecting IPv4 packet; any_ip=false");
+                return None;
+            }
+
+            if !ipv4_repr.dst_addr.x_is_unicast() {
+                net_trace!(
+                    "Rejecting IPv4 packet; {} is not a unicast address",
+                    ipv4_repr.dst_addr
+                );
+                return None;
+            }
+
+            if self
+                .routes
+                .lookup(&IpAddress::Ipv4(ipv4_repr.dst_addr), self.now)
+                .map_or(true, |router_addr| !self.has_ip_addr(router_addr))
             {
+                net_trace!("Rejecting IPv4 packet; no matching routes");
+
                 return None;
             }
         }

+ 19 - 8
src/iface/interface/ipv6.rs

@@ -212,15 +212,26 @@ impl InterfaceInner {
             && !self.has_multicast_group(ipv6_repr.dst_addr)
             && !ipv6_repr.dst_addr.is_loopback()
         {
-            // If AnyIP is enabled, also check if the packet is routed locally.
-            if !self.any_ip
-                || !ipv6_repr.dst_addr.x_is_unicast()
-                || self
-                    .routes
-                    .lookup(&IpAddress::Ipv6(ipv6_repr.dst_addr), self.now)
-                    .map_or(true, |router_addr| !self.has_ip_addr(router_addr))
+            if !self.any_ip {
+                net_trace!("Rejecting IPv6 packet; any_ip=false");
+                return None;
+            }
+
+            if !ipv6_repr.dst_addr.x_is_unicast() {
+                net_trace!(
+                    "Rejecting IPv6 packet; {} is not a unicast address",
+                    ipv6_repr.dst_addr
+                );
+                return None;
+            }
+
+            if self
+                .routes
+                .lookup(&IpAddress::Ipv6(ipv6_repr.dst_addr), self.now)
+                .map_or(true, |router_addr| !self.has_ip_addr(router_addr))
             {
-                net_trace!("packet IP address not for this interface");
+                net_trace!("Rejecting IPv6 packet; no matching routes");
+
                 return None;
             }
         }