From: Michal 'vorner' Vaner Date: Mon, 27 Feb 2012 12:57:34 +0000 (+0100) Subject: [1534] Use the other methods of setting it as fallback X-Git-Tag: trac2351_base~226^2~116^2~166^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ffd2c98603eb6db553d4cf18d2fd7ac29a62080f;p=thirdparty%2Fkea.git [1534] Use the other methods of setting it as fallback Meaning if it works, don't try the others. Also, a little comment in test was added. --- diff --git a/src/bin/sockcreator/sockcreator.cc b/src/bin/sockcreator/sockcreator.cc index e87a3102e0..2dda99bece 100644 --- a/src/bin/sockcreator/sockcreator.cc +++ b/src/bin/sockcreator/sockcreator.cc @@ -178,7 +178,7 @@ mtu(int fd) { if (setsockopt(fd, IPPROTO_IPV6, IPV6_USE_MIN_MTU, &on, sizeof(on)) < 0) { return (-2); } -#endif +#else // Try the following as fallback #ifdef IPV6_MTU // Use minimum MTU on systems that don't have the IPV6_USE_MIN_MTU const int mtu = 1280; @@ -194,6 +194,7 @@ mtu(int fd) { return (-2); } +#endif #endif return (fd); } diff --git a/src/bin/sockcreator/tests/sockcreator_tests.cc b/src/bin/sockcreator/tests/sockcreator_tests.cc index a100cc2098..9bbb789ecf 100644 --- a/src/bin/sockcreator/tests/sockcreator_tests.cc +++ b/src/bin/sockcreator/tests/sockcreator_tests.cc @@ -125,7 +125,7 @@ void addressFamilySpecificCheck(const sockaddr_in6*, const int socknum, EXPECT_EQ(getsockopt(socknum, IPPROTO_IPV6, IPV6_USE_MIN_MTU, &options, &len)) << strerror(errno); EXPECT_NE(0, options); -#endif +#else // We do not check for the IPV6_MTU, because while setting works (eg. // the packets are fragmented correctly), the getting does not. If // we try to getsockopt it, an error complaining it can't be accessed @@ -137,6 +137,7 @@ void addressFamilySpecificCheck(const sockaddr_in6*, const int socknum, EXPECT_EQ(0, getsockopt(socknum, IPPROTO_IPV6, IPV6_MTU_DISCOVER, &options, &len)) << strerror(errno); EXPECT_EQ(IPV6_PMTUDISC_DONT, options); +#endif #endif } } @@ -204,6 +205,9 @@ TEST(get_sock, tcp6_create) { bool close_called(false); +// You can use it as a close mockup. If you care about checking if it was really +// called, you can use the close_called variable. But set it to false before the +// test. int closeCall(int socket) { close(socket); close_called = true;