From 7c3349e12f095b57b7732f5d6ff9766c29a352eb Mon Sep 17 00:00:00 2001 From: Francis Dupont Date: Thu, 22 Dec 2016 10:55:43 +0100 Subject: [PATCH] [5093] Stop createLinkLayerId at first Ethernet like + en3 -> en7 --- src/lib/dhcp/duid_factory.cc | 6 ++++++ src/lib/dhcp/tests/iface_mgr_unittest.cc | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/lib/dhcp/duid_factory.cc b/src/lib/dhcp/duid_factory.cc index b5563f07c6..bce45110d2 100644 --- a/src/lib/dhcp/duid_factory.cc +++ b/src/lib/dhcp/duid_factory.cc @@ -285,6 +285,12 @@ DUIDFactory::createLinkLayerId(std::vector& identifier, // Assign link layer address and type. identifier.assign(iface->getMac(), iface->getMac() + iface->getMacLen()); htype = iface->getHWType(); + + // If it looks like an Ethernet interface we should be happy + if ((htype == static_cast(HTYPE_ETHER)) && + (iface->getMacLen() == 6)) { + break; + } } // We failed to find an interface which link layer address could be diff --git a/src/lib/dhcp/tests/iface_mgr_unittest.cc b/src/lib/dhcp/tests/iface_mgr_unittest.cc index 5136a10ed3..6276857d8e 100644 --- a/src/lib/dhcp/tests/iface_mgr_unittest.cc +++ b/src/lib/dhcp/tests/iface_mgr_unittest.cc @@ -641,10 +641,10 @@ TEST_F(IfaceMgrTest, getIface) { // Interface name, ifindex IfacePtr iface1(new Iface("lo1", 100)); IfacePtr iface2(new Iface("eth9", 101)); - IfacePtr iface3(new Iface("en3", 102)); + IfacePtr iface3(new Iface("en7", 102)); IfacePtr iface4(new Iface("e1000g4", 103)); cout << "This test assumes that there are less than 100 network interfaces" - << " in the tested system and there are no lo1, eth9, en3, e1000g4" + << " in the tested system and there are no lo1, eth9, en7, e1000g4" << " or wifi15 interfaces present." << endl; // Note: real interfaces may be detected as well @@ -666,7 +666,7 @@ TEST_F(IfaceMgrTest, getIface) { IfacePtr tmp = ifacemgr->getIface(102); ASSERT_TRUE(tmp); - EXPECT_EQ("en3", tmp->getName()); + EXPECT_EQ("en7", tmp->getName()); EXPECT_EQ(102, tmp->getIndex()); // Check that interface can be retrieved by name