nispor/SOURCES/0003-loopback-Fix-interface...

62 lines
2.2 KiB
Diff

From 7ef2df7e8849f7f674c14190fb997fc3f0e7ba67 Mon Sep 17 00:00:00 2001
From: Gris Ge <fge@redhat.com>
Date: Tue, 8 Jun 2021 16:59:31 +0800
Subject: [PATCH 3/3] loopback: Fix interface type of loopback
Using `IFF_LOOPBACK` interface flag to determine whether a interface is
loopback or not is incorrect as other type interface would also hold
this flag.
Fixed to use `ARPHRD_LOOPBACK` from link_layer_type.
Signed-off-by: Gris Ge <fge@redhat.com>
---
src/lib/ifaces/iface.rs | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)
diff --git a/src/lib/ifaces/iface.rs b/src/lib/ifaces/iface.rs
index 60afacd..25ba558 100644
--- a/src/lib/ifaces/iface.rs
+++ b/src/lib/ifaces/iface.rs
@@ -48,10 +48,10 @@ use crate::NisporError;
use netlink_packet_route::rtnl::link::nlas;
use netlink_packet_route::rtnl::LinkMessage;
use netlink_packet_route::rtnl::{
- ARPHRD_ETHER, IFF_ALLMULTI, IFF_AUTOMEDIA, IFF_BROADCAST, IFF_DEBUG,
- IFF_DORMANT, IFF_LOOPBACK, IFF_LOWER_UP, IFF_MASTER, IFF_MULTICAST,
- IFF_NOARP, IFF_POINTOPOINT, IFF_PORTSEL, IFF_PROMISC, IFF_RUNNING,
- IFF_SLAVE, IFF_UP,
+ ARPHRD_ETHER, ARPHRD_LOOPBACK, IFF_ALLMULTI, IFF_AUTOMEDIA, IFF_BROADCAST,
+ IFF_DEBUG, IFF_DORMANT, IFF_LOOPBACK, IFF_LOWER_UP, IFF_MASTER,
+ IFF_MULTICAST, IFF_NOARP, IFF_POINTOPOINT, IFF_PORTSEL, IFF_PROMISC,
+ IFF_RUNNING, IFF_SLAVE, IFF_UP,
};
use rtnetlink::new_connection;
@@ -247,8 +247,10 @@ pub(crate) fn parse_nl_msg_to_iface(
name: name.clone(),
..Default::default()
};
- if nl_msg.header.link_layer_type == ARPHRD_ETHER {
- iface_state.iface_type = IfaceType::Ethernet
+ match nl_msg.header.link_layer_type {
+ ARPHRD_ETHER => iface_state.iface_type = IfaceType::Ethernet,
+ ARPHRD_LOOPBACK => iface_state.iface_type = IfaceType::Loopback,
+ _ => (),
}
iface_state.index = nl_msg.header.index;
let mut link: Option<u32> = None;
@@ -392,9 +394,6 @@ pub(crate) fn parse_nl_msg_to_iface(
_ => (),
}
}
- if (nl_msg.header.flags & IFF_LOOPBACK) > 0 {
- iface_state.iface_type = IfaceType::Loopback;
- }
iface_state.flags = _parse_iface_flags(nl_msg.header.flags);
Ok(Some(iface_state))
}
--
2.32.0