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.
v0.7.x
whitequark 2017-12-08 07:06:25 +00:00
parent be43f4067a
commit 26b8052ee9
3 changed files with 4 additions and 20 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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; )* }
}