Lines Matching defs:listener

85 	controllistener_t *		listener;
139 free_listener(controllistener_t *listener) {
140 INSIST(listener->exiting);
141 INSIST(!listener->listening);
142 INSIST(ISC_LIST_EMPTY(listener->connections));
144 if (listener->sock != NULL)
145 isc_socket_detach(&listener->sock);
147 free_controlkeylist(&listener->keys, listener->mctx);
149 if (listener->acl != NULL)
150 dns_acl_detach(&listener->acl);
152 isc_mem_putanddetach(&listener->mctx, listener, sizeof(*listener));
156 maybe_free_listener(controllistener_t *listener) {
157 if (listener->exiting &&
158 !listener->listening &&
159 ISC_LIST_EMPTY(listener->connections))
160 free_listener(listener);
165 controllistener_t *listener = conn->listener;
176 isc_socket_cancel(conn->sock, listener->task,
181 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;
345 listener = conn->listener;
349 if (listener->controls->shuttingdown)
361 for (key = ISC_LIST_HEAD(listener->keys);
367 secret.rstart = isc_mem_get(listener->mctx, key->secret.length);
375 isc_mem_put(listener->mctx, secret.rstart, REGION_SIZE(secret));
426 isccc_cc_cleansymtab(listener->controls->symtab, now);
427 result = isccc_cc_checkdup(listener->controls->symtab, request, now);
497 isc_mem_put(listener->mctx, secret.rstart, REGION_SIZE(secret));
507 isc_mem_put(listener->mctx, secret.rstart, REGION_SIZE(secret));
514 maybe_free_listener(listener);
530 newconnection(controllistener_t *listener, isc_socket_t *sock) {
535 conn = isc_mem_get(listener->mctx, sizeof(*conn));
540 isccc_ccmsg_init(listener->mctx, sock, &conn->ccmsg);
546 NULL, &interval, listener->task,
551 conn->listener = listener;
555 result = isccc_ccmsg_readmessage(&conn->ccmsg, listener->task,
561 ISC_LIST_APPEND(listener->connections, conn, link);
568 isc_mem_put(listener->mctx, conn, sizeof(*conn));
575 controllistener_t *listener = event->ev_arg;
582 listener->listening = ISC_FALSE;
586 shutdown_listener(listener);
595 if (listener->type == isc_sockettype_tcp &&
596 !address_ok(&peeraddr, listener->acl)) {
607 result = newconnection(listener, sock);
620 control_next(listener);
627 controllistener_t *listener;
630 for (listener = ISC_LIST_HEAD(controls->listeners);
631 listener != NULL;
632 listener = next)
638 next = ISC_LIST_NEXT(listener, link);
639 shutdown_listener(listener);
722 * Find the keys corresponding to the keyids used by this listener.
918 controllistener_t *listener;
926 for (listener = ISC_LIST_HEAD(cp->listeners);
927 listener != NULL;
928 listener = ISC_LIST_NEXT(listener, link))
929 if (isc_sockaddr_equal(addr, &listener->address))
932 if (listener == NULL) {
938 * There is already a listener for this sockaddr.
966 listener->mctx, &keys);
968 free_controlkeylist(&listener->keys, listener->mctx);
969 listener->keys = keys;
970 register_keys(control, global_keylist, &listener->keys,
971 listener->mctx, socktext);
974 free_controlkeylist(&listener->keys, listener->mctx);
975 result = get_rndckey(listener->mctx, &listener->keys);
1004 aclconfctx, listener->mctx, 0,
1007 result = dns_acl_any(listener->mctx, &new_acl);
1011 dns_acl_detach(&listener->acl);
1012 dns_acl_attach(new_acl, &listener->acl);
1033 if (listener->perm != perm || listener->owner != owner ||
1034 listener->group != group)
1035 result = isc_socket_permunix(&listener->address, perm,
1038 listener->perm = perm;
1039 listener->owner = owner;
1040 listener->group = group;
1047 *listenerp = listener;
1057 controllistener_t *listener;
1064 listener = isc_mem_get(mctx, sizeof(*listener));
1065 if (listener == NULL)
1069 listener->mctx = NULL;
1070 isc_mem_attach(mctx, &listener->mctx);
1071 listener->controls = cp;
1072 listener->task = cp->server->task;
1073 listener->address = *addr;
1074 listener->sock = NULL;
1075 listener->listening = ISC_FALSE;
1076 listener->exiting = ISC_FALSE;
1077 listener->acl = NULL;
1078 listener->type = type;
1079 listener->perm = 0;
1080 listener->owner = 0;
1081 listener->group = 0;
1082 ISC_LINK_INIT(listener, link);
1083 ISC_LIST_INIT(listener->keys);
1084 ISC_LIST_INIT(listener->connections);
1100 dns_acl_attach(new_acl, &listener->acl);
1109 listener->mctx,
1110 &listener->keys);
1113 &listener->keys,
1114 listener->mctx, socktext);
1116 result = get_rndckey(mctx, &listener->keys);
1126 int pf = isc_sockaddr_pf(&listener->address);
1136 isc_socket_cleanunix(&listener->address, ISC_FALSE);
1140 isc_sockaddr_pf(&listener->address),
1141 type, &listener->sock);
1143 isc_socket_setname(listener->sock, "control", NULL);
1147 isc_socket_ipv6only(listener->sock, ISC_TRUE);
1151 result = isc_socket_bind(listener->sock, &listener->address,
1155 listener->perm = cfg_obj_asuint32(cfg_tuple_get(control,
1157 listener->owner = cfg_obj_asuint32(cfg_tuple_get(control,
1159 listener->group = cfg_obj_asuint32(cfg_tuple_get(control,
1161 result = isc_socket_permunix(&listener->address, listener->perm,
1162 listener->owner, listener->group);
1165 result = control_listen(listener);
1168 result = control_accept(listener);
1174 *listenerp = listener;
1177 if (listener != NULL) {
1178 listener->exiting = ISC_TRUE;
1179 free_listener(listener);
1202 controllistener_t *listener;
1265 update_listener(cp, &listener, control, config,
1269 if (listener != NULL)
1271 * Remove the listener from the old
1275 listener, link);
1278 * This is a new listener.
1280 add_listener(cp, &listener, control,
1285 if (listener != NULL)
1287 listener, link);
1337 update_listener(cp, &listener, control, config,
1342 if (listener != NULL)
1344 * Remove the listener from the old
1348 listener, link);
1351 * This is a new listener.
1353 add_listener(cp, &listener, control,
1358 if (listener != NULL)
1360 listener, link);
1386 update_listener(cp, &listener, NULL, NULL,
1390 if (listener != NULL)
1392 * Remove the listener from the old
1396 listener, link);
1399 * This is a new listener.
1401 add_listener(cp, &listener, NULL, NULL,
1405 if (listener != NULL)
1407 listener, link);