2
0
mirror of https://gitlab.isc.org/isc-projects/kea synced 2025-08-31 05:55:28 +00:00

[1959] Test opening socket from remote broadcast address on Linux only.

In order to run this test interface detection is required. Since it is
right now implemented on Linux only it had to be disabled on every other
OS.
This commit is contained in:
Marcin Siodelski
2012-09-12 11:16:17 +02:00
parent 1a4c5a70d4
commit 45ca30e42d
2 changed files with 11 additions and 0 deletions

View File

@@ -513,6 +513,7 @@ IfaceMgr::getLocalAddress(const IOAddress& remote_addr, const uint16_t port) {
}
sock.set_option(asio::socket_base::broadcast(true), err_code);
if (err_code) {
sock.close();
isc_throw(Unexpected, "failed to enable broadcast on the socket");
}
}
@@ -520,6 +521,7 @@ IfaceMgr::getLocalAddress(const IOAddress& remote_addr, const uint16_t port) {
// Try to connect to remote endpoint and check if attempt is successful.
sock.connect(remote_endpoint->getASIOEndpoint(), err_code);
if (err_code) {
sock.close();
isc_throw(Unexpected,"failed to connect to remote endpoint.");
}
@@ -528,6 +530,9 @@ IfaceMgr::getLocalAddress(const IOAddress& remote_addr, const uint16_t port) {
sock.local_endpoint();
asio::ip::address local_address(local_endpoint.address());
// Close the socket.
sock.close();
// Return address of local endpoint.
return IOAddress(local_address);
}

View File

@@ -407,6 +407,11 @@ TEST_F(IfaceMgrTest, socketsFromRemoteAddress) {
EXPECT_GT(socket2, 0);
close(socket2);
// The following test is currently disabled for OSes other than
// Linux because interface detection is not implemented on them.
// @todo enable this test for all OSes once interface detection
// is implemented.
#if defined(OS_LINUX)
// Open v4 socket to connect to broadcast address.
int socket3 = 0;
IOAddress bcastAddr("255.255.255.255");
@@ -415,6 +420,7 @@ TEST_F(IfaceMgrTest, socketsFromRemoteAddress) {
);
EXPECT_GT(socket3, 0);
close(socket3);
#endif
}
// TODO: disabled due to other naming on various systems