Lines Matching refs:service
92 struct fo_service *service;
247 DLIST_REMOVE(server->service->server_list, tmp);
252 DLIST_REMOVE(server->service->server_list, tmp);
256 if (server == server->service->active_server) {
257 server->service->active_server = NULL;
259 if (server == server->service->last_tried_server) {
260 server->service->last_tried_server = meta;
264 DLIST_ADD_AFTER(server->service->server_list, meta, server);
265 DLIST_REMOVE(server->service->server_list, server);
287 timeout = data->meta->service->ctx->opts->srv_retry_neg_timeout;
319 DEBUG(SSSDBG_CONF_SETTINGS, "Marking SRV lookup of service '%s' as '%s'\n",
320 data->meta->service->name, str_srv_data_status(status));
343 timeout = server->service->ctx->opts->retry_timeout;
366 * This function will return the status of the service. If the status was
379 timeout = server->service->ctx->opts->retry_timeout;
415 service_destructor(struct fo_service *service)
417 DLIST_REMOVE(service->ctx->service_list, service);
426 struct fo_service *service;
429 DEBUG(SSSDBG_TRACE_FUNC, "Creating new service '%s'\n", name);
430 ret = fo_get_service(ctx, name, &service);
434 *_service = service;
441 service = talloc_zero(ctx, struct fo_service);
442 if (service == NULL)
445 service->name = talloc_strdup(service, name);
446 if (service->name == NULL) {
447 talloc_free(service);
451 service->user_data_cmp = user_data_cmp;
453 service->ctx = ctx;
454 DLIST_ADD(ctx->service_list, service);
456 talloc_set_destructor(service, service_destructor);
458 *_service = service;
468 struct fo_service *service;
470 DLIST_FOR_EACH(service, ctx->service_list) {
471 if (!strcmp(name, service->name)) {
472 *_service = service;
543 fo_server_alloc(struct fo_service *service, int port,
549 server_owner = talloc_new(service);
570 server->service = service;
578 fo_add_srv_server(struct fo_service *service, const char *srv,
585 "Adding new SRV server to service '%s' using '%s'.\n",
586 service->name, proto);
588 DLIST_FOR_EACH(server, service->server_list) {
592 if (server->service->user_data_cmp && user_data && server->user_data) {
593 if (server->service->user_data_cmp(server->user_data, user_data)) {
611 server = fo_server_alloc(service, 0, user_data, true);
617 server->srv_data = talloc_zero(service, struct srv_data);
647 DLIST_ADD_END(service->server_list, server, struct fo_server *);
652 create_fo_server(struct fo_service *service, const char *name,
658 server = fo_server_alloc(service, port, user_data, primary);
664 server->service = service;
669 ret = get_server_common(server, service->ctx, name, &server->common);
671 server->common = create_server_common(server, service->ctx, name);
686 fo_get_server_count(struct fo_service *service)
691 DLIST_FOR_EACH(server, service->server_list) {
710 if (server->service->user_data_cmp && server->user_data && user_data) {
711 if (server->service->user_data_cmp(server->user_data, user_data)) {
777 DEBUG(SSSDBG_TRACE_FUNC, "Server '%s:%d' for service '%s' "
784 DEBUG(SSSDBG_TRACE_FUNC, "Inserted %s server '%s:%d' to service "
791 static errno_t fo_add_server_list(struct fo_service *service,
807 server = create_fo_server(service, servers[i].host, servers[i].port,
815 ret = fo_add_server_to_list(&srv_list, service->server_list,
816 server, service->name);
826 DLIST_ADD_LIST_AFTER(service->server_list, after_server,
838 fo_add_server(struct fo_service *service, const char *name, int port,
844 server = create_fo_server(service, name, port, user_data, primary);
849 ret = fo_add_server_to_list(&service->server_list, service->server_list,
850 server, service->name);
867 get_first_server_entity(struct fo_service *service, struct fo_server **_server)
872 server = service->active_server;
877 service->active_server = NULL;
887 if (service->last_tried_server != NULL &&
888 service->last_tried_server->primary) {
889 if (service->last_tried_server->port_status == PORT_NEUTRAL &&
890 server_works(service->last_tried_server)) {
891 server = service->last_tried_server;
895 DLIST_FOR_EACH(server, service->last_tried_server->next) {
906 DLIST_FOR_EACH(server, service->server_list) {
913 if (server == service->last_tried_server) {
918 DLIST_FOR_EACH(server, service->server_list) {
927 service->last_tried_server = NULL;
931 service->last_tried_server = server;
1002 struct fo_service *service)
1011 "Trying to resolve service '%s'\n", service->name);
1020 ret = get_first_server_entity(service, &server);
1023 "No available servers for service '%s'\n", service->name);
1027 /* Activate per-service timeout handler */
1031 DEBUG(SSSDBG_OP_FAILURE, "Could not set service timeout\n");
1247 struct fo_service *service;
1271 state->service = server->service;
1381 ret = fo_add_server_list(state->service, last_server,
1392 ret = fo_add_server_list(state->service, last_server,
1414 if (state->service->last_tried_server != NULL) {
1415 state->out = state->service->last_tried_server;
1419 state->out = state->service->server_list;
1436 DLIST_REMOVE(state->service->server_list, state->meta);
1437 if (state->service->last_tried_server == state->meta) {
1438 state->service->last_tried_server = state->out;
1524 server->service->active_server = server;
1532 DLIST_FOR_EACH(siter, server->service->server_list) {
1544 struct fo_server *fo_get_active_server(struct fo_service *service)
1546 return service->active_server;
1549 void fo_try_next_server(struct fo_service *service)
1553 if (!service) {
1554 DEBUG(SSSDBG_CRIT_FAILURE, "Bug: No service supplied\n");
1558 server = service->active_server;
1563 service->active_server = 0;
1639 void fo_reset_servers(struct fo_service *service)
1643 DLIST_FOR_EACH(server, service->server_list) {
1659 struct fo_service *service;
1664 DLIST_FOR_EACH(service, fo_ctx->service_list) {
1665 fo_reset_servers(service);
1669 bool fo_svc_has_server(struct fo_service *service, struct fo_server *server)
1673 DLIST_FOR_EACH(srv, service->server_list) {
1681 struct fo_service *service,
1690 DLIST_FOR_EACH(srv, service->server_list) {
1700 DLIST_FOR_EACH(srv, service->server_list) {