summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--nsswitch/winbind_struct_protocol.h3
-rw-r--r--source3/winbindd/winbindd_list_groups.c2
-rw-r--r--source3/winbindd/winbindd_list_users.c2
-rw-r--r--source3/winbindd/winbindd_misc.c2
4 files changed, 8 insertions, 1 deletions
diff --git a/nsswitch/winbind_struct_protocol.h b/nsswitch/winbind_struct_protocol.h
index 70fc477039..b0f99a30a5 100644
--- a/nsswitch/winbind_struct_protocol.h
+++ b/nsswitch/winbind_struct_protocol.h
@@ -50,8 +50,9 @@ typedef char fstring[FSTRING_LEN];
* 22: added WINBINDD_PING_DC
* 23: added session_key to ccache_ntlm_auth response
* added WINBINDD_CCACHE_SAVE
+ * 24: Fill in num_entries WINBINDD_LIST_USERS and WINBINDD_LIST_GROUPS
*/
-#define WINBIND_INTERFACE_VERSION 23
+#define WINBIND_INTERFACE_VERSION 24
/* Have to deal with time_t being 4 or 8 bytes due to structure alignment.
On a 64bit Linux box, we have to support a constant structure size
diff --git a/source3/winbindd/winbindd_list_groups.c b/source3/winbindd/winbindd_list_groups.c
index 3c9ff20b85..7331e9da1e 100644
--- a/source3/winbindd/winbindd_list_groups.c
+++ b/source3/winbindd/winbindd_list_groups.c
@@ -161,6 +161,7 @@ NTSTATUS winbindd_list_groups_recv(struct tevent_req *req,
}
len = 0;
+ response->data.num_entries = 0;
for (i=0; i<state->num_domains; i++) {
struct winbindd_list_groups_domstate *d = &state->domains[i];
@@ -171,6 +172,7 @@ NTSTATUS winbindd_list_groups_recv(struct tevent_req *req,
True);
len += strlen(name)+1;
}
+ response->data.num_entries += d->groups.num_principals;
}
result = talloc_array(response, char, len+1);
diff --git a/source3/winbindd/winbindd_list_users.c b/source3/winbindd/winbindd_list_users.c
index 19232b7b11..124e71b039 100644
--- a/source3/winbindd/winbindd_list_users.c
+++ b/source3/winbindd/winbindd_list_users.c
@@ -161,6 +161,7 @@ NTSTATUS winbindd_list_users_recv(struct tevent_req *req,
}
len = 0;
+ response->data.num_entries = 0;
for (i=0; i<state->num_domains; i++) {
struct winbindd_list_users_domstate *d = &state->domains[i];
@@ -171,6 +172,7 @@ NTSTATUS winbindd_list_users_recv(struct tevent_req *req,
True);
len += strlen(name)+1;
}
+ response->data.num_entries += d->users.num_userinfos;
}
result = talloc_array(response, char, len+1);
diff --git a/source3/winbindd/winbindd_misc.c b/source3/winbindd/winbindd_misc.c
index ac8f1a7dfd..e6be28079d 100644
--- a/source3/winbindd/winbindd_misc.c
+++ b/source3/winbindd/winbindd_misc.c
@@ -130,6 +130,8 @@ void winbindd_list_trusted_domains(struct winbindd_cli_state *state)
is_online ? "Online" : "Offline" );
}
+ state->response->data.num_entries = num_domains;
+
extra_data_len = strlen(extra_data);
if (extra_data_len > 0) {