diff options
author | Volker Lendecke <vl@samba.org> | 2010-04-03 14:16:19 +0200 |
---|---|---|
committer | Volker Lendecke <vl@samba.org> | 2010-04-19 14:27:18 +0200 |
commit | cafba3d7a772385da36f7571690ba2ce2262cef5 (patch) | |
tree | e4a9e6a6fee0adc982d20ce5dc5f6dc78d89cd99 | |
parent | e80d0ecf8b716ddb1d5bdeeb641bfee10e35c345 (diff) | |
download | samba-cafba3d7a772385da36f7571690ba2ce2262cef5.tar.gz samba-cafba3d7a772385da36f7571690ba2ce2262cef5.tar.bz2 samba-cafba3d7a772385da36f7571690ba2ce2262cef5.zip |
winbindd: Fill in num_entries where available
The server implementation of WINBINDD_LIST_USERS, WINBINDD_LIST_GROUPS and
WINBINDD_LIST_TRUSTDOM knows the number of entries returned.
Bump up the version number so that a newer lib does not rely on something an
older winbind does not do.
-rw-r--r-- | nsswitch/winbind_struct_protocol.h | 3 | ||||
-rw-r--r-- | source3/winbindd/winbindd_list_groups.c | 2 | ||||
-rw-r--r-- | source3/winbindd/winbindd_list_users.c | 2 | ||||
-rw-r--r-- | source3/winbindd/winbindd_misc.c | 2 |
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) { |