Selaa lähdekoodia

Make packet dumps emitted for broken packets more useful.

Before this commit, only the outermost frame (the Ethernet one)
would be shown, which is really no help at all.
whitequark 7 vuotta sitten
vanhempi
commit
30012cc3b1
3 muutettua tiedostoa jossa 4 lisäystä ja 20 poistoa
  1. 3 10
      src/iface/ethernet.rs
  2. 1 1
      src/lib.rs
  3. 0 9
      src/macros.rs

+ 3 - 10
src/iface/ethernet.rs

@@ -6,6 +6,7 @@ use managed::ManagedSlice;
 
 use {Error, Result};
 use phy::{Device, DeviceCapabilities, RxToken, TxToken};
+use wire::pretty_print::PrettyPrinter;
 use wire::{EthernetAddress, EthernetProtocol, EthernetFrame};
 use wire::{Ipv4Address};
 use wire::{IpAddress, IpProtocol, IpRepr, IpCidr};
@@ -181,16 +182,8 @@ impl<'b, 'c, DeviceT> Interface<'b, 'c, DeviceT>
             let dispatch_result = rx_token.consume(timestamp, |frame| {
                 let response = inner.process_ethernet(sockets, timestamp, &frame).map_err(|err| {
                     net_debug!("cannot process ingress packet: {}", err);
-                    if net_log_enabled!(debug) {
-                        match EthernetFrame::new_checked(frame.as_ref()) {
-                            Err(_) => {
-                                net_debug!("packet dump follows:\n{:?}", frame.as_ref());
-                            }
-                            Ok(frame) => {
-                                net_debug!("packet dump follows:\n{}", frame);
-                            }
-                        }
-                    }
+                    net_debug!("packet dump follows:\n{}",
+                               PrettyPrinter::<EthernetFrame<&[u8]>>::new("", &frame));
                     err
                 })?;
                 processed_any = true;

+ 1 - 1
src/lib.rs

@@ -84,7 +84,7 @@ extern crate libc;
 #[cfg(feature = "alloc")]
 extern crate alloc;
 #[cfg(any(test, feature = "log"))]
-#[macro_use(log, log_enabled, trace, debug)]
+#[macro_use(log, trace, debug)]
 extern crate log;
 
 use core::fmt;

+ 0 - 9
src/macros.rs

@@ -1,11 +1,6 @@
 #[cfg(feature = "log")]
 #[macro_use]
 mod log {
-    macro_rules! net_log_enabled {
-        (trace) => (log_enabled!($crate::log::LogLevel::Trace));
-        (debug) => (log_enabled!($crate::log::LogLevel::Debug));
-    }
-
     macro_rules! net_log {
         (trace, $($arg:expr),*) => { trace!($($arg),*); };
         (debug, $($arg:expr),*) => { debug!($($arg),*); };
@@ -15,10 +10,6 @@ mod log {
 #[cfg(not(feature = "log"))]
 #[macro_use]
 mod log {
-    macro_rules! net_log_enabled {
-        ($level:ident) => (false);
-    }
-
     macro_rules! net_log {
         ($level:ident, $($arg:expr),*) => { $( let _ = $arg; )* }
     }