diff --git a/docs-xml/manpages/wbinfo.1.xml b/docs-xml/manpages/wbinfo.1.xml
index e0d2b6a7408..f970a5e3610 100644
--- a/docs-xml/manpages/wbinfo.1.xml
+++ b/docs-xml/manpages/wbinfo.1.xml
@@ -146,8 +146,9 @@
This parameter sets the domain on which any specified
operations will performed. If special domain name '.' is used to represent
the current domain to which winbindd
- 8 belongs. Currently only the
- , and options honor this parameter.
+ 8 belongs. A '*' as the domain name
+ means to enumerate over all domains (NOTE: This can take a long time and use
+ a lot of memory).
@@ -181,7 +182,7 @@
This option will list all groups available
in the Windows NT domain for which the samba7 daemon is operating in. Groups in all trusted domains
- will also be listed. Note that this operation does not assign
+ can be listed with the --domain='*' option. Note that this operation does not assign
group ids to any groups that have not already been
seen by winbindd8.
@@ -390,7 +391,7 @@
This option will list all users available
in the Windows NT domain for which the winbindd8 daemon is operating in. Users in all trusted domains
- will also be listed. Note that this operation does not assign
+ can be listed with the --domain='*' option. Note that this operation does not assign
user ids to any users that have not already been seen by winbindd8
.
diff --git a/nsswitch/wbinfo.c b/nsswitch/wbinfo.c
index 1d1557dcb1d..a1ca7fc5741 100644
--- a/nsswitch/wbinfo.c
+++ b/nsswitch/wbinfo.c
@@ -1926,9 +1926,16 @@ static bool print_domain_users(const char *domain)
/* Send request to winbind daemon */
- /* '.' is the special sign for our own domain */
- if (domain && strcmp(domain, ".") == 0) {
+ if (domain == NULL) {
domain = get_winbind_domain();
+ } else {
+ /* '.' is the special sign for our own domain */
+ if ((domain[0] == '\0') || strcmp(domain, ".") == 0) {
+ domain = get_winbind_domain();
+ /* '*' is the special sign for all domains */
+ } else if (strcmp(domain, "*") == 0) {
+ domain = NULL;
+ }
}
wbc_status = wbcListUsers(domain, &num_users, &users);
@@ -1956,9 +1963,16 @@ static bool print_domain_groups(const char *domain)
/* Send request to winbind daemon */
- /* '.' is the special sign for our own domain */
- if (domain && strcmp(domain, ".") == 0) {
+ if (domain == NULL) {
domain = get_winbind_domain();
+ } else {
+ /* '.' is the special sign for our own domain */
+ if ((domain[0] == '\0') || strcmp(domain, ".") == 0) {
+ domain = get_winbind_domain();
+ /* '*' is the special sign for all domains */
+ } else if (strcmp(domain, "*") == 0) {
+ domain = NULL;
+ }
}
wbc_status = wbcListGroups(domain, &num_groups, &groups);