Lines Matching refs:iter
55 isc_interfaceiter_t *iter; in isc_interfaceiter_create() local
64 iter = isc_mem_get(mctx, sizeof(*iter)); in isc_interfaceiter_create()
65 if (iter == NULL) in isc_interfaceiter_create()
68 iter->mctx = mctx; in isc_interfaceiter_create()
69 iter->buf = NULL; in isc_interfaceiter_create()
70 iter->bufsize = 0; in isc_interfaceiter_create()
71 iter->ifaddrs = NULL; in isc_interfaceiter_create()
78 iter->proc = fopen("/proc/net/if_inet6", "r"); in isc_interfaceiter_create()
79 if (iter->proc == NULL) { in isc_interfaceiter_create()
86 iter->proc = NULL; in isc_interfaceiter_create()
87 iter->valid = ISC_R_FAILURE; in isc_interfaceiter_create()
92 if ((ret = getifaddrs(&iter->ifaddrs)) >= 0) in isc_interfaceiter_create()
114 iter->pos = NULL; in isc_interfaceiter_create()
115 iter->result = ISC_R_FAILURE; in isc_interfaceiter_create()
117 iter->magic = IFITER_MAGIC; in isc_interfaceiter_create()
118 *iterp = iter; in isc_interfaceiter_create()
123 if (iter->proc != NULL) in isc_interfaceiter_create()
124 fclose(iter->proc); in isc_interfaceiter_create()
126 if (iter->ifaddrs != NULL) /* just in case */ in isc_interfaceiter_create()
127 freeifaddrs(iter->ifaddrs); in isc_interfaceiter_create()
128 isc_mem_put(mctx, iter, sizeof(*iter)); in isc_interfaceiter_create()
140 internal_current(isc_interfaceiter_t *iter) { in internal_current() argument
145 REQUIRE(VALID_IFITER(iter)); in internal_current()
147 ifa = iter->pos; in internal_current()
158 if (iter->pos == NULL) in internal_current()
159 return (linux_if_inet6_current(iter)); in internal_current()
188 memset(&iter->current, 0, sizeof(iter->current)); in internal_current()
191 if (namelen > sizeof(iter->current.name) - 1) in internal_current()
192 namelen = sizeof(iter->current.name) - 1; in internal_current()
194 memset(iter->current.name, 0, sizeof(iter->current.name)); in internal_current()
195 memcpy(iter->current.name, ifa->ifa_name, namelen); in internal_current()
197 iter->current.flags = 0; in internal_current()
200 iter->current.flags |= INTERFACE_F_UP; in internal_current()
203 iter->current.flags |= INTERFACE_F_POINTTOPOINT; in internal_current()
206 iter->current.flags |= INTERFACE_F_LOOPBACK; in internal_current()
209 iter->current.flags |= INTERFACE_F_BROADCAST; in internal_current()
213 iter->current.flags |= INTERFACE_F_MULTICAST; in internal_current()
216 iter->current.af = family; in internal_current()
218 get_addr(family, &iter->current.address, ifa->ifa_addr, ifa->ifa_name); in internal_current()
221 get_addr(family, &iter->current.netmask, ifa->ifa_netmask, in internal_current()
225 (iter->current.flags & INTERFACE_F_POINTTOPOINT) != 0) in internal_current()
226 get_addr(family, &iter->current.dstaddress, ifa->ifa_dstaddr, in internal_current()
230 (iter->current.flags & INTERFACE_F_BROADCAST) != 0) in internal_current()
231 get_addr(family, &iter->current.broadcast, ifa->ifa_broadaddr, in internal_current()
235 iter->current.ifindex = if_nametoindex(iter->current.name); in internal_current()
248 internal_next(isc_interfaceiter_t *iter) { in internal_next() argument
250 if (iter->pos != NULL) in internal_next()
251 iter->pos = iter->pos->ifa_next; in internal_next()
252 if (iter->pos == NULL) { in internal_next()
255 return (linux_if_inet6_next(iter)); in internal_next()
264 internal_destroy(isc_interfaceiter_t *iter) { in internal_destroy() argument
267 if (iter->proc != NULL) in internal_destroy()
268 fclose(iter->proc); in internal_destroy()
269 iter->proc = NULL; in internal_destroy()
271 if (iter->ifaddrs) in internal_destroy()
272 freeifaddrs(iter->ifaddrs); in internal_destroy()
273 iter->ifaddrs = NULL; in internal_destroy()
277 void internal_first(isc_interfaceiter_t *iter) { in internal_first() argument
280 linux_if_inet6_first(iter); in internal_first()
282 iter->pos = iter->ifaddrs; in internal_first()