commit
db39ffd2ad
|
@ -1026,12 +1026,9 @@ impl<'b, 'c, 'e> InterfaceInner<'b, 'c, 'e> {
|
||||||
!self.has_multicast_group(ipv4_repr.dst_addr) {
|
!self.has_multicast_group(ipv4_repr.dst_addr) {
|
||||||
// Ignore IP packets not directed at us, or broadcast, or any of the multicast groups.
|
// 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 AnyIP is enabled, also check if the packet is routed locally.
|
||||||
if !self.any_ip {
|
if !self.any_ip ||
|
||||||
return Ok(None);
|
self.routes.lookup(&IpAddress::Ipv4(ipv4_repr.dst_addr), timestamp)
|
||||||
} else if match self.routes.lookup(&IpAddress::Ipv4(ipv4_repr.dst_addr), timestamp) {
|
.map_or(true, |router_addr| !self.has_ip_addr(router_addr)) {
|
||||||
Some(router_addr) => !self.has_ip_addr(router_addr),
|
|
||||||
None => true,
|
|
||||||
} {
|
|
||||||
return Ok(None);
|
return Ok(None);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1188,10 +1185,9 @@ impl<'b, 'c, 'e> InterfaceInner<'b, 'c, 'e> {
|
||||||
let ip_addr = ip_repr.src_addr.into();
|
let ip_addr = ip_repr.src_addr.into();
|
||||||
match lladdr {
|
match lladdr {
|
||||||
Some(lladdr) if lladdr.is_unicast() && target_addr.is_unicast() => {
|
Some(lladdr) if lladdr.is_unicast() && target_addr.is_unicast() => {
|
||||||
if flags.contains(NdiscNeighborFlags::OVERRIDE) {
|
if flags.contains(NdiscNeighborFlags::OVERRIDE) ||
|
||||||
|
!self.neighbor_cache.lookup(&ip_addr, timestamp).found() {
|
||||||
self.neighbor_cache.fill(ip_addr, lladdr, timestamp)
|
self.neighbor_cache.fill(ip_addr, lladdr, timestamp)
|
||||||
} else if !self.neighbor_cache.lookup(&ip_addr, timestamp).found() {
|
|
||||||
self.neighbor_cache.fill(ip_addr, lladdr, timestamp)
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
_ => (),
|
_ => (),
|
||||||
|
|
|
@ -87,9 +87,6 @@
|
||||||
feature = "socket-tcp")))]
|
feature = "socket-tcp")))]
|
||||||
compile_error!("at least one socket needs to be enabled"); */
|
compile_error!("at least one socket needs to be enabled"); */
|
||||||
|
|
||||||
// FIXME(dlrobertson): clippy fails with this lint
|
|
||||||
#![allow(clippy::if_same_then_else)]
|
|
||||||
#![allow(clippy::manual_non_exhaustive)]
|
|
||||||
#![allow(clippy::match_like_matches_macro)]
|
#![allow(clippy::match_like_matches_macro)]
|
||||||
#![allow(clippy::redundant_field_names)]
|
#![allow(clippy::redundant_field_names)]
|
||||||
#![allow(clippy::identity_op)]
|
#![allow(clippy::identity_op)]
|
||||||
|
|
|
@ -158,6 +158,7 @@ impl Checksum {
|
||||||
|
|
||||||
/// A description of checksum behavior for every supported protocol.
|
/// A description of checksum behavior for every supported protocol.
|
||||||
#[derive(Debug, Clone, Default)]
|
#[derive(Debug, Clone, Default)]
|
||||||
|
#[non_exhaustive]
|
||||||
pub struct ChecksumCapabilities {
|
pub struct ChecksumCapabilities {
|
||||||
pub ipv4: Checksum,
|
pub ipv4: Checksum,
|
||||||
pub udp: Checksum,
|
pub udp: Checksum,
|
||||||
|
@ -166,7 +167,6 @@ pub struct ChecksumCapabilities {
|
||||||
pub icmpv4: Checksum,
|
pub icmpv4: Checksum,
|
||||||
#[cfg(feature = "proto-ipv6")]
|
#[cfg(feature = "proto-ipv6")]
|
||||||
pub icmpv6: Checksum,
|
pub icmpv6: Checksum,
|
||||||
dummy: (),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ChecksumCapabilities {
|
impl ChecksumCapabilities {
|
||||||
|
@ -181,7 +181,6 @@ impl ChecksumCapabilities {
|
||||||
icmpv4: Checksum::None,
|
icmpv4: Checksum::None,
|
||||||
#[cfg(feature = "proto-ipv6")]
|
#[cfg(feature = "proto-ipv6")]
|
||||||
icmpv6: Checksum::None,
|
icmpv6: Checksum::None,
|
||||||
..Self::default()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -191,6 +190,7 @@ impl ChecksumCapabilities {
|
||||||
/// Higher-level protocols may achieve higher throughput or lower latency if they consider
|
/// Higher-level protocols may achieve higher throughput or lower latency if they consider
|
||||||
/// the bandwidth or packet size limitations.
|
/// the bandwidth or packet size limitations.
|
||||||
#[derive(Debug, Clone, Default)]
|
#[derive(Debug, Clone, Default)]
|
||||||
|
#[non_exhaustive]
|
||||||
pub struct DeviceCapabilities {
|
pub struct DeviceCapabilities {
|
||||||
/// Maximum transmission unit.
|
/// Maximum transmission unit.
|
||||||
///
|
///
|
||||||
|
@ -214,10 +214,6 @@ pub struct DeviceCapabilities {
|
||||||
/// If the network device is capable of verifying or computing checksums for some protocols,
|
/// If the network device is capable of verifying or computing checksums for some protocols,
|
||||||
/// it can request that the stack not do so in software to improve performance.
|
/// it can request that the stack not do so in software to improve performance.
|
||||||
pub checksum: ChecksumCapabilities,
|
pub checksum: ChecksumCapabilities,
|
||||||
|
|
||||||
/// Only present to prevent people from trying to initialize every field of DeviceLimits,
|
|
||||||
/// which would not let us add new fields in the future.
|
|
||||||
pub(crate) dummy: ()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// An interface for sending and receiving raw network frames.
|
/// An interface for sending and receiving raw network frames.
|
||||||
|
|
|
@ -1905,6 +1905,7 @@ impl<'a> TcpSocket<'a> {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow(clippy::if_same_then_else)]
|
||||||
pub(crate) fn poll_at(&self) -> PollAt {
|
pub(crate) fn poll_at(&self) -> PollAt {
|
||||||
// The logic here mirrors the beginning of dispatch() closely.
|
// The logic here mirrors the beginning of dispatch() closely.
|
||||||
if !self.remote_endpoint.is_specified() {
|
if !self.remote_endpoint.is_specified() {
|
||||||
|
|
|
@ -86,6 +86,7 @@ impl<T: AsRef<[u8]>> Packet<T> {
|
||||||
///
|
///
|
||||||
/// [set_hardware_len]: #method.set_hardware_len
|
/// [set_hardware_len]: #method.set_hardware_len
|
||||||
/// [set_protocol_len]: #method.set_protocol_len
|
/// [set_protocol_len]: #method.set_protocol_len
|
||||||
|
#[allow(clippy::if_same_then_else)]
|
||||||
pub fn check_len(&self) -> Result<()> {
|
pub fn check_len(&self) -> Result<()> {
|
||||||
let len = self.buffer.as_ref().len();
|
let len = self.buffer.as_ref().len();
|
||||||
if len < field::OPER.end {
|
if len < field::OPER.end {
|
||||||
|
|
|
@ -271,6 +271,7 @@ impl<T: AsRef<[u8]>> Packet<T> {
|
||||||
///
|
///
|
||||||
/// [set_header_len]: #method.set_header_len
|
/// [set_header_len]: #method.set_header_len
|
||||||
/// [set_total_len]: #method.set_total_len
|
/// [set_total_len]: #method.set_total_len
|
||||||
|
#[allow(clippy::if_same_then_else)]
|
||||||
pub fn check_len(&self) -> Result<()> {
|
pub fn check_len(&self) -> Result<()> {
|
||||||
let len = self.buffer.as_ref().len();
|
let len = self.buffer.as_ref().len();
|
||||||
if len < field::DST_ADDR.end {
|
if len < field::DST_ADDR.end {
|
||||||
|
|
Loading…
Reference in New Issue