@@ -51,12 +51,21 @@ class SystemNetworkReachability: NetworkReachability {
5151
5252 init ( ) {
5353 // Create reachability handle to an all-zeroes address.
54+ if #available( iOS 9 , OSX 10 . 11 , tvOS 9 , * ) {
55+ var zeroAddress6 = SystemNetworkReachability . zeroAddress6
56+ reachability = withUnsafePointer ( to: & zeroAddress6) {
57+ $0. withMemoryRebound ( to: sockaddr. self, capacity: 1 ) {
58+ SCNetworkReachabilityCreateWithAddress ( nil , $0)
59+ }
60+ } !
61+ } else {
5462 var zeroAddress = SystemNetworkReachability . zeroAddress
5563 reachability = withUnsafePointer ( to: & zeroAddress) {
56- $0. withMemoryRebound ( to: sockaddr. self, capacity: 1 ) {
57- SCNetworkReachabilityCreateWithAddress ( nil , $0)
58- }
59- } !
64+ $0. withMemoryRebound ( to: sockaddr. self, capacity: 1 ) {
65+ SCNetworkReachabilityCreateWithAddress ( nil , $0)
66+ }
67+ } !
68+ }
6069 }
6170
6271 /// Test if network connectivity is currently available.
@@ -83,6 +92,14 @@ class SystemNetworkReachability: NetworkReachability {
8392 address. sin_family = sa_family_t ( AF_INET)
8493 return address
8594 } ( )
95+
96+ /// An all zeroes IP address.
97+ static let zeroAddress6 : sockaddr_in6 = {
98+ var address = sockaddr_in6 ( )
99+ address. sin6_len = UInt8 ( MemoryLayout< sockaddr_in6> . size)
100+ address. sin6_family = sa_family_t ( AF_INET6)
101+ return address
102+ } ( )
86103}
87104
88105#endif // !os(watchOS)
0 commit comments