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;
return (-2);
}
+#endif
#endif
return (fd);
}
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
EXPECT_EQ(0, getsockopt(socknum, IPPROTO_IPV6, IPV6_MTU_DISCOVER,
&options, &len)) << strerror(errno);
EXPECT_EQ(IPV6_PMTUDISC_DONT, options);
+#endif
#endif
}
}
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;