summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2006-07-19 12:54:14 +0000
committerrwatson <rwatson@FreeBSD.org>2006-07-19 12:54:14 +0000
commit8ccc47a9639561baf5238e6cbd89c5c4edf50aae (patch)
treec767233192144467d6609020c3c1d82adc5001f4 /tools
parent42d0cba86a1a7fe03fe876b9052eeae29c31ea05 (diff)
downloadFreeBSD-src-8ccc47a9639561baf5238e6cbd89c5c4edf50aae.zip
FreeBSD-src-8ccc47a9639561baf5238e6cbd89c5c4edf50aae.tar.gz
Add a test case for closing a UDPv6 socket that has been connected to
the IPv6 loopback address. Warns ?= 2.
Diffstat (limited to 'tools')
-rw-r--r--tools/regression/netinet6/ip6_sockets/Makefile1
-rw-r--r--tools/regression/netinet6/ip6_sockets/ip6_sockets.c29
2 files changed, 30 insertions, 0 deletions
diff --git a/tools/regression/netinet6/ip6_sockets/Makefile b/tools/regression/netinet6/ip6_sockets/Makefile
index 2025e6a..4f6bc78 100644
--- a/tools/regression/netinet6/ip6_sockets/Makefile
+++ b/tools/regression/netinet6/ip6_sockets/Makefile
@@ -4,5 +4,6 @@
PROG= ip6_sockets
NO_MAN=
+WARNS?= 2
.include <bsd.prog.mk>
diff --git a/tools/regression/netinet6/ip6_sockets/ip6_sockets.c b/tools/regression/netinet6/ip6_sockets/ip6_sockets.c
index a3310dd..07e6209 100644
--- a/tools/regression/netinet6/ip6_sockets/ip6_sockets.c
+++ b/tools/regression/netinet6/ip6_sockets/ip6_sockets.c
@@ -28,7 +28,10 @@
#include <sys/socket.h>
+#include <netinet/in.h>
+
#include <err.h>
+#include <string.h>
#include <unistd.h>
/*
@@ -38,18 +41,44 @@
int
main(int argc, char *argv[])
{
+ struct sockaddr_in6 sin6;
int s;
+ /*
+ * UDPv6 simple test.
+ */
+ s = socket(PF_INET6, SOCK_DGRAM, 0);
+ if (s < 0)
+ err(-1, "socket(PF_INET6, SOCK_DGRAM, 0)");
+ close(s);
+
+ /*
+ * UDPv6 connected case -- connect UDPv6 to an arbitrary port so that
+ * when we close the socket, it goes through the disconnect logic.
+ */
s = socket(PF_INET6, SOCK_DGRAM, 0);
if (s < 0)
err(-1, "socket(PF_INET6, SOCK_DGRAM, 0)");
+ bzero(&sin6, sizeof(sin6));
+ sin6.sin6_len = sizeof(sin6);
+ sin6.sin6_family = AF_INET6;
+ sin6.sin6_addr = in6addr_loopback;
+ sin6.sin6_port = htons(1024);
+ if (connect(s, (struct sockaddr *)&sin6, sizeof(sin6)) < 0)
+ err(-1, "connect(SOCK_DGRAM, ::1)");
close(s);
+ /*
+ * TCPv6.
+ */
s = socket(PF_INET6, SOCK_STREAM, 0);
if (s < 0)
err(-1, "socket(PF_INET6, SOCK_STREAM, 0)");
close(s);
+ /*
+ * Raw IPv6.
+ */
s = socket(PF_INET6, SOCK_RAW, 0);
if (s < 0)
err(-1, "socket(PF_INET6, SOCK_RAW, 0)");
OpenPOWER on IntegriCloud