Lines Matching refs:iter

157 static void linux_if_inet6_first(isc_interfaceiter_t *iter);
170 linux_if_inet6_first(isc_interfaceiter_t *iter) {
171 if (iter->proc != NULL) {
172 rewind(iter->proc);
173 (void)linux_if_inet6_next(iter);
175 iter->valid = ISC_R_NOMORE;
179 linux_if_inet6_next(isc_interfaceiter_t *iter) {
180 if (iter->proc != NULL &&
181 fgets(iter->entry, sizeof(iter->entry), iter->proc) != NULL)
182 iter->valid = ISC_R_SUCCESS;
184 iter->valid = ISC_R_NOMORE;
185 return (iter->valid);
189 linux_if_inet6_current(isc_interfaceiter_t *iter) {
198 if (iter->valid != ISC_R_SUCCESS)
199 return (iter->valid);
200 if (iter->proc == NULL) {
203 "/proc/net/if_inet6:iter->proc == NULL");
207 res = sscanf(iter->entry, "%32[a-f0-9] %x %x %x %x %16s\n",
238 iter->current.af = AF_INET6;
239 iter->current.flags = INTERFACE_F_UP;
240 isc_netaddr_fromin6(&iter->current.address, &addr6);
241 iter->current.ifindex = ifindex;
242 if (isc_netaddr_islinklocal(&iter->current.address)) {
243 isc_netaddr_setzone(&iter->current.address,
255 isc_netaddr_fromin6(&iter->current.netmask, &addr6);
256 strncpy(iter->current.name, name, sizeof(iter->current.name));
266 isc_interfaceiter_current(isc_interfaceiter_t *iter,
269 REQUIRE(iter->result == ISC_R_SUCCESS);
270 memcpy(ifdata, &iter->current, sizeof(*ifdata));
275 isc_interfaceiter_first(isc_interfaceiter_t *iter) {
278 REQUIRE(VALID_IFITER(iter));
280 internal_first(iter);
282 result = internal_current(iter);
285 result = internal_next(iter);
289 iter->result = result;
294 isc_interfaceiter_next(isc_interfaceiter_t *iter) {
297 REQUIRE(VALID_IFITER(iter));
298 REQUIRE(iter->result == ISC_R_SUCCESS);
301 result = internal_next(iter);
304 result = internal_current(iter);
308 iter->result = result;
315 isc_interfaceiter_t *iter;
317 iter = *iterp;
318 REQUIRE(VALID_IFITER(iter));
320 internal_destroy(iter);
321 if (iter->buf != NULL)
322 isc_mem_put(iter->mctx, iter->buf, iter->bufsize);
324 iter->magic = 0;
325 isc_mem_put(iter->mctx, iter, sizeof(*iter));