summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichal Židek <mzidek@redhat.com>2015-08-10 18:35:16 +0200
committerJakub Hrozek <jhrozek@redhat.com>2015-08-14 22:37:18 +0200
commitc4fb8f55f2894de431478ccfec63f9a97e090d0e (patch)
treeedf0e37444fe63e360596c16810b1a3d4333e95b
parent137d5dd0dba48f647e5f8b3976ddb78d65dc77a5 (diff)
downloadsssd-c4fb8f55f2894de431478ccfec63f9a97e090d0e.tar.gz
sssd-c4fb8f55f2894de431478ccfec63f9a97e090d0e.tar.xz
sssd-c4fb8f55f2894de431478ccfec63f9a97e090d0e.zip
DEBUG: Add new debug category for fail over.
Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com>
-rw-r--r--src/providers/data_provider_fo.c30
-rw-r--r--src/providers/dp_backend.h15
-rw-r--r--src/tests/debug-tests.c2
-rw-r--r--src/util/debug.c2
-rw-r--r--src/util/util.h1
5 files changed, 40 insertions, 10 deletions
diff --git a/src/providers/data_provider_fo.c b/src/providers/data_provider_fo.c
index dab796d46..41d70de06 100644
--- a/src/providers/data_provider_fo.c
+++ b/src/providers/data_provider_fo.c
@@ -743,13 +743,35 @@ void reset_fo(struct be_ctx *be_ctx)
fo_reset_services(be_ctx->be_fo->fo_ctx);
}
-void be_fo_set_port_status(struct be_ctx *ctx,
- const char *service_name,
- struct fo_server *server,
- enum port_status status)
+void _be_fo_set_port_status(struct be_ctx *ctx,
+ const char *service_name,
+ struct fo_server *server,
+ enum port_status status,
+ int line,
+ const char *file,
+ const char *function)
{
struct be_svc_data *be_svc;
+ /* Print debug info */
+ switch (status) {
+ case PORT_NEUTRAL:
+ DEBUG(SSSDBG_BE_FO,
+ "Setting status: PORT_NEUTRAL. Called from: %s: %s: %d\n",
+ file, function, line);
+ break;
+ case PORT_WORKING:
+ DEBUG(SSSDBG_BE_FO,
+ "Setting status: PORT_WORKING. Called from: %s: %s: %d\n",
+ file, function, line);
+ break;
+ case PORT_NOT_WORKING:
+ DEBUG(SSSDBG_BE_FO,
+ "Setting status: PORT_NOT_WORKING. Called from: %s: %s: %d\n",
+ file, function, line);
+ break;
+ }
+
be_svc = be_fo_find_svc_data(ctx, service_name);
if (be_svc == NULL) {
DEBUG(SSSDBG_OP_FAILURE,
diff --git a/src/providers/dp_backend.h b/src/providers/dp_backend.h
index e4e22ea34..bca0c2f97 100644
--- a/src/providers/dp_backend.h
+++ b/src/providers/dp_backend.h
@@ -259,10 +259,17 @@ struct tevent_req *be_resolve_server_send(TALLOC_CTX *memctx,
bool first_try);
int be_resolve_server_recv(struct tevent_req *req, struct fo_server **srv);
-void be_fo_set_port_status(struct be_ctx *ctx,
- const char *service_name,
- struct fo_server *server,
- enum port_status status);
+#define be_fo_set_port_status(ctx, service_name, server, status) \
+ _be_fo_set_port_status(ctx, service_name, server, status, \
+ __LINE__, __FILE__, __FUNCTION__)
+
+void _be_fo_set_port_status(struct be_ctx *ctx,
+ const char *service_name,
+ struct fo_server *server,
+ enum port_status status,
+ int line,
+ const char *file,
+ const char *function);
/*
* Instruct fail-over to try next server on the next connect attempt.
diff --git a/src/tests/debug-tests.c b/src/tests/debug-tests.c
index 2b91c149d..067209b1d 100644
--- a/src/tests/debug-tests.c
+++ b/src/tests/debug-tests.c
@@ -48,7 +48,7 @@ START_TEST(test_debug_convert_old_level_old_format)
SSSDBG_TRACE_FUNC,
SSSDBG_TRACE_LIBS,
SSSDBG_TRACE_INTERNAL,
- SSSDBG_TRACE_ALL
+ SSSDBG_TRACE_ALL | SSSDBG_BE_FO
};
for (old_level = 0; old_level <= 9; old_level++) {
diff --git a/src/util/debug.c b/src/util/debug.c
index bf83624c9..69df54386 100644
--- a/src/util/debug.c
+++ b/src/util/debug.c
@@ -114,7 +114,7 @@ int debug_convert_old_level(int old_level)
new_level |= SSSDBG_TRACE_INTERNAL;
if (old_level >= 9)
- new_level |= SSSDBG_TRACE_ALL;
+ new_level |= SSSDBG_TRACE_ALL | SSSDBG_BE_FO;
return new_level;
}
diff --git a/src/util/util.h b/src/util/util.h
index 94a3ddea8..426fd8b86 100644
--- a/src/util/util.h
+++ b/src/util/util.h
@@ -92,6 +92,7 @@ int get_fd_from_debug_file(void);
#define SSSDBG_TRACE_LIBS 0x1000 /* level 7 */
#define SSSDBG_TRACE_INTERNAL 0x2000 /* level 8 */
#define SSSDBG_TRACE_ALL 0x4000 /* level 9 */
+#define SSSDBG_BE_FO 0x8000 /* level 9 */
#define SSSDBG_IMPORTANT_INFO SSSDBG_OP_FAILURE
#define SSSDBG_INVALID -1