Lines Matching refs:iter
159 static void linux_if_inet6_first(isc_interfaceiter_t *iter);
172 linux_if_inet6_first(isc_interfaceiter_t *iter) {
173 if (iter->proc != NULL) {
174 rewind(iter->proc);
175 (void)linux_if_inet6_next(iter);
177 iter->valid = ISC_R_NOMORE;
181 linux_if_inet6_next(isc_interfaceiter_t *iter) {
182 if (iter->proc != NULL &&
183 fgets(iter->entry, sizeof(iter->entry), iter->proc) != NULL)
184 iter->valid = ISC_R_SUCCESS;
186 iter->valid = ISC_R_NOMORE;
187 return (iter->valid);
191 linux_if_inet6_current(isc_interfaceiter_t *iter) {
200 if (iter->valid != ISC_R_SUCCESS)
201 return (iter->valid);
202 if (iter->proc == NULL) {
205 "/proc/net/if_inet6:iter->proc == NULL");
209 res = sscanf(iter->entry, "%32[a-f0-9] %x %x %x %x %16s\n",
240 iter->current.af = AF_INET6;
241 iter->current.flags = INTERFACE_F_UP;
242 isc_netaddr_fromin6(&iter->current.address, &addr6);
243 iter->current.ifindex = ifindex;
244 if (isc_netaddr_islinklocal(&iter->current.address)) {
245 isc_netaddr_setzone(&iter->current.address,
257 isc_netaddr_fromin6(&iter->current.netmask, &addr6);
258 strncpy(iter->current.name, name, sizeof(iter->current.name));
268 isc_interfaceiter_current(isc_interfaceiter_t *iter,
271 REQUIRE(iter->result == ISC_R_SUCCESS);
272 memcpy(ifdata, &iter->current, sizeof(*ifdata));
277 isc_interfaceiter_first(isc_interfaceiter_t *iter) {
280 REQUIRE(VALID_IFITER(iter));
282 internal_first(iter);
284 result = internal_current(iter);
287 result = internal_next(iter);
291 iter->result = result;
296 isc_interfaceiter_next(isc_interfaceiter_t *iter) {
299 REQUIRE(VALID_IFITER(iter));
300 REQUIRE(iter->result == ISC_R_SUCCESS);
303 result = internal_next(iter);
306 result = internal_current(iter);
310 iter->result = result;
317 isc_interfaceiter_t *iter;
319 iter = *iterp;
320 REQUIRE(VALID_IFITER(iter));
322 internal_destroy(iter);
323 if (iter->buf != NULL)
324 isc_mem_put(iter->mctx, iter->buf, iter->bufsize);
326 iter->magic = 0;
327 isc_mem_put(iter->mctx, iter, sizeof(*iter));