1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-05 20:58:40 +03:00

util/debug: share classname table with tests

The executables generated from lib/util/tests/test_logging.c are used
by the samba.tests.logfiles tests to test logging with various
smb.confs that assign classes to various files at different levels
etc.

Previously test_logging.c had its own version of the table; now it
shares one with debug.c

We put the table in a sub-directory (lib/util/debug-classes/), because
adding local_include=True to the wscript_build stanza causes the
compiler confusion between <time.h> and lib/util/time.h.

Note: there are still two other lists of the class names, in
python/samba/tests/logfiles.py and
docs-xml/smbdotconf/logging/loglevel.xml.

Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
This commit is contained in:
Douglas Bagnall 2022-06-16 17:26:08 +12:00 committed by Andrew Bartlett
parent 1a6890a94d
commit c7254de6fd
4 changed files with 75 additions and 104 deletions

View File

@ -0,0 +1,62 @@
/*
Unix SMB/CIFS implementation.
Samba utility functions
Copyright (C) Andrew Tridgell 1992-1998
Copyright (C) Elrond 2002
Copyright (C) Simo Sorce 2002
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
static const char *default_classname_table[] = {
[DBGC_ALL] = "all",
[DBGC_TDB] = "tdb",
[DBGC_PRINTDRIVERS] = "printdrivers",
[DBGC_LANMAN] = "lanman",
[DBGC_SMB] = "smb",
[DBGC_RPC_PARSE] = "rpc_parse",
[DBGC_RPC_SRV] = "rpc_srv",
[DBGC_RPC_CLI] = "rpc_cli",
[DBGC_PASSDB] = "passdb",
[DBGC_SAM] = "sam",
[DBGC_AUTH] = "auth",
[DBGC_WINBIND] = "winbind",
[DBGC_VFS] = "vfs",
[DBGC_IDMAP] = "idmap",
[DBGC_QUOTA] = "quota",
[DBGC_ACLS] = "acls",
[DBGC_LOCKING] = "locking",
[DBGC_MSDFS] = "msdfs",
[DBGC_DMAPI] = "dmapi",
[DBGC_REGISTRY] = "registry",
[DBGC_SCAVENGER] = "scavenger",
[DBGC_DNS] = "dns",
[DBGC_LDB] = "ldb",
[DBGC_TEVENT] = "tevent",
[DBGC_AUTH_AUDIT] = "auth_audit",
[DBGC_AUTH_AUDIT_JSON] = "auth_json_audit",
[DBGC_KERBEROS] = "kerberos",
[DBGC_DRS_REPL] = "drs_repl",
[DBGC_SMB2] = "smb2",
[DBGC_SMB2_CREDITS] = "smb2_credits",
[DBGC_DSDB_AUDIT] = "dsdb_audit",
[DBGC_DSDB_AUDIT_JSON] = "dsdb_json_audit",
[DBGC_DSDB_PWD_AUDIT] = "dsdb_password_audit",
[DBGC_DSDB_PWD_AUDIT_JSON] = "dsdb_password_json_audit",
[DBGC_DSDB_TXN_AUDIT] = "dsdb_transaction_audit",
[DBGC_DSDB_TXN_AUDIT_JSON] = "dsdb_transaction_json_audit",
[DBGC_DSDB_GROUP_AUDIT] = "dsdb_group_audit",
[DBGC_DSDB_GROUP_AUDIT_JSON] = "dsdb_group_json_audit",
};

View File

@ -124,46 +124,11 @@ struct debug_class {
ino_t ino;
};
static const char *default_classname_table[] = {
[DBGC_ALL] = "all",
[DBGC_TDB] = "tdb",
[DBGC_PRINTDRIVERS] = "printdrivers",
[DBGC_LANMAN] = "lanman",
[DBGC_SMB] = "smb",
[DBGC_RPC_PARSE] = "rpc_parse",
[DBGC_RPC_SRV] = "rpc_srv",
[DBGC_RPC_CLI] = "rpc_cli",
[DBGC_PASSDB] = "passdb",
[DBGC_SAM] = "sam",
[DBGC_AUTH] = "auth",
[DBGC_WINBIND] = "winbind",
[DBGC_VFS] = "vfs",
[DBGC_IDMAP] = "idmap",
[DBGC_QUOTA] = "quota",
[DBGC_ACLS] = "acls",
[DBGC_LOCKING] = "locking",
[DBGC_MSDFS] = "msdfs",
[DBGC_DMAPI] = "dmapi",
[DBGC_REGISTRY] = "registry",
[DBGC_SCAVENGER] = "scavenger",
[DBGC_DNS] = "dns",
[DBGC_LDB] = "ldb",
[DBGC_TEVENT] = "tevent",
[DBGC_AUTH_AUDIT] = "auth_audit",
[DBGC_AUTH_AUDIT_JSON] = "auth_json_audit",
[DBGC_KERBEROS] = "kerberos",
[DBGC_DRS_REPL] = "drs_repl",
[DBGC_SMB2] = "smb2",
[DBGC_SMB2_CREDITS] = "smb2_credits",
[DBGC_DSDB_AUDIT] = "dsdb_audit",
[DBGC_DSDB_AUDIT_JSON] = "dsdb_json_audit",
[DBGC_DSDB_PWD_AUDIT] = "dsdb_password_audit",
[DBGC_DSDB_PWD_AUDIT_JSON] = "dsdb_password_json_audit",
[DBGC_DSDB_TXN_AUDIT] = "dsdb_transaction_audit",
[DBGC_DSDB_TXN_AUDIT_JSON] = "dsdb_transaction_json_audit",
[DBGC_DSDB_GROUP_AUDIT] = "dsdb_group_audit",
[DBGC_DSDB_GROUP_AUDIT_JSON] = "dsdb_group_json_audit",
};
/*
* default_classname_table[] is read in from debug-classname-table.c
* so that test_logging.c can use it too.
*/
#include "lib/util/debug-classes/debug-classname-table.c"
/*
* This is to allow reading of dbgc_config before the debug

View File

@ -35,73 +35,17 @@
static int log_level = 1;
struct debug_class {
int dclass;
const char *name;
};
struct debug_class classes_table[] = {
{DBGC_ALL, "all"},
{DBGC_TDB, "tdb"},
{DBGC_PRINTDRIVERS, "printdrivers"},
{DBGC_LANMAN, "lanman"},
{DBGC_SMB, "smb"},
{DBGC_RPC_PARSE, "rpc_parse"},
{DBGC_RPC_SRV, "rpc_srv"},
{DBGC_RPC_CLI, "rpc_cli"},
{DBGC_PASSDB, "passdb"},
{DBGC_SAM, "sam"},
{DBGC_AUTH, "auth"},
{DBGC_WINBIND, "winbind"},
{DBGC_VFS, "vfs"},
{DBGC_IDMAP, "idmap"},
{DBGC_QUOTA, "quota"},
{DBGC_ACLS, "acls"},
{DBGC_LOCKING, "locking"},
{DBGC_MSDFS, "msdfs"},
{DBGC_DMAPI, "dmapi"},
{DBGC_REGISTRY, "registry"},
{DBGC_SCAVENGER, "scavenger"},
{DBGC_DNS, "dns"},
{DBGC_LDB, "ldb"},
{DBGC_TEVENT, "tevent"},
{DBGC_AUTH_AUDIT, "auth_audit"},
{DBGC_AUTH_AUDIT_JSON, "auth_json_audit"},
{DBGC_KERBEROS, "kerberos"},
{DBGC_DRS_REPL, "drs_repl"},
{DBGC_SMB2, "smb2"},
{DBGC_SMB2_CREDITS, "smb2_credits"},
{DBGC_DSDB_AUDIT, "dsdb_audit"},
{DBGC_DSDB_AUDIT_JSON, "dsdb_json_audit"},
{DBGC_DSDB_PWD_AUDIT, "dsdb_password_audit"},
{DBGC_DSDB_PWD_AUDIT_JSON, "dsdb_password_json_audit"},
{DBGC_DSDB_TXN_AUDIT, "dsdb_transaction_audit"},
{DBGC_DSDB_TXN_AUDIT_JSON, "dsdb_transaction_json_audit"},
{DBGC_DSDB_GROUP_AUDIT, "dsdb_group_audit"},
{DBGC_DSDB_GROUP_AUDIT_JSON, "dsdb_group_json_audit"},
};
#include "lib/util/debug-classes/debug-classname-table.c"
static int log_all_classes(int level)
{
size_t i;
struct debug_class c;
for (i = 0; i < ARRAY_SIZE(classes_table); i++) {
c = classes_table[i];
if (i != c.dclass) {
/*
* we implicitly rely on these values staying in the
* right order.
*/
fprintf(stderr,
"expected '%s' class to have value %zu\n",
c.name, i);
return 1;
}
DEBUGC(c.dclass, level,
("logging for '%s' [%d], at level %d\n",
c.name, c.dclass, level));
const char *name = NULL;
for (i = 0; i < ARRAY_SIZE(default_classname_table); i++) {
name = default_classname_table[i];
DEBUGC(i, level,
("logging for '%s' [%zu], at level %d\n",
name, i, level));
/*
* That's it for the tests *here*. The invoker of this

View File

@ -53,7 +53,7 @@ bld.SAMBA_LIBRARY('samba-debug',
deps='replace time-basic close-low-fd talloc socket-blocking' + samba_debug_add_deps,
public_deps='systemd systemd-journal lttng-ust',
local_include=False,
includes=samba_debug_add_inc,
includes='lib/util/debug-classes ' + samba_debug_add_inc,
private_library=True)
bld.SAMBA_LIBRARY('socket-blocking',