Lines Matching refs:iter

69 	isc_interfaceiter_t *iter;
79 iter = isc_mem_get(mctx, sizeof(*iter));
80 if (iter == NULL)
83 iter->mctx = mctx;
84 iter->buf = 0;
102 iter->bufsize = bufsize;
104 iter->buf = isc_mem_get(iter->mctx, iter->bufsize);
105 if (iter->buf == NULL) {
111 if (sysctl(mib, 6, iter->buf, &bufused, NULL, (size_t) 0) < 0) {
123 iter->bufused = bufused;
124 INSIST(iter->bufused <= iter->bufsize);
130 iter->pos = (unsigned int) -1;
131 iter->result = ISC_R_FAILURE;
133 iter->magic = IFITER_MAGIC;
134 *iterp = iter;
138 if (iter->buf != NULL)
139 isc_mem_put(mctx, iter->buf, iter->bufsize);
140 isc_mem_put(mctx, iter, sizeof(*iter));
145 * Get information about the current interface to iter->current.
153 internal_current(isc_interfaceiter_t *iter) {
156 REQUIRE(VALID_IFITER(iter));
157 REQUIRE (iter->pos < (unsigned int) iter->bufused);
159 ifam = (struct ifa_msghdr *) ((char *) iter->buf + iter->pos);
160 ifam_end = (struct ifa_msghdr *) ((char *) iter->buf + iter->bufused);
171 memset(&iter->current, 0, sizeof(iter->current));
173 iter->current.ifindex = sdl->sdl_index;
175 if (namelen > sizeof(iter->current.name) - 1)
176 namelen = sizeof(iter->current.name) - 1;
178 memset(iter->current.name, 0, sizeof(iter->current.name));
179 memcpy(iter->current.name, sdl->sdl_data, namelen);
181 iter->current.flags = 0;
184 iter->current.flags |= INTERFACE_F_UP;
187 iter->current.flags |= INTERFACE_F_POINTTOPOINT;
190 iter->current.flags |= INTERFACE_F_LOOPBACK;
193 iter->current.flags |= INTERFACE_F_BROADCAST;
197 iter->current.flags |= INTERFACE_F_MULTICAST;
258 iter->current.af = family;
260 get_addr(family, &iter->current.address, addr_sa,
261 iter->current.name);
264 get_addr(family, &iter->current.netmask, mask_sa,
265 iter->current.name);
268 (iter->current.flags & INTERFACE_F_POINTTOPOINT) != 0)
269 get_addr(family, &iter->current.dstaddress, dst_sa,
270 iter->current.name);
273 (iter->current.flags & INTERFACE_F_BROADCAST) != 0)
274 get_addr(family, &iter->current.broadcast, dst_sa,
275 iter->current.name);
296 internal_next(isc_interfaceiter_t *iter) {
298 REQUIRE (iter->pos < (unsigned int) iter->bufused);
300 ifam = (struct ifa_msghdr *) ((char *) iter->buf + iter->pos);
302 iter->pos += ifam->ifam_msglen;
304 if (iter->pos >= iter->bufused)
311 internal_destroy(isc_interfaceiter_t *iter) {
312 UNUSED(iter); /* Unused. */
319 void internal_first(isc_interfaceiter_t *iter) {
320 iter->pos = 0;