Poll the correct iface in irq handler

This commit is contained in:
jiangjianfeng
2025-04-22 03:26:16 +00:00
committed by Ruihan Li
parent bf4950965b
commit 961ad73847
6 changed files with 39 additions and 30 deletions

View File

@ -7,7 +7,7 @@ use core::num::NonZeroU32;
use super::util::finish_response;
use crate::{
net::{
iface::{Iface, IFACES},
iface::{iter_all_ifaces, Iface},
socket::netlink::{
message::{CMsgSegHdr, CSegmentType, GetRequestFlags, SegHdrCommonFlags},
route::message::{
@ -28,9 +28,7 @@ pub(super) fn do_get_addr(request_segment: &AddrSegment) -> Result<Vec<RtnlSegme
return_errno_with_message!(Errno::EOPNOTSUPP, "GETADDR only supports dump requests");
}
let ifaces = IFACES.get().unwrap();
let mut response_segments: Vec<RtnlSegment> = ifaces
.iter()
let mut response_segments: Vec<RtnlSegment> = iter_all_ifaces()
// GETADDR only supports dump mode, so we're going to report all addresses.
.filter_map(|iface| iface_to_new_addr(request_segment.header(), iface))
.map(RtnlSegment::NewAddr)

View File

@ -9,7 +9,7 @@ use aster_bigtcp::iface::InterfaceType;
use super::util::finish_response;
use crate::{
net::{
iface::{Iface, IFACES},
iface::{iter_all_ifaces, Iface},
socket::netlink::{
message::{CMsgSegHdr, CSegmentType, GetRequestFlags, SegHdrCommonFlags},
route::message::{LinkAttr, LinkSegment, LinkSegmentBody, RtnlSegment},
@ -22,9 +22,7 @@ use crate::{
pub(super) fn do_get_link(request_segment: &LinkSegment) -> Result<Vec<RtnlSegment>> {
let filter_by = FilterBy::from_request(request_segment)?;
let ifaces = IFACES.get().unwrap();
let mut response_segments: Vec<RtnlSegment> = ifaces
.iter()
let mut response_segments: Vec<RtnlSegment> = iter_all_ifaces()
// Filter to include only requested links.
.filter(|iface| match &filter_by {
FilterBy::Index(index) => *index == iface.index(),