Prechádzať zdrojové kódy

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 rokov pred
rodič
commit
30012cc3b1
3 zmenil súbory, kde vykonal 4 pridanie a 20 odobranie
  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; )* }
     }