summaryrefslogtreecommitdiff
path: root/ipv6test.go
diff options
context:
space:
mode:
Diffstat (limited to 'ipv6test.go')
-rw-r--r--ipv6test.go33
1 files changed, 33 insertions, 0 deletions
diff --git a/ipv6test.go b/ipv6test.go
new file mode 100644
index 0000000..c18faf9
--- /dev/null
+++ b/ipv6test.go
@@ -0,0 +1,33 @@
+package main
+
+import (
+ "fmt"
+ "net"
+ "time"
+)
+
+// The host we will try to connect to.
+// ipv6.google.com is a good choice as it's highly available and resolves only to AAAA records (IPv6).
+const ipv6TestHost = "ipv6.google.com"
+const testPort = "443" // HTTPS port, almost always open.
+
+func IPv6test() (string, error) {
+ // We use net.DialTimeout to attempt a TCP connection.
+ // By specifying "tcp6" as the network, we force the dialer to use IPv6 only.
+ // If the system can't resolve the AAAA record or can't route to the IPv6 address,
+ // this will fail.
+ timeout := 2 * time.Second
+ conn, err := net.DialTimeout("tcp6", net.JoinHostPort(ipv6TestHost, testPort), timeout)
+
+ // Check the result.
+ if err != nil {
+ // The connection failed. This indicates that IPv6 is not working correctly.
+ return fmt.Sprintf("IPv6 connectivity test failed: %v"), err
+ }
+
+ // If we get here, the connection was successful.
+ // It's good practice to close the connection we opened.
+ conn.Close()
+
+ return fmt.Sprintf("IPv6 connectivity test successful."), nil
+}