From 2192d4b4e0d7d887c1af0411c24119bb0ee7b725 Mon Sep 17 00:00:00 2001 From: Sumit Bose Date: Mon, 17 May 2010 12:02:51 +0200 Subject: [PATCH 3/9] Add fo_service_reset() --- src/providers/data_provider_fo.c | 9 +++++++++ src/providers/dp_backend.h | 3 +++ src/providers/fail_over.c | 10 ++++++++++ 3 files changed, 22 insertions(+), 0 deletions(-) diff --git a/src/providers/data_provider_fo.c b/src/providers/data_provider_fo.c index 14ebbdb..b85c71b 100644 --- a/src/providers/data_provider_fo.c +++ b/src/providers/data_provider_fo.c @@ -440,3 +440,12 @@ int be_resolve_server_recv(struct tevent_req *req, struct fo_server **srv) return EOK; } +void fo_service_reset(struct be_failover_ctx *be_fo) +{ + struct be_svc_data *svc; + + DLIST_FOR_EACH(svc, be_fo->svcs) { + svc->last_good_srv = NULL; + fo_server_reset(svc->fo_service); + } +} diff --git a/src/providers/dp_backend.h b/src/providers/dp_backend.h index 43d79ba..bdcfd17 100644 --- a/src/providers/dp_backend.h +++ b/src/providers/dp_backend.h @@ -148,6 +148,8 @@ int be_add_online_cb(TALLOC_CTX *mem_ctx, struct be_cb **online_cb); void be_run_online_cb(struct be_ctx *be); +void fo_server_reset(struct fo_service *fo_service); + /* from data_provider_fo.c */ typedef void (be_svc_callback_fn_t)(void *, struct fo_server *); @@ -169,4 +171,5 @@ struct tevent_req *be_resolve_server_send(TALLOC_CTX *memctx, const char *service_name); int be_resolve_server_recv(struct tevent_req *req, struct fo_server **srv); +void fo_service_reset(struct be_failover_ctx *be_fo); #endif /* __DP_BACKEND_H___ */ diff --git a/src/providers/fail_over.c b/src/providers/fail_over.c index b719dea..c1afe8c 100644 --- a/src/providers/fail_over.c +++ b/src/providers/fail_over.c @@ -1138,3 +1138,13 @@ fo_get_server_hostent(struct fo_server *server) } return server->common->hostent; } + +void fo_server_reset(struct fo_service *fo_service) +{ + struct fo_server *server; + + DLIST_FOR_EACH(server, fo_service->server_list) { + fo_set_server_status(server, SERVER_NAME_NOT_RESOLVED); + fo_set_port_status(server, PORT_NEUTRAL); + } +} -- 1.6.6.1