Lines Matching defs:listener

76 	controllistener_t *		listener;
131 free_listener(controllistener_t *listener) {
132 INSIST(listener->exiting);
133 INSIST(!listener->listening);
134 INSIST(ISC_LIST_EMPTY(listener->connections));
136 if (listener->sock != NULL)
137 isc_socket_detach(&listener->sock);
139 free_controlkeylist(&listener->keys, listener->mctx);
141 if (listener->acl != NULL)
142 dns_acl_detach(&listener->acl);
144 isc_mem_putanddetach(&listener->mctx, listener, sizeof(*listener));
148 maybe_free_listener(controllistener_t *listener) {
149 if (listener->exiting &&
150 !listener->listening &&
151 ISC_LIST_EMPTY(listener->connections))
152 free_listener(listener);
157 controllistener_t *listener = conn->listener;
171 isc_socket_cancel(conn->sock, listener->task,
176 ISC_LIST_UNLINK(listener->connections, conn, link);
182 isc_mem_put(listener->mctx, conn, sizeof(*conn));
186 shutdown_listener(controllistener_t *listener) {
190 if (!listener->exiting) {
193 ISC_LIST_UNLINK(listener->controls->listeners, listener, link);
195 isc_sockaddr_format(&listener->address, socktext,
200 if (listener->type == isc_sockettype_unix)
201 isc_socket_cleanunix(&listener->address, ISC_TRUE);
202 listener->exiting = ISC_TRUE;
205 for (conn = ISC_LIST_HEAD(listener->connections);
213 if (listener->listening)
214 isc_socket_cancel(listener->sock, listener->task,
217 maybe_free_listener(listener);
238 control_accept(controllistener_t *listener) {
240 result = isc_socket_accept(listener->sock,
241 listener->task,
242 control_newconn, listener);
248 listener->listening = ISC_TRUE;
253 control_listen(controllistener_t *listener) {
256 result = isc_socket_listen(listener->sock, 0);
265 control_next(controllistener_t *listener) {
266 (void)control_accept(listener);
273 controllistener_t *listener = conn->listener;
298 result = isccc_ccmsg_readmessage(&conn->ccmsg, listener->task,
303 maybe_free_listener(listener);
323 controllistener_t *listener;
344 listener = conn->listener;
350 if (listener->controls->shuttingdown)
362 for (key = ISC_LIST_HEAD(listener->keys);
370 secret.rstart = isc_mem_get(listener->mctx, key->secret.length);
380 isc_mem_put(listener->mctx, secret.rstart, REGION_SIZE(secret));
431 isccc_cc_cleansymtab(listener->controls->symtab, now);
432 result = isccc_cc_checkdup(listener->controls->symtab, request, now);
447 result = isc_buffer_allocate(listener->mctx, &text, 2 * 2048);
459 eresult = ns_control_docommand(request, listener->readonly, &text);
493 result = isc_buffer_allocate(listener->mctx,
518 isc_mem_put(listener->mctx, secret.rstart, REGION_SIZE(secret));
529 isc_mem_put(listener->mctx, secret.rstart, REGION_SIZE(secret));
538 maybe_free_listener(listener);
554 newconnection(controllistener_t *listener, isc_socket_t *sock) {
559 conn = isc_mem_get(listener->mctx, sizeof(*conn));
564 isccc_ccmsg_init(listener->mctx, sock, &conn->ccmsg);
575 NULL, &interval, listener->task,
580 conn->listener = listener;
584 result = isccc_ccmsg_readmessage(&conn->ccmsg, listener->task,
589 ISC_LIST_APPEND(listener->connections, conn, link);
598 isc_mem_put(listener->mctx, conn, sizeof(*conn));
610 controllistener_t *listener = event->ev_arg;
617 listener->listening = ISC_FALSE;
621 shutdown_listener(listener);
630 if (listener->type == isc_sockettype_tcp &&
631 !address_ok(&peeraddr, listener->acl)) {
642 result = newconnection(listener, sock);
655 control_next(listener);
662 controllistener_t *listener;
665 for (listener = ISC_LIST_HEAD(controls->listeners);
666 listener != NULL;
667 listener = next)
673 next = ISC_LIST_NEXT(listener, link);
674 shutdown_listener(listener);
758 * Find the keys corresponding to the keyids used by this listener.
967 controllistener_t *listener;
975 for (listener = ISC_LIST_HEAD(cp->listeners);
976 listener != NULL;
977 listener = ISC_LIST_NEXT(listener, link))
978 if (isc_sockaddr_equal(addr, &listener->address))
981 if (listener == NULL) {
987 * There is already a listener for this sockaddr.
1015 listener->mctx, &keys);
1017 free_controlkeylist(&listener->keys, listener->mctx);
1018 listener->keys = keys;
1019 register_keys(control, global_keylist, &listener->keys,
1020 listener->mctx, socktext);
1023 free_controlkeylist(&listener->keys, listener->mctx);
1024 result = get_rndckey(listener->mctx, &listener->keys);
1053 aclconfctx, listener->mctx, 0,
1056 result = dns_acl_any(listener->mctx, &new_acl);
1064 listener->readonly = cfg_obj_asboolean(readonly);
1068 dns_acl_detach(&listener->acl);
1069 dns_acl_attach(new_acl, &listener->acl);
1090 if (listener->perm != perm || listener->owner != owner ||
1091 listener->group != group)
1092 result = isc_socket_permunix(&listener->address, perm,
1095 listener->perm = perm;
1096 listener->owner = owner;
1097 listener->group = group;
1104 *listenerp = listener;
1114 controllistener_t *listener;
1121 listener = isc_mem_get(mctx, sizeof(*listener));
1122 if (listener == NULL)
1126 listener->mctx = NULL;
1127 isc_mem_attach(mctx, &listener->mctx);
1128 listener->controls = cp;
1129 listener->task = cp->server->task;
1130 listener->address = *addr;
1131 listener->sock = NULL;
1132 listener->listening = ISC_FALSE;
1133 listener->exiting = ISC_FALSE;
1134 listener->acl = NULL;
1135 listener->type = type;
1136 listener->perm = 0;
1137 listener->owner = 0;
1138 listener->group = 0;
1139 listener->readonly = ISC_FALSE;
1140 ISC_LINK_INIT(listener, link);
1141 ISC_LIST_INIT(listener->keys);
1142 ISC_LIST_INIT(listener->connections);
1162 listener->readonly = cfg_obj_asboolean(readonly);
1166 dns_acl_attach(new_acl, &listener->acl);
1175 listener->mctx,
1176 &listener->keys);
1179 &listener->keys,
1180 listener->mctx, socktext);
1182 result = get_rndckey(mctx, &listener->keys);
1192 int pf = isc_sockaddr_pf(&listener->address);
1202 isc_socket_cleanunix(&listener->address, ISC_FALSE);
1206 isc_sockaddr_pf(&listener->address),
1207 type, &listener->sock);
1209 isc_socket_setname(listener->sock, "control", NULL);
1213 isc_socket_ipv6only(listener->sock, ISC_TRUE);
1217 result = isc_socket_bind(listener->sock, &listener->address,
1221 listener->perm = cfg_obj_asuint32(cfg_tuple_get(control,
1223 listener->owner = cfg_obj_asuint32(cfg_tuple_get(control,
1225 listener->group = cfg_obj_asuint32(cfg_tuple_get(control,
1227 result = isc_socket_permunix(&listener->address, listener->perm,
1228 listener->owner, listener->group);
1231 result = control_listen(listener);
1234 result = control_accept(listener);
1240 *listenerp = listener;
1243 if (listener != NULL) {
1244 listener->exiting = ISC_TRUE;
1245 free_listener(listener);
1268 controllistener_t *listener;
1331 update_listener(cp, &listener, control, config,
1335 if (listener != NULL)
1337 * Remove the listener from the old
1341 listener, link);
1344 * This is a new listener.
1346 add_listener(cp, &listener, control,
1351 if (listener != NULL)
1353 listener, link);
1403 update_listener(cp, &listener, control, config,
1408 if (listener != NULL)
1410 * Remove the listener from the old
1414 listener, link);
1417 * This is a new listener.
1419 add_listener(cp, &listener, control,
1424 if (listener != NULL)
1426 listener, link);
1452 update_listener(cp, &listener, NULL, NULL,
1456 if (listener != NULL)
1458 * Remove the listener from the old
1462 listener, link);
1465 * This is a new listener.
1467 add_listener(cp, &listener, NULL, NULL,
1471 if (listener != NULL)
1473 listener, link);