소스 검색

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 년 전
부모
커밋
30012cc3b1
3개의 변경된 파일4개의 추가작업 그리고 20개의 파일을 삭제
  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; )* }
     }