[SSSD] [PATCH] UTIL: Function 2string for enum sss_cli_command

Lukas Slebodnik lslebodn at redhat.com
Mon Jul 13 07:59:14 UTC 2015


On (09/07/15 14:03), Petr Cech wrote:
>Hi!
>
>There is my repaired patch. All of yours comments were helpful.
>
>I renamed the function to sss_cmd2str(), but maybe it could be
>sss_cli_cmd2str(). I am not sure with it, but if it is better, I will rename
>it again.
>
>Petr
>
>On 07/08/2015 03:26 PM, Sumit Bose wrote:
>>On Wed, Jul 08, 2015 at 02:13:42PM +0200, Petr Cech wrote:
>>>Hi!
>>>
>>>https://fedorahosted.org/sssd/ticket/2703
>>>
>>>It's my first patch to this ticket. It is simple transforming of number of
>>>command to the string.
>>Hi Petr,
>>
>>welcome and thank you for your first patch. Besides Pavel's suggestions
>>I have some general comments as well.
>>
>>- There is pamcmd2str() which does a similar job for the backend code
>>   but I think it is becoming redundant with your patch. Can you remove
>>   this call and use your's where appropriate?
>>
>>- I haven't tested it, but I'm pretty sure that the PAM module pam_sss
>>   which is build from pam_sss.c and some other files is broken in debug
>>   mode with your patch because sss_log.c is not used when building it and
>>   hence sss_cli_command_2string() will be undefined. You do not see this
>>   during compilation or even during 'make check' because the 'D' macro
>>   is only evaluate if PAM_DEBUG is defined during compilation. If you
>>   run something like 'make CFLAGS+="-DPAM_DEBUG" check' the dlopen test
>>   should fail with your patch.
>>
>>   Since the PAM module pam_sss.so might be loaded by any kind of
>>   processes at runtime we try to keep it as simple as possible and try
>>   to add as few dependencies as possible. If you search the Makefile.am
>>   for pam_sss_la_SOURCES you will see that besides source files from the
>>   sss_client directory we only add atomic_io.c and authtok-utils.c which
>>   both contain only a single function with no special dependencies.
>>
>>   I would suggest that you put sss_cli_command_2string() in a file on
>>   its own similar like atomic_io.c or authtok-utils.c. And add this file
>>   to pam_sss_la_SOURCES and libsss_debug_la_SOURCES in Makefile.am. I
>>   leave it up to you to decide what would be a good place for this file.
>>   The sss_client directory because the enum sss_cli_command is defined
>>   here as well or the util directory because the main usage for it is in
>>   the SSSD code and not in the pam_sss module.
>>
>>bye,
>>Sumit
>>_______________________________________________
>>sssd-devel mailing list
>>sssd-devel at lists.fedorahosted.org
>>https://lists.fedorahosted.org/mailman/listinfo/sssd-devel
>

>From 8b3ae05fc97f548256dc8b72863183b9dc9a539a Mon Sep 17 00:00:00 2001
>From: Petr Cech <pcech at redhat.com>
>Date: Wed, 8 Jul 2015 07:17:28 -0400
>Subject: [PATCH] UTIL: Function 2string for enum sss_cli_command
>
>Improvement of debug messages.
>Instead of:"(0x0400): Running command [17]..."
>We could see:"(0x0400): Running command [17][SSS_NSS_GETPWNAM]..."
>
>Resolves:
>https://fedorahosted.org/sssd/ticket/2703
>---
> Makefile.am                      |   4 +-
> src/providers/dp_pam_data_util.c |  27 +----
> src/responder/nss/nsssrv_cmd.c   |  30 +++---
> src/sss_client/pam_sss.c         |   6 +-
> src/tools/tools_mc_util.c        |   4 +-
> src/util/sss_cli_cmd.c           | 219 +++++++++++++++++++++++++++++++++++++++
> src/util/sss_cli_cmd.h           |   9 ++
> src/util/sss_log.c               |   2 -
> 8 files changed, 256 insertions(+), 45 deletions(-)
> create mode 100644 src/util/sss_cli_cmd.c
> create mode 100644 src/util/sss_cli_cmd.h
>
>diff --git a/Makefile.am b/Makefile.am
>index b8cbc6df23ded1edb945a709b6dbe1c44eb54017..f16b8ebdb4dd66c2d193c19bd8355782f4de4c9a 100644
>--- a/Makefile.am
>+++ b/Makefile.am
>@@ -678,7 +678,8 @@ endif
> pkglib_LTLIBRARIES += libsss_debug.la
> libsss_debug_la_SOURCES = \
>     src/util/debug.c \
>-    src/util/sss_log.c
>+    src/util/sss_log.c \
>+    src/util/sss_cli_cmd.c
> libsss_debug_la_LIBADD = \
>     $(SYSLOG_LIBS)
> libsss_debug_la_LDFLAGS = \
>@@ -2654,6 +2655,7 @@ pam_sss_la_SOURCES = \
>     src/sss_client/sss_cli.h \
>     src/util/atomic_io.c \
>     src/util/authtok-utils.c \
>+    src/util/sss_cli_cmd.c \
>     src/sss_client/sss_pam_macros.h \
>     src/sss_client/sss_pam_compat.h
> 
>diff --git a/src/providers/dp_pam_data_util.c b/src/providers/dp_pam_data_util.c
>index 8724bf936f3f46fb8393c8a3da57215a73b4191a..10e91f5f7286db5e76ad98b6c7519f2482d006db 100644
>--- a/src/providers/dp_pam_data_util.c
>+++ b/src/providers/dp_pam_data_util.c
>@@ -23,33 +23,10 @@
> */
> 
> #include "providers/data_provider.h"
>-
>+#include "util/sss_cli_cmd.h"
> 
> #define PAM_SAFE_ITEM(item) item ? item : "not set"
> 
>-static const char *pamcmd2str(int cmd) {
>-    switch (cmd) {
>-    case SSS_PAM_AUTHENTICATE:
>-        return "PAM_AUTHENTICATE";
>-    case SSS_PAM_SETCRED:
>-        return "PAM_SETCRED";
>-    case SSS_PAM_ACCT_MGMT:
>-        return "PAM_ACCT_MGMT";
>-    case SSS_PAM_OPEN_SESSION:
>-        return "PAM_OPEN_SESSION";
>-    case SSS_PAM_CLOSE_SESSION:
>-        return "PAM_CLOSE_SESSION";
>-    case SSS_PAM_CHAUTHTOK:
>-        return "PAM_CHAUTHTOK";
>-    case SSS_PAM_CHAUTHTOK_PRELIM:
>-        return "PAM_CHAUTHTOK_PRELIM";
>-    case SSS_PAM_PREAUTH:
>-        return "SSS_PAM_PREAUTH";
>-    default:
>-        return "UNKNOWN";
>-    }
>-}
>-
> int pam_data_destructor(void *ptr)
> {
>     struct pam_data *pd = talloc_get_type(ptr, struct pam_data);
>@@ -183,7 +160,7 @@ failed:
> 
> void pam_print_data(int l, struct pam_data *pd)
> {
>-    DEBUG(l, "command: %s\n", pamcmd2str(pd->cmd));
>+    DEBUG(l, "command: %s\n", sss_cmd2str(pd->cmd));
>     DEBUG(l, "domain: %s\n", PAM_SAFE_ITEM(pd->domain));
>     DEBUG(l, "user: %s\n", PAM_SAFE_ITEM(pd->user));
>     DEBUG(l, "service: %s\n", PAM_SAFE_ITEM(pd->service));
>diff --git a/src/responder/nss/nsssrv_cmd.c b/src/responder/nss/nsssrv_cmd.c
>index 0129467302f16af318bbbb0a5be47ff2e235da65..d37a13820ef857fcf43efba3fb07535c4b6eb509 100644
>--- a/src/responder/nss/nsssrv_cmd.c
>+++ b/src/responder/nss/nsssrv_cmd.c
>@@ -21,6 +21,7 @@
> 
> #include "util/util.h"
> #include "util/sss_nss.h"
>+#include "util/sss_cli_cmd.h"
> #include "responder/nss/nsssrv.h"
> #include "responder/nss/nsssrv_private.h"
> #include "responder/nss/nsssrv_netgroup.h"
>@@ -1312,7 +1313,8 @@ static int nss_cmd_getbynam(enum sss_cli_command cmd, struct cli_ctx *cctx)
>     case SSS_NSS_GETORIGBYNAME:
>         break;
>     default:
>-        DEBUG(SSSDBG_CRIT_FAILURE, "Invalid command type [%d].\n", cmd);
>+        DEBUG(SSSDBG_CRIT_FAILURE, "Invalid command type [%d][%s].\n",
>+              cmd, sss_cmd2str(cmd));
>         return EINVAL;
>     }
> 
>@@ -1347,8 +1349,8 @@ static int nss_cmd_getbynam(enum sss_cli_command cmd, struct cli_ctx *cctx)
> 
>     rawname = (const char *)body;
> 
>-    DEBUG(SSSDBG_TRACE_FUNC, "Running command [%d] with input [%s].\n",
>-                               dctx->cmdctx->cmd, rawname);
>+    DEBUG(SSSDBG_TRACE_FUNC, "Running command [%d][%s] with input [%s].\n",
>+          cmd, sss_cmd2str(dctx->cmdctx->cmd), rawname);
> 
>     if (dctx->cmdctx->cmd == SSS_NSS_GETSIDBYNAME) {
>         ret = nss_check_name_of_well_known_sid(cmdctx, rawname);
>@@ -1737,7 +1739,8 @@ static int nss_cmd_getbyid(enum sss_cli_command cmd, struct cli_ctx *cctx)
>     case SSS_NSS_GETSIDBYID:
>         break;
>     default:
>-        DEBUG(SSSDBG_CRIT_FAILURE, "Invalid command type [%d].\n", cmd);
>+        DEBUG(SSSDBG_CRIT_FAILURE, "Invalid command type [%d][%s].\n",
>+              cmd, sss_cmd2str(cmd));
>         return EINVAL;
>     }
> 
>@@ -1766,8 +1769,8 @@ static int nss_cmd_getbyid(enum sss_cli_command cmd, struct cli_ctx *cctx)
>     }
>     SAFEALIGN_COPY_UINT32(&cmdctx->id, body, NULL);
> 
>-    DEBUG(SSSDBG_TRACE_FUNC, "Running command [%d] with id [%"PRIu32"].\n",
>-                              dctx->cmdctx->cmd, cmdctx->id);
>+    DEBUG(SSSDBG_TRACE_FUNC, "Running command [%d][%s] with id [%"PRIu32"].\n",
>+          cmd, sss_cmd2str(dctx->cmdctx->cmd), cmdctx->id);
> 
>     switch(dctx->cmdctx->cmd) {
>     case SSS_NSS_GETPWUID:
>@@ -1805,8 +1808,8 @@ static int nss_cmd_getbyid(enum sss_cli_command cmd, struct cli_ctx *cctx)
>         }
>         break;
>     default:
>-        DEBUG(SSSDBG_CRIT_FAILURE, "Invalid command [%d].\n",
>-                                    dctx->cmdctx->cmd);
>+        DEBUG(SSSDBG_CRIT_FAILURE, "Invalid command [%d][%s].\n",
>+              cmd, sss_cmd2str(dctx->cmdctx->cmd));
>         ret = EINVAL;
>         goto done;
>     }
>@@ -1851,8 +1854,8 @@ static int nss_cmd_getbyid(enum sss_cli_command cmd, struct cli_ctx *cctx)
>         }
>         break;
>     default:
>-        DEBUG(SSSDBG_CRIT_FAILURE, "Invalid command [%d].\n",
>-                                    dctx->cmdctx->cmd);
>+        DEBUG(SSSDBG_CRIT_FAILURE, "Invalid command [%d][%s].\n",
>+              cmd, sss_cmd2str(dctx->cmdctx->cmd));
>         ret = EINVAL;
>     }
> 
>@@ -5172,7 +5175,8 @@ static int nss_cmd_getbysid(enum sss_cli_command cmd, struct cli_ctx *cctx)
>     size_t bin_sid_length;
> 
>     if (cmd != SSS_NSS_GETNAMEBYSID && cmd != SSS_NSS_GETIDBYSID) {
>-        DEBUG(SSSDBG_CRIT_FAILURE, "Invalid command type [%d].\n", cmd);
>+        DEBUG(SSSDBG_CRIT_FAILURE, "Invalid command type [%d][%s].\n",
>+              cmd, sss_cmd2str(cmd));
>         return EINVAL;
>     }
> 
>@@ -5214,8 +5218,8 @@ static int nss_cmd_getbysid(enum sss_cli_command cmd, struct cli_ctx *cctx)
>         goto done;
>     }
> 
>-    DEBUG(SSSDBG_TRACE_FUNC, "Running command [%d] with SID [%s].\n",
>-                               dctx->cmdctx->cmd, sid_str);
>+    DEBUG(SSSDBG_TRACE_FUNC, "Running command [%d][%s] with SID [%s].\n",
>+          cmd, sss_cmd2str(dctx->cmdctx->cmd), sid_str);
> 
>     cmdctx->secid = talloc_strdup(cmdctx, sid_str);
>     if (cmdctx->secid == NULL) {
>diff --git a/src/sss_client/pam_sss.c b/src/sss_client/pam_sss.c
>index e4fa83e12c71bb05dd329686cf2d2df6323ff3bd..541b9240edc7616cc28d291c6117227e5a1e9133 100644
>--- a/src/sss_client/pam_sss.c
>+++ b/src/sss_client/pam_sss.c
>@@ -1173,7 +1173,7 @@ static int send_and_receive(pam_handle_t *pamh, struct pam_items *pi,
>         case SSS_PAM_PREAUTH:
>             break;
>         default:
>-            D(("Illegal task [%d]", task));
>+            D(("Illegal task [%d][%s]", task, sss_cmd2str(task)));
>             return PAM_SYSTEM_ERR;
>     }
> 
>@@ -1580,7 +1580,7 @@ static int pam_sss(enum sss_cli_command task, pam_handle_t *pamh,
> 
>     bindtextdomain(PACKAGE, LOCALEDIR);
> 
>-    D(("Hello pam_sssd: %d", task));
>+    D(("Hello pam_sssd: %d %s", task, sss_cmd2str(task)));
> 
>     eval_argv(pamh, argc, argv, &flags, &retries, &quiet_mode, &domains);
> 
>@@ -1656,7 +1656,7 @@ static int pam_sss(enum sss_cli_command task, pam_handle_t *pamh,
>             case SSS_PAM_CLOSE_SESSION:
>                 break;
>             default:
>-                D(("Illegal task [%d]", task));
>+                D(("Illegal task [%d][%s]",task, sss_cmd2str(task)));
>                 return PAM_SYSTEM_ERR;
>         }
> 
I replied to the different mail in this thread that I think we needn't
use string representation in client code. Hexadecimal should be sufficient.

But let's wait for and agreement.

>diff --git a/src/tools/tools_mc_util.c b/src/tools/tools_mc_util.c
>index c1b5c616d0e6d50147ecd81308aaa1e69304af92..38f9d42ce6a0759efa7e10932d0b655d6d366461 100644
>--- a/src/tools/tools_mc_util.c
>+++ b/src/tools/tools_mc_util.c
>@@ -26,6 +26,7 @@
> #include "util/util.h"
> #include "tools/tools_util.h"
> #include "util/mmap_cache.h"
>+#include "util/sss_cli_cmd.h"
> #include "sss_client/sss_cli.h"
> 
> /* This is a copy of sss_mc_set_recycled present in
>@@ -226,7 +227,8 @@ static errno_t sss_mc_refresh_ent(const char *name, enum sss_tools_ent ent)
>     }
> 
>     if (cmd == SSS_CLI_NULL) {
>-        DEBUG(SSSDBG_OP_FAILURE, "Unknown object %d to refresh\n", cmd);
>+        DEBUG(SSSDBG_OP_FAILURE, "Unknown object [%d][%s] to refresh\n",
>+              cmd, sss_cmd2str(cmd));
>         return EINVAL;
>     }
> 
>diff --git a/src/util/sss_cli_cmd.c b/src/util/sss_cli_cmd.c
>new file mode 100644
>index 0000000000000000000000000000000000000000..e160bb700744d7b56ee0a02c13cccffc3529f5dc
>--- /dev/null
>+++ b/src/util/sss_cli_cmd.c
>@@ -0,0 +1,219 @@
>+#include "sss_client/sss_cli.h"
>+#include "util/sss_cli_cmd.h"
>+#include "util/util.h"
>+
>+const char *sss_cmd2str(enum sss_cli_command cmd)
>+{
>+    switch (cmd) {
>+    /* null */
>+    case SSS_CLI_NULL:
>+        return "SSS_CLI_NULL";
>+
>+    /* version */
>+    case SSS_GET_VERSION:
>+        return "SSS_GET_VERSION";
>+
>+    /* passwd */
>+    case SSS_NSS_GETPWNAM:
>+        return "SSS_NSS_GETPWNAM";
>+    case SSS_NSS_GETPWUID:
>+        return "SSS_NSS_GETPWUID";
>+    case SSS_NSS_SETPWENT:
>+        return "SSS_NSS_SETPWENT";
>+    case SSS_NSS_GETPWENT:
>+        return "SSS_NSS_GETPWENT";
>+    case SSS_NSS_ENDPWENT:
>+        return "SSS_NSS_ENDPWENT";
>+
>+    /* group */
>+    case SSS_NSS_GETGRNAM:
>+        return "SSS_NSS_GETGRNAM";
>+    case SSS_NSS_GETGRGID:
>+        return "SSS_NSS_GETGRGID";
>+    case SSS_NSS_SETGRENT:
>+        return "SSS_NSS_SETGRENT";
>+    case SSS_NSS_GETGRENT:
>+        return "SSS_NSS_GETGRENT";
>+    case SSS_NSS_ENDGRENT:
>+        return "SSS_NSS_ENDGRENT";
>+    case SSS_NSS_INITGR:
>+        return "SSS_NSS_INITGR";
>+
>+    #if 0
>+    /* aliases */
>+    case SSS_NSS_GETALIASBYNAME:
>+        return "SSS_NSS_GETALIASBYNAME";
>+    case SSS_NSS_GETALIASBYPORT:
>+        return "SSS_NSS_GETALIASBYPORT";
>+    case SSS_NSS_SETALIASENT:
>+        return "SSS_NSS_SETALIASENT";
>+    case SSS_NSS_GETALIASENT:
>+        return "SSS_NSS_GETALIASENT";
>+    case SSS_NSS_ENDALIASENT:
>+        return "SSS_NSS_ENDALIASENT";
>+
>+    /* ethers */
>+    case SSS_NSS_GETHOSTTON:
>+        return "SSS_NSS_GETHOSTTON";
>+    case SSS_NSS_GETNTOHOST:
>+        return "SSS_NSS_GETNTOHOST";
>+    case SSS_NSS_SETETHERENT:
>+        return "SSS_NSS_SETETHERENT";
>+    case SSS_NSS_GETETHERENT:
>+        return "SSS_NSS_GETETHERENT";
>+    case SSS_NSS_ENDETHERENT:
>+        return "SSS_NSS_ENDETHERENT";
>+
>+    /* hosts */
>+    case SSS_NSS_GETHOSTBYNAME:
>+        return "SSS_NSS_GETHOSTBYNAME";
>+    case SSS_NSS_GETHOSTBYNAME2:
>+        return "SSS_NSS_GETHOSTBYNAME2";
>+    case SSS_NSS_GETHOSTBYADDR:
>+        return "SSS_NSS_GETHOSTBYADDR";
>+    case SSS_NSS_SETHOSTENT:
>+        return "SSS_NSS_SETHOSTENT";
>+    case SSS_NSS_GETHOSTENT:
>+        return "SSS_NSS_GETHOSTENT";
>+    case SSS_NSS_ENDHOSTENT:
>+        return "SSS_NSS_ENDHOSTENT";
>+    #endif
>+
>+    /* netgroup */
>+    case SSS_NSS_SETNETGRENT:
>+        return "SSS_NSS_SETNETGRENT";
>+    case SSS_NSS_GETNETGRENT:
>+        return "SSS_NSS_GETNETGRENT";
>+    case SSS_NSS_ENDNETGRENT:
>+        return "SSS_NSS_ENDNETGRENT";
>+    /* SSS_NSS_INNETGR:
>+        return "SSS_NSS_INNETGR";
>+        break; */
>+
>+    #if 0
>+    /* networks */
>+    case SSS_NSS_GETNETBYNAME:
>+        return "SSS_NSS_GETNETBYNAME";
>+    case SSS_NSS_GETNETBYADDR:
>+        return "SSS_NSS_GETNETBYADDR";
>+    case SSS_NSS_SETNETENT:
>+        return "SSS_NSS_SETNETENT";
>+    case SSS_NSS_GETNETENT:
>+        return "SSS_NSS_GETNETENT";
>+    case SSS_NSS_ENDNETENT:
>+        return "SSS_NSS_ENDNETENT";
>+
>+    /* protocols */
>+    case SSS_NSS_GETPROTOBYNAME:
>+        return "SSS_NSS_GETPROTOBYNAME";
>+    case SSS_NSS_GETPROTOBYNUM:
>+        return "SSS_NSS_GETPROTOBYNUM";
>+    case SSS_NSS_SETPROTOENT:
>+        return "SSS_NSS_SETPROTOENT";
>+    case SSS_NSS_GETPROTOENT:
>+        return "SSS_NSS_GETPROTOENT";
>+    case SSS_NSS_ENDPROTOENT:
>+        return "SSS_NSS_ENDPROTOENT";
>+
>+    /* rpc */
>+    case SSS_NSS_GETRPCBYNAME:
>+        return "SSS_NSS_GETRPCBYNAME";
>+    case SSS_NSS_GETRPCBYNUM:
>+        return "SSS_NSS_GETRPCBYNUM";
>+    case SSS_NSS_SETRPCENT:
>+        return "SSS_NSS_SETRPCENT";
>+    case SSS_NSS_GETRPCENT:
>+        return "SSS_NSS_GETRPCENT";
>+    case SSS_NSS_ENDRPCENT:
>+        return "SSS_NSS_ENDRPCENT";
>+    #endif
>+
>+    /* services */
>+    case SSS_NSS_GETSERVBYNAME:
>+        return "SSS_NSS_GETSERVBYNAME";
>+    case SSS_NSS_GETSERVBYPORT:
>+        return "SSS_NSS_GETSERVBYPORT";
>+    case SSS_NSS_SETSERVENT:
>+        return "SSS_NSS_SETSERVENT";
>+    case SSS_NSS_GETSERVENT:
>+        return "SSS_NSS_GETSERVENT";
>+    case SSS_NSS_ENDSERVENT:
>+        return "SSS_NSS_ENDSERVENT";
>+
>+    #if 0
>+    /* shadow */
>+    case SSS_NSS_GETSPNAM:
>+        return "SSS_NSS_GETSPNAM";
>+    case SSS_NSS_GETSPUID:
>+        return "SSS_NSS_GETSPUID";
>+    case SSS_NSS_SETSPENT:
>+        return "SSS_NSS_SETSPENT";
>+    case SSS_NSS_GETSPENT:
>+        return "SSS_NSS_GETSPENT";
>+    case SSS_NSS_ENDSPENT:
>+        return "SSS_NSS_ENDSPENT";
>+    #endif
>+
>+    /* SUDO */
>+    case SSS_SUDO_GET_SUDORULES:
>+        return "SSS_SUDO_GET_SUDORULES";
>+    case SSS_SUDO_GET_DEFAULTS:
>+        return "SSS_SUDO_GET_DEFAULTS";
>+
>+    /* autofs */
>+    case SSS_AUTOFS_SETAUTOMNTENT:
>+        return "SSS_AUTOFS_SETAUTOMNTENT";
>+    case SSS_AUTOFS_GETAUTOMNTENT:
>+        return "SSS_AUTOFS_GETAUTOMNTENT";
>+    case SSS_AUTOFS_GETAUTOMNTBYNAME:
>+        return "SSS_AUTOFS_GETAUTOMNTBYNAME";
>+    case SSS_AUTOFS_ENDAUTOMNTENT:
>+        return "SSS_AUTOFS_ENDAUTOMNTENT";
>+
>+    /* SSH */
>+    case SSS_SSH_GET_USER_PUBKEYS:
>+        return "SSS_SSH_GET_USER_PUBKEYS";
>+    case SSS_SSH_GET_HOST_PUBKEYS:
>+        return "SSS_SSH_GET_HOST_PUBKEYS";
>+
>+    /* PAM related calls */
>+    case SSS_PAM_AUTHENTICATE:
>+        return "SSS_PAM_AUTHENTICATE";
>+    case SSS_PAM_SETCRED:
>+        return "SSS_PAM_SETCRED";
>+    case SSS_PAM_ACCT_MGMT:
>+        return "SSS_PAM_ACCT_MGMT";
>+    case SSS_PAM_OPEN_SESSION:
>+        return "SSS_PAM_OPEN_SESSION";
>+    case SSS_PAM_CLOSE_SESSION:
>+        return "SSS_PAM_CLOSE_SESSION";
>+    case SSS_PAM_CHAUTHTOK:
>+        return "SSS_PAM_CHAUTHTOK";
>+    case SSS_PAM_CHAUTHTOK_PRELIM:
>+        return "SSS_PAM_CHAUTHTOK_PRELIM";
>+    case SSS_CMD_RENEW:
>+        return "SSS_CMD_RENEW";
>+    case SSS_PAM_PREAUTH:
>+        return "SSS_PAM_PREAUTH";
>+
>+    /* PAC responder calls */
>+    case SSS_PAC_ADD_PAC_USER:
>+        return "SSS_PAC_ADD_PAC_USER";
>+
>+    /* ID-SID mapping calls */
>+    case SSS_NSS_GETSIDBYNAME:
>+        return "SSS_NSS_GETSIDBYNAME";
>+    case SSS_NSS_GETSIDBYID:
>+        return "SSS_NSS_GETSIDBYID";
>+    case SSS_NSS_GETNAMEBYSID:
>+        return "SSS_NSS_GETNAMEBYSID";
>+    case SSS_NSS_GETIDBYSID:
>+        return "SSS_NSS_GETIDBYSID";
>+    case SSS_NSS_GETORIGBYNAME:
>+        return "SSS_NSS_GETORIGBYNAME";
>+    default:
>+        DEBUG(SSSDBG_MINOR_FAILURE,
>+              "Translation's string is missing for command [%d].\n", cmd);
>+        return "UNKNOWN COMMAND";
>+   }
>+}
>diff --git a/src/util/sss_cli_cmd.h b/src/util/sss_cli_cmd.h
>new file mode 100644
>index 0000000000000000000000000000000000000000..4bd18af85fcca0bcfbcc28ddbcc99bfaaac2c7c4
>--- /dev/null
>+++ b/src/util/sss_cli_cmd.h
>@@ -0,0 +1,9 @@
There is missing header with licence.
The same applies to the new implemetatation module.

>+#ifndef __SSS_CLI_CMD_H__
>+#define __SSS_CLI_CMD_H__
>+
>+#include "sss_client/sss_cli.h"
>+
>+/* Translate sss_cli_command to human readable form. */                         
>+const char *sss_cmd2str(enum sss_cli_command cmd);
>+
>+#endif /* __SSS_CLI_CMD_H__ */

>diff --git a/src/util/sss_log.c b/src/util/sss_log.c
>index 48e73dbea99b86c80d9016a4c5d646fc655fcdfb..250c1d6dc93569250e552b9e4cd2f2e3ebcc0745 100644
>--- a/src/util/sss_log.c
>+++ b/src/util/sss_log.c
>@@ -78,8 +78,6 @@ void sss_log_ext(int priority, int facility, const char *format, ...)
>     va_end(ap);
> }
> 
>-
>-
This change is unrelated to the ticket.
It's fine to change it if you touch code nearby.

> #ifdef WITH_JOURNALD
> 
> static void sss_log_internal(int priority, int facility, const char *format,

BTW It would be good to use new function also in backend code.
src/providers/data_provider_be.c:1107:          "Got request for [%#x][%d][%s]\n", type, attr_type, filter);

I used to filter debug messages for be_get_account_info which print
type as hexadecimal number. Maybe there are also other places.

LS



More information about the sssd-devel mailing list