summaryrefslogtreecommitdiffstats
path: root/source/nsswitch/winbind_nss.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/nsswitch/winbind_nss.c')
-rw-r--r--source/nsswitch/winbind_nss.c62
1 files changed, 28 insertions, 34 deletions
diff --git a/source/nsswitch/winbind_nss.c b/source/nsswitch/winbind_nss.c
index 0b4c0ce1d08..250e2df59be 100644
--- a/source/nsswitch/winbind_nss.c
+++ b/source/nsswitch/winbind_nss.c
@@ -21,7 +21,8 @@
Boston, MA 02111-1307, USA.
*/
-#include "winbind_client.h"
+#include "winbind_nss_config.h"
+#include "winbindd_nss.h"
#ifdef HAVE_NS_API_H
#undef VOLATILE
@@ -36,6 +37,17 @@
extern int winbindd_fd;
+void init_request(struct winbindd_request *req,int rq_type);
+NSS_STATUS winbindd_send_request(int req_type,
+ struct winbindd_request *request);
+NSS_STATUS winbindd_get_response(struct winbindd_response *response);
+NSS_STATUS winbindd_request(int req_type,
+ struct winbindd_request *request,
+ struct winbindd_response *response);
+int winbind_open_pipe_sock(void);
+int write_sock(void *buffer, int count);
+int read_reply(struct winbindd_response *response);
+void free_response(struct winbindd_response *response);
#ifdef HAVE_NS_API_H
/* IRIX version */
@@ -226,7 +238,6 @@ winbind_callback(nsd_file_t **rqp, int fd)
free_response(&response);
return(do_list(1,rq));
case WINBINDD_GETGRENT:
- case WINBINDD_GETGRLST:
nsd_logprintf(NSD_LOG_MIN,
"callback (winbind) - %d GETGRENT responses\n",
response.data.num_entries);
@@ -666,7 +677,7 @@ static NSS_STATUS fill_pwent(struct passwd *result,
the static data passed to us by libc to put strings and stuff in.
Return NSS_STATUS_TRYAGAIN if we run out of memory. */
-static NSS_STATUS fill_grent(struct group *result, struct winbindd_gr *gr,
+static int fill_grent(struct group *result, struct winbindd_gr *gr,
char *gr_mem, char **buffer, size_t *buflen)
{
fstring name;
@@ -856,7 +867,7 @@ _nss_winbind_getpwent_r(struct passwd *result, char *buffer,
}
ret = fill_pwent(result, &pw_cache[ndx_pw_cache],
- &buffer, &buflen);
+ &buffer, (int *)&buflen);
/* Out of memory - try again */
@@ -906,7 +917,7 @@ _nss_winbind_getpwuid_r(uid_t uid, struct passwd *result, char *buffer,
if (ret == NSS_STATUS_SUCCESS) {
ret = fill_pwent(result, &response.data.pw,
- &buffer, &buflen);
+ &buffer, (int *)&buflen);
if (ret == NSS_STATUS_TRYAGAIN) {
keep_response = True;
@@ -919,7 +930,7 @@ _nss_winbind_getpwuid_r(uid_t uid, struct passwd *result, char *buffer,
/* We've been called again */
- ret = fill_pwent(result, &response.data.pw, &buffer, &buflen);
+ ret = fill_pwent(result, &response.data.pw, &buffer, (int *)&buflen);
if (ret == NSS_STATUS_TRYAGAIN) {
keep_response = True;
@@ -968,7 +979,7 @@ _nss_winbind_getpwnam_r(const char *name, struct passwd *result, char *buffer,
if (ret == NSS_STATUS_SUCCESS) {
ret = fill_pwent(result, &response.data.pw, &buffer,
- &buflen);
+ (int *)&buflen);
if (ret == NSS_STATUS_TRYAGAIN) {
keep_response = True;
@@ -981,7 +992,7 @@ _nss_winbind_getpwnam_r(const char *name, struct passwd *result, char *buffer,
/* We've been called again */
- ret = fill_pwent(result, &response.data.pw, &buffer, &buflen);
+ ret = fill_pwent(result, &response.data.pw, &buffer, (int *)&buflen);
if (ret == NSS_STATUS_TRYAGAIN) {
keep_response = True;
@@ -1042,15 +1053,13 @@ _nss_winbind_endgrent(void)
/* Get next entry from ntdom group database */
-static NSS_STATUS
-winbind_getgrent(enum winbindd_cmd cmd,
- struct group *result,
- char *buffer, size_t buflen, int *errnop)
+NSS_STATUS
+_nss_winbind_getgrent_r(struct group *result,
+ char *buffer, size_t buflen, int *errnop)
{
NSS_STATUS ret;
static struct winbindd_request request;
static int called_again;
-
#ifdef DEBUG_NSS
fprintf(stderr, "[%5d]: getgrent\n", getpid());
@@ -1074,7 +1083,7 @@ winbind_getgrent(enum winbindd_cmd cmd,
request.data.num_entries = MAX_GETGRENT_USERS;
- ret = winbindd_request(cmd, &request,
+ ret = winbindd_request(WINBINDD_GETGRENT, &request,
&getgrent_response);
if (ret == NSS_STATUS_SUCCESS) {
@@ -1107,7 +1116,7 @@ winbind_getgrent(enum winbindd_cmd cmd,
ret = fill_grent(result, &gr_cache[ndx_gr_cache],
((char *)getgrent_response.extra_data)+mem_ofs,
- &buffer, &buflen);
+ &buffer, (int *)&buflen);
/* Out of memory - try again */
@@ -1132,21 +1141,6 @@ winbind_getgrent(enum winbindd_cmd cmd,
return ret;
}
-
-NSS_STATUS
-_nss_winbind_getgrent_r(struct group *result,
- char *buffer, size_t buflen, int *errnop)
-{
- return winbind_getgrent(WINBINDD_GETGRENT, result, buffer, buflen, errnop);
-}
-
-NSS_STATUS
-_nss_winbind_getgrlst_r(struct group *result,
- char *buffer, size_t buflen, int *errnop)
-{
- return winbind_getgrent(WINBINDD_GETGRLST, result, buffer, buflen, errnop);
-}
-
/* Return group struct from group name */
NSS_STATUS
@@ -1182,7 +1176,7 @@ _nss_winbind_getgrnam_r(const char *name,
if (ret == NSS_STATUS_SUCCESS) {
ret = fill_grent(result, &response.data.gr,
response.extra_data,
- &buffer, &buflen);
+ &buffer, (int *)&buflen);
if (ret == NSS_STATUS_TRYAGAIN) {
keep_response = True;
@@ -1196,7 +1190,7 @@ _nss_winbind_getgrnam_r(const char *name,
/* We've been called again */
ret = fill_grent(result, &response.data.gr,
- response.extra_data, &buffer, &buflen);
+ response.extra_data, &buffer, (int *)&buflen);
if (ret == NSS_STATUS_TRYAGAIN) {
keep_response = True;
@@ -1245,7 +1239,7 @@ _nss_winbind_getgrgid_r(gid_t gid,
ret = fill_grent(result, &response.data.gr,
response.extra_data,
- &buffer, &buflen);
+ &buffer, (int *)&buflen);
if (ret == NSS_STATUS_TRYAGAIN) {
keep_response = True;
@@ -1259,7 +1253,7 @@ _nss_winbind_getgrgid_r(gid_t gid,
/* We've been called again */
ret = fill_grent(result, &response.data.gr,
- response.extra_data, &buffer, &buflen);
+ response.extra_data, &buffer, (int *)&buflen);
if (ret == NSS_STATUS_TRYAGAIN) {
keep_response = True;