@@ -69,6 +69,7 @@ - (NSString *)getWifiIP {
69
69
__block NSString *addr = nil ;
70
70
[self enumerateWifiAddresses: AF_INET
71
71
usingBlock: ^(struct ifaddrs *ifaddr) {
72
+ if (addr) return ;
72
73
addr = [self descriptionForAddress: ifaddr->ifa_addr];
73
74
}];
74
75
return addr;
@@ -78,6 +79,7 @@ - (NSString *)getWifiIPv6 {
78
79
__block NSString *addr = nil ;
79
80
[self enumerateWifiAddresses: AF_INET6
80
81
usingBlock: ^(struct ifaddrs *ifaddr) {
82
+ if (addr) return ;
81
83
addr = [self descriptionForAddress: ifaddr->ifa_addr];
82
84
}];
83
85
return addr;
@@ -87,6 +89,7 @@ - (NSString *)getWifiSubmask {
87
89
__block NSString *addr = nil ;
88
90
[self enumerateWifiAddresses: AF_INET
89
91
usingBlock: ^(struct ifaddrs *ifaddr) {
92
+ if (addr) return ;
90
93
addr = [self descriptionForAddress: ifaddr->ifa_netmask];
91
94
}];
92
95
return addr;
@@ -96,6 +99,7 @@ - (NSString *)getWifiBroadcast {
96
99
__block NSString *addr = nil ;
97
100
[self enumerateWifiAddresses: AF_INET
98
101
usingBlock: ^(struct ifaddrs *ifaddr) {
102
+ if (addr) return ;
99
103
addr = [self descriptionForAddress: ifaddr->ifa_dstaddr];
100
104
}];
101
105
return addr;
@@ -138,20 +142,22 @@ - (void)enumerateWifiAddresses:(NSInteger)family
138
142
139
143
// retrieve the current interfaces - returns 0 on success
140
144
success = getifaddrs (&interfaces);
141
- if (success == 0 ) {
142
- // Loop through linked list of interfaces
143
- temp_addr = interfaces;
144
- while (temp_addr != NULL ) {
145
+ if (success != 0 ) {
146
+ NSLog (@" Error: getifaddrs() failed with error code: %d " , success);
147
+ return ;
148
+ }
149
+
150
+ // Loop through linked list of interfaces
151
+ temp_addr = interfaces;
152
+ while (temp_addr != NULL ) {
145
153
if (temp_addr->ifa_addr ->sa_family == family) {
146
- // en0 is the wifi connection on iOS
147
- if ([[NSString stringWithUTF8String: temp_addr->ifa_name]
148
- isEqualToString: @" en0" ]) {
149
- block (temp_addr);
150
- }
154
+ // One of `en` interfaces should be WiFi interface
155
+ if (strncmp (temp_addr->ifa_name , " en" , 2 ) == 0 ) {
156
+ block (temp_addr);
157
+ }
151
158
}
152
159
153
160
temp_addr = temp_addr->ifa_next ;
154
- }
155
161
}
156
162
157
163
// Free memory
0 commit comments