Lines Matching refs:ifp

187 	ns_interface_t *ifp;
193 ifp = isc_mem_get(mgr->mctx, sizeof(*ifp));
194 if (ifp == NULL)
197 ifp->mgr = NULL;
198 ifp->generation = mgr->generation;
199 ifp->addr = *addr;
200 ifp->flags = 0;
201 strncpy(ifp->name, name, sizeof(ifp->name));
202 ifp->name[sizeof(ifp->name)-1] = '\0';
203 ifp->clientmgr = NULL;
205 result = isc_mutex_init(&ifp->lock);
211 &ifp->clientmgr);
220 ifp->udpdispatch[disp] = NULL;
222 ifp->tcpsocket = NULL;
230 ifp->ntcptarget = 1;
231 ifp->ntcpcurrent = 0;
232 ifp->nudpdispatch = 0;
234 ISC_LINK_INIT(ifp, link);
236 ns_interfacemgr_attach(mgr, &ifp->mgr);
237 ISC_LIST_APPEND(mgr->interfaces, ifp, link);
239 ifp->references = 1;
240 ifp->magic = IFACE_MAGIC;
241 *ifpret = ifp;
246 DESTROYLOCK(&ifp->lock);
249 ifp->magic = 0;
250 isc_mem_put(mgr->mctx, ifp, sizeof(*ifp));
256 ns_interface_listenudp(ns_interface_t *ifp) {
264 if (isc_sockaddr_pf(&ifp->addr) == AF_INET)
273 ifp->nudpdispatch = ISC_MIN(ns_g_udpdisp, MAX_UDP_DISPATCH);
274 for (disp = 0; disp < ifp->nudpdispatch; disp++) {
275 result = dns_dispatch_getudp_dup(ifp->mgr->dispatchmgr,
277 ns_g_taskmgr, &ifp->addr,
280 &ifp->udpdispatch[disp],
283 : ifp->udpdispatch[0]);
293 result = ns_clientmgr_createclients(ifp->clientmgr, ifp->nudpdispatch,
294 ifp, ISC_FALSE);
306 dns_dispatch_changeattributes(ifp->udpdispatch[i], 0,
308 dns_dispatch_detach(&(ifp->udpdispatch[i]));
310 ifp->nudpdispatch = 0;
317 ns_interface_accepttcp(ns_interface_t *ifp) {
323 result = isc_socket_create(ifp->mgr->socketmgr,
324 isc_sockaddr_pf(&ifp->addr),
326 &ifp->tcpsocket);
333 isc_socket_setname(ifp->tcpsocket, "dispatcher", NULL);
335 isc_socket_ipv6only(ifp->tcpsocket, ISC_TRUE);
337 result = isc_socket_bind(ifp->tcpsocket, &ifp->addr,
345 result = isc_socket_listen(ifp->tcpsocket, ns_g_listen);
357 (void)isc_socket_filter(ifp->tcpsocket, "dataready");
359 result = ns_clientmgr_createclients(ifp->clientmgr,
360 ifp->ntcptarget, ifp,
373 isc_socket_detach(&ifp->tcpsocket);
384 ns_interface_t *ifp = NULL;
387 result = ns_interface_create(mgr, addr, name, &ifp);
391 result = ns_interface_listenudp(ifp);
396 result = ns_interface_accepttcp(ifp);
407 *ifpret = ifp;
411 ISC_LIST_UNLINK(ifp->mgr->interfaces, ifp, link);
412 ns_interface_detach(&ifp);
417 ns_interface_shutdown(ns_interface_t *ifp) {
418 if (ifp->clientmgr != NULL)
419 ns_clientmgr_destroy(&ifp->clientmgr);
423 ns_interface_destroy(ns_interface_t *ifp) {
424 isc_mem_t *mctx = ifp->mgr->mctx;
427 REQUIRE(NS_INTERFACE_VALID(ifp));
429 ns_interface_shutdown(ifp);
431 for (disp = ifp->nudpdispatch; disp >= 0; disp--)
432 if (ifp->udpdispatch[disp] != NULL) {
433 dns_dispatch_changeattributes(ifp->udpdispatch[disp], 0,
435 dns_dispatch_detach(&(ifp->udpdispatch[disp]));
438 if (ifp->tcpsocket != NULL)
439 isc_socket_detach(&ifp->tcpsocket);
441 DESTROYLOCK(&ifp->lock);
443 ns_interfacemgr_detach(&ifp->mgr);
445 ifp->magic = 0;
446 isc_mem_put(mctx, ifp, sizeof(*ifp));
482 ns_interface_t *ifp;
483 for (ifp = ISC_LIST_HEAD(mgr->interfaces); ifp != NULL;
484 ifp = ISC_LIST_NEXT(ifp, link)) {
485 if (isc_sockaddr_equal(&ifp->addr, addr))
488 return (ifp);
496 ns_interface_t *ifp, *next;
497 for (ifp = ISC_LIST_HEAD(mgr->interfaces); ifp != NULL; ifp = next) {
498 INSIST(NS_INTERFACE_VALID(ifp));
499 next = ISC_LIST_NEXT(ifp, link);
500 if (ifp->generation != mgr->generation) {
502 ISC_LIST_UNLINK(ifp->mgr->interfaces, ifp, link);
503 isc_sockaddr_format(&ifp->addr, sabuf, sizeof(sabuf));
507 ns_interface_shutdown(ifp);
508 ns_interface_detach(&ifp);
624 ns_interface_t *ifp;
679 ifp = find_matching_interface(mgr, &listen_addr);
680 if (ifp != NULL) {
681 ifp->generation = mgr->generation;
689 "<any>", &ifp,
692 ifp->flags |= NS_INTERFACEFLAG_ANYADDR;
840 ifp = find_matching_interface(mgr, &listen_sockaddr);
841 if (ifp != NULL) {
842 ifp->generation = mgr->generation;
877 &ifp,