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
385 timeout = server->service->ctx->opts->retry_timeout;
421 service_destructor(struct fo_service *service)
423 DLIST_REMOVE(service->ctx->service_list, service);
432 struct fo_service *service;
435 DEBUG(SSSDBG_TRACE_FUNC, "Creating new service '%s'\n", name);
436 ret = fo_get_service(ctx, name, &service);
440 *_service = service;
447 service = talloc_zero(ctx, struct fo_service);
448 if (service == NULL)
451 service->name = talloc_strdup(service, name);
452 if (service->name == NULL) {
453 talloc_free(service);
457 service->user_data_cmp = user_data_cmp;
459 service->ctx = ctx;
460 DLIST_ADD(ctx->service_list, service);
462 talloc_set_destructor(service, service_destructor);
464 *_service = service;
474 struct fo_service *service;
476 DLIST_FOR_EACH(service, ctx->service_list) {
477 if (!strcmp(name, service->name)) {
478 *_service = service;
549 fo_server_alloc(struct fo_service *service, int port,
555 server_owner = talloc_new(service);
576 server->service = service;
584 fo_add_srv_server(struct fo_service *service, const char *srv,
591 "Adding new SRV server to service '%s' using '%s'.\n",
592 service->name, proto);
594 DLIST_FOR_EACH(server, service->server_list) {
598 if (server->service->user_data_cmp && user_data && server->user_data) {
599 if (server->service->user_data_cmp(server->user_data, user_data)) {
617 server = fo_server_alloc(service, 0, user_data, true);
623 server->srv_data = talloc_zero(service, struct srv_data);
653 DLIST_ADD_END(service->server_list, server, struct fo_server *);
658 create_fo_server(struct fo_service *service, const char *name,
664 server = fo_server_alloc(service, port, user_data, primary);
670 server->service = service;
675 ret = get_server_common(server, service->ctx, name, &server->common);
677 server->common = create_server_common(server, service->ctx, name);
692 fo_get_server_count(struct fo_service *service)
697 DLIST_FOR_EACH(server, service->server_list) {
716 if (server->service->user_data_cmp && server->user_data && user_data) {
717 if (server->service->user_data_cmp(server->user_data, user_data)) {
783 DEBUG(SSSDBG_TRACE_FUNC, "Server '%s:%d' for service '%s' "
790 DEBUG(SSSDBG_TRACE_FUNC, "Inserted %s server '%s:%d' to service "
797 static errno_t fo_add_server_list(struct fo_service *service,
813 server = create_fo_server(service, servers[i].host, servers[i].port,
821 ret = fo_add_server_to_list(&srv_list, service->server_list,
822 server, service->name);
832 DLIST_ADD_LIST_AFTER(service->server_list, after_server,
844 fo_add_server(struct fo_service *service, const char *name, int port,
850 server = create_fo_server(service, name, port, user_data, primary);
855 ret = fo_add_server_to_list(&service->server_list, service->server_list,
856 server, service->name);
873 get_first_server_entity(struct fo_service *service, struct fo_server **_server)
878 server = service->active_server;
883 service->active_server = NULL;
893 if (service->last_tried_server != NULL &&
894 service->last_tried_server->primary) {
895 if (service->last_tried_server->port_status == PORT_NEUTRAL &&
896 server_works(service->last_tried_server)) {
897 server = service->last_tried_server;
901 DLIST_FOR_EACH(server, service->last_tried_server->next) {
912 DLIST_FOR_EACH(server, service->server_list) {
919 if (server == service->last_tried_server) {
924 DLIST_FOR_EACH(server, service->server_list) {
933 service->last_tried_server = NULL;
937 service->last_tried_server = server;
1008 struct fo_service *service)
1017 "Trying to resolve service '%s'\n", service->name);
1026 ret = get_first_server_entity(service, &server);
1029 "No available servers for service '%s'\n", service->name);
1033 /* Activate per-service timeout handler */
1037 DEBUG(SSSDBG_OP_FAILURE, "Could not set service timeout\n");
1254 struct fo_service *service;
1278 state->service = server->service;
1389 ret = fo_add_server_list(state->service, last_server,
1400 ret = fo_add_server_list(state->service, last_server,
1422 if (state->service->last_tried_server != NULL) {
1423 state->out = state->service->last_tried_server;
1427 state->out = state->service->server_list;
1444 DLIST_REMOVE(state->service->server_list, state->meta);
1445 if (state->service->last_tried_server == state->meta) {
1446 state->service->last_tried_server = state->out;
1534 server->service->active_server = server;
1542 DLIST_FOR_EACH(siter, server->service->server_list) {
1554 struct fo_server *fo_get_active_server(struct fo_service *service)
1556 return service->active_server;
1559 void fo_try_next_server(struct fo_service *service)
1563 if (!service) {
1564 DEBUG(SSSDBG_CRIT_FAILURE, "Bug: No service supplied\n");
1568 server = service->active_server;
1573 service->active_server = 0;
1649 void fo_reset_servers(struct fo_service *service)
1653 DLIST_FOR_EACH(server, service->server_list) {
1669 struct fo_service *service;
1674 DLIST_FOR_EACH(service, fo_ctx->service_list) {
1675 fo_reset_servers(service);
1679 bool fo_svc_has_server(struct fo_service *service, struct fo_server *server)
1683 DLIST_FOR_EACH(srv, service->server_list) {
1691 struct fo_service *service,
1700 DLIST_FOR_EACH(srv, service->server_list) {
1710 DLIST_FOR_EACH(srv, service->server_list) {