Parcourir la source

[5093] Stop createLinkLayerId at first Ethernet like + en3 -> en7

Francis Dupont il y a 8 ans
Parent
commit
7c3349e12f
2 fichiers modifiés avec 9 ajouts et 3 suppressions
  1. 6 0
      src/lib/dhcp/duid_factory.cc
  2. 3 3
      src/lib/dhcp/tests/iface_mgr_unittest.cc

+ 6 - 0
src/lib/dhcp/duid_factory.cc

@@ -285,6 +285,12 @@ DUIDFactory::createLinkLayerId(std::vector<uint8_t>& 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<uint16_t>(HTYPE_ETHER)) &&
+            (iface->getMacLen() == 6)) {
+            break;
+        }
     }
 
     // We failed to find an interface which link layer address could be

+ 3 - 3
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