ASSERT_NO_THROW(cfg.use(AF_INET, "lo"));
ASSERT_NO_THROW(cfg.useSocketType(AF_INET, CfgIface::SOCKET_UDP));
cfg.openSockets(AF_INET, DHCP4_SERVER_PORT);
- // No wildcard is no longer a constraint
+ // It is now allowed to use loopback, even with wildcard.
EXPECT_TRUE(socketOpen("lo", "127.0.0.1"));
cfg.closeSockets();
ASSERT_FALSE(socketOpen("lo", "127.0.0.1"));
- // Retry without UDP sockets
+ // Retry without UDP sockets (lo can be only used with udp sockets)
cfg.reset();
ASSERT_NO_THROW(cfg.use(AF_INET, "lo"));
cfg.openSockets(AF_INET, DHCP4_SERVER_PORT);
ASSERT_NO_THROW(cfg.use(AF_INET, "lo"));
ASSERT_NO_THROW(cfg.useSocketType(AF_INET, CfgIface::SOCKET_UDP));
cfg.openSockets(AF_INET, DHCP4_SERVER_PORT);
- // Only loopback is no longer a constraint
+ // The logic used to require lo to be the only interface. That constraint
+ // was removed.
EXPECT_TRUE(socketOpen("lo", "127.0.0.1"));
cfg.closeSockets();
EXPECT_FALSE(socketOpen("lo", "127.0.0.1"));
ASSERT_NO_THROW(cfg.use(AF_INET6, "*"));
ASSERT_NO_THROW(cfg.use(AF_INET6, "lo/::1"));
cfg.openSockets(AF_INET6, DHCP6_SERVER_PORT);
- // No wildcard is no longer a constraint
+ // The logic used to require lo to be used only on its own, not with a
+ // wildcard. That constraint was removed.
EXPECT_TRUE(socketOpen("lo", AF_INET6));
cfg.closeSockets();
ASSERT_FALSE(socketOpen("lo", AF_INET6));
ASSERT_NO_THROW(cfg.use(AF_INET6, "eth0"));
ASSERT_NO_THROW(cfg.use(AF_INET6, "lo/::1"));
cfg.openSockets(AF_INET6, DHCP6_SERVER_PORT);
- // Only loopback is no longer a constraint
+ // The logic used to require lo to be used only on its own, not with a
+ // wildcard. That constraint was removed.
EXPECT_TRUE(socketOpen("lo", AF_INET6));
cfg.closeSockets();
ASSERT_FALSE(socketOpen("lo", AF_INET6));
ASSERT_NO_THROW(cfg.use(AF_INET6, "eth0/2001:db8:1::1"));
ASSERT_NO_THROW(cfg.use(AF_INET6, "lo/::1"));
cfg.openSockets(AF_INET6, DHCP6_SERVER_PORT);
- // Only loopback is no longer a constraint
+ // The logic used to require lo to be used only on its own, not with a
+ // wildcard. That constraint was removed.
EXPECT_TRUE(socketOpen("lo", AF_INET6));
cfg.closeSockets();
ASSERT_FALSE(socketOpen("lo", AF_INET6));