/* From wb_common.c */
-NSS_STATUS winbindd_request_response(int req_type,
+NSS_STATUS winbindd_request_response(struct winbindd_context *wbctx,
+ int req_type,
struct winbindd_request *request,
struct winbindd_response *response);
-NSS_STATUS winbindd_priv_request_response(int req_type,
+NSS_STATUS winbindd_priv_request_response(struct winbindd_context *wbctx,
+ int req_type,
struct winbindd_request *request,
struct winbindd_response *response);
int cmd,
struct winbindd_request *request,
struct winbindd_response *response,
- NSS_STATUS (*fn)(int req_type,
+ NSS_STATUS (*fn)(struct winbindd_context *wbctx, int req_type,
struct winbindd_request *request,
struct winbindd_response *response))
{
/* for some calls the request and/or response can be NULL */
- nss_status = fn(cmd, request, response);
+ nss_status = fn(NULL, cmd, request, response);
switch (nss_status) {
case NSS_STATUS_SUCCESS:
/* Send request */
- if (winbindd_request_response(WINBINDD_GETDCNAME, &request,
+ if (winbindd_request_response(NULL, WINBINDD_GETDCNAME, &request,
&response) != NSS_STATUS_SUCCESS) {
d_fprintf(stderr, "Could not get dc name for %s\n",domain_name);
return false;
request.flags |= WBFLAG_PAM_AFS_TOKEN;
- result = winbindd_request_response(WINBINDD_PAM_AUTH, &request,
+ result = winbindd_request_response(NULL, WINBINDD_PAM_AUTH, &request,
&response);
/* Display response */
request.data.gid = gid;
- ret = winbindd_request_response(WINBINDD_GETGRGID, &request, &response);
+ ret = winbindd_request_response(NULL, WINBINDD_GETGRGID,
+ &request, &response);
logit("getgrgid ret=%d\n", ret);
STRCPY_RETNULL(request.data.groupname, name);
- ret = winbindd_request_response(WINBINDD_GETGRNAM, &request, &response);
+ ret = winbindd_request_response(NULL, WINBINDD_GETGRNAM,
+ &request, &response);
HANDLE_ERRORS(ret);
free(r_user);
}
- ret = winbindd_request_response(WINBINDD_GETGROUPS, &request, &response);
+ ret = winbindd_request_response(NULL, WINBINDD_GETGROUPS,
+ &request, &response);
HANDLE_ERRORS(ret);
request.data.uid = uid;
- ret = winbindd_request_response(WINBINDD_GETPWUID, &request, &response);
+ ret = winbindd_request_response(NULL, WINBINDD_GETPWUID,
+ &request, &response);
HANDLE_ERRORS(ret);
STRCPY_RETNULL(request.data.username, name);
- ret = winbindd_request_response(WINBINDD_GETPWNAM, &request, &response);
+ ret = winbindd_request_response(NULL, WINBINDD_GETPWNAM,
+ &request, &response);
HANDLE_ERRORS(ret);
ZERO_STRUCT(request);
ZERO_STRUCT(response);
- ret = winbindd_request_response(WINBINDD_LIST_USERS, &request, &response);
+ ret = winbindd_request_response(NULL, WINBINDD_LIST_USERS,
+ &request, &response);
if (ret != 0) {
errno = EINVAL;
return -1;
ZERO_STRUCT(request);
ZERO_STRUCT(response);
- ret = winbindd_request_response(WINBINDD_LIST_GROUPS, &request, &response);
+ ret = winbindd_request_response(NULL, WINBINDD_LIST_GROUPS,
+ &request, &response);
if (ret != 0) {
errno = EINVAL;
return -1;
request.data.uid = pwd->pw_uid;
- if (winbindd_request_response(WINBINDD_UID_TO_SID, &request, &response) !=
+ if (winbindd_request_response(NULL, WINBINDD_UID_TO_SID,
+ &request, &response) !=
NSS_STATUS_SUCCESS) {
r.attr_flag = ENOENT;
} else {
free(r_user);
}
- result = winbindd_request_response(WINBINDD_PAM_AUTH, &request, &response);
+ result = winbindd_request_response(NULL, WINBINDD_PAM_AUTH,
+ &request, &response);
winbindd_free_response(&response);
free(r_user);
}
- result = winbindd_request_response(WINBINDD_PAM_CHAUTHTOK, &request, &response);
+ result = winbindd_request_response(NULL, WINBINDD_PAM_CHAUTHTOK,
+ &request, &response);
winbindd_free_response(&response);
winbindd_free_response(&getpwent_response);
}
- ret = winbindd_request_response(WINBINDD_SETPWENT, NULL, NULL);
+ ret = winbindd_request_response(NULL, WINBINDD_SETPWENT, NULL, NULL);
#ifdef DEBUG_NSS
fprintf(stderr, "[%5d]: setpwent returns %s (%d)\n", getpid(),
nss_err_str(ret), ret);
winbindd_free_response(&getpwent_response);
}
- ret = winbindd_request_response(WINBINDD_ENDPWENT, NULL, NULL);
+ ret = winbindd_request_response(NULL, WINBINDD_ENDPWENT, NULL, NULL);
#ifdef DEBUG_NSS
fprintf(stderr, "[%5d]: endpwent returns %s (%d)\n", getpid(),
nss_err_str(ret), ret);
request.data.num_entries = MAX_GETPWENT_USERS;
- ret = winbindd_request_response(WINBINDD_GETPWENT, &request,
+ ret = winbindd_request_response(NULL, WINBINDD_GETPWENT, &request,
&getpwent_response);
if (ret == NSS_STATUS_SUCCESS) {
request.data.uid = uid;
- ret = winbindd_request_response(WINBINDD_GETPWUID, &request, &response);
+ ret = winbindd_request_response(NULL, WINBINDD_GETPWUID, &request, &response);
if (ret == NSS_STATUS_SUCCESS) {
ret = fill_pwent(result, &response.data.pw,
request.data.username
[sizeof(request.data.username) - 1] = '\0';
- ret = winbindd_request_response(WINBINDD_GETPWNAM, &request, &response);
+ ret = winbindd_request_response(NULL, WINBINDD_GETPWNAM, &request, &response);
if (ret == NSS_STATUS_SUCCESS) {
ret = fill_pwent(result, &response.data.pw, &buffer,
winbindd_free_response(&getgrent_response);
}
- ret = winbindd_request_response(WINBINDD_SETGRENT, NULL, NULL);
+ ret = winbindd_request_response(NULL, WINBINDD_SETGRENT, NULL, NULL);
#ifdef DEBUG_NSS
fprintf(stderr, "[%5d]: setgrent returns %s (%d)\n", getpid(),
nss_err_str(ret), ret);
winbindd_free_response(&getgrent_response);
}
- ret = winbindd_request_response(WINBINDD_ENDGRENT, NULL, NULL);
+ ret = winbindd_request_response(NULL, WINBINDD_ENDGRENT, NULL, NULL);
#ifdef DEBUG_NSS
fprintf(stderr, "[%5d]: endgrent returns %s (%d)\n", getpid(),
nss_err_str(ret), ret);
request.data.num_entries = MAX_GETGRENT_USERS;
- ret = winbindd_request_response(cmd, &request,
+ ret = winbindd_request_response(NULL, cmd, &request,
&getgrent_response);
if (ret == NSS_STATUS_SUCCESS) {
request.data.groupname
[sizeof(request.data.groupname) - 1] = '\0';
- ret = winbindd_request_response(WINBINDD_GETGRNAM, &request, &response);
+ ret = winbindd_request_response(NULL, WINBINDD_GETGRNAM,
+ &request, &response);
if (ret == NSS_STATUS_SUCCESS) {
ret = fill_grent(result, &response.data.gr,
request.data.gid = gid;
- ret = winbindd_request_response(WINBINDD_GETGRGID, &request, &response);
+ ret = winbindd_request_response(NULL, WINBINDD_GETGRGID,
+ &request, &response);
if (ret == NSS_STATUS_SUCCESS) {
strncpy(request.data.username, user,
sizeof(request.data.username) - 1);
- ret = winbindd_request_response(WINBINDD_GETGROUPS, &request, &response);
+ ret = winbindd_request_response(NULL, WINBINDD_GETGROUPS,
+ &request, &response);
if (ret == NSS_STATUS_SUCCESS) {
int num_gids = response.data.num_entries;
strncpy(request.data.sid, user_sid,sizeof(request.data.sid) - 1);
request.data.sid[sizeof(request.data.sid) - 1] = '\0';
- ret = winbindd_request_response(WINBINDD_GETUSERSIDS, &request, &response);
+ ret = winbindd_request_response(NULL, WINBINDD_GETUSERSIDS,
+ &request, &response);
if (ret != NSS_STATUS_SUCCESS) {
goto done;
sizeof(request.data.name.name) - 1);
request.data.name.name[sizeof(request.data.name.name) - 1] = '\0';
- ret = winbindd_request_response(WINBINDD_LOOKUPNAME, &request, &response);
+ ret = winbindd_request_response(NULL, WINBINDD_LOOKUPNAME,
+ &request, &response);
if (ret != NSS_STATUS_SUCCESS) {
*errnop = errno = EINVAL;
goto failed;
/* we need to fetch the separator first time through */
if (!sep_char) {
- ret = winbindd_request_response(WINBINDD_INFO, &request, &response);
+ ret = winbindd_request_response(NULL, WINBINDD_INFO,
+ &request, &response);
if (ret != NSS_STATUS_SUCCESS) {
*errnop = errno = EINVAL;
goto failed;
sizeof(request.data.sid) - 1);
request.data.sid[sizeof(request.data.sid) - 1] = '\0';
- ret = winbindd_request_response(WINBINDD_LOOKUPSID, &request, &response);
+ ret = winbindd_request_response(NULL, WINBINDD_LOOKUPSID,
+ &request, &response);
if (ret != NSS_STATUS_SUCCESS) {
*errnop = errno = EINVAL;
goto failed;
strncpy(request.data.sid, sid, sizeof(request.data.sid) - 1);
request.data.sid[sizeof(request.data.sid) - 1] = '\0';
- ret = winbindd_request_response(WINBINDD_SID_TO_UID, &request, &response);
+ ret = winbindd_request_response(NULL, WINBINDD_SID_TO_UID,
+ &request, &response);
if (ret != NSS_STATUS_SUCCESS) {
*errnop = errno = EINVAL;
goto failed;
strncpy(request.data.sid, sid, sizeof(request.data.sid) - 1);
request.data.sid[sizeof(request.data.sid) - 1] = '\0';
- ret = winbindd_request_response(WINBINDD_SID_TO_GID, &request, &response);
+ ret = winbindd_request_response(NULL, WINBINDD_SID_TO_GID,
+ &request, &response);
if (ret != NSS_STATUS_SUCCESS) {
*errnop = errno = EINVAL;
goto failed;
request.data.uid = uid;
- ret = winbindd_request_response(WINBINDD_UID_TO_SID, &request, &response);
+ ret = winbindd_request_response(NULL, WINBINDD_UID_TO_SID,
+ &request, &response);
if (ret != NSS_STATUS_SUCCESS) {
*errnop = errno = EINVAL;
goto failed;
request.data.gid = gid;
- ret = winbindd_request_response(WINBINDD_GID_TO_SID, &request, &response);
+ ret = winbindd_request_response(NULL, WINBINDD_GID_TO_SID,
+ &request, &response);
if (ret != NSS_STATUS_SUCCESS) {
*errnop = errno = EINVAL;
goto failed;
ZERO_STRUCT(response);
strncpy(request.data.username, uname,
sizeof(request.data.username) - 1);
- i = winbindd_request_response(WINBINDD_GETGROUPS, &request, &response);
+ i = winbindd_request_response(NULL, WINBINDD_GETGROUPS,
+ &request, &response);
if (i != NSS_STATUS_SUCCESS)
return NS_NOTFOUND;
wblistv = (gid_t *)response.extra_data.data;
strncpy(request.data.winsreq, argp->key.name, sizeof(request.data.winsreq) - 1);
request.data.winsreq[sizeof(request.data.winsreq) - 1] = '\0';
- if( (ret = winbindd_request_response(WINBINDD_WINS_BYNAME, &request, &response))
+ if( (ret = winbindd_request_response(NULL, WINBINDD_WINS_BYNAME,
+ &request, &response))
== NSS_STATUS_SUCCESS ) {
ret = parse_response(af, argp, &response);
}
strncpy(request.data.winsreq, argp->key.name, sizeof(request.data.winsreq) - 1);
request.data.winsreq[sizeof(request.data.winsreq) - 1] = '\0';
- if( (ret = winbindd_request_response(WINBINDD_WINS_BYNAME, &request, &response))
+ if( (ret = winbindd_request_response(NULL, WINBINDD_WINS_BYNAME,
+ &request, &response))
== NSS_STATUS_SUCCESS ) {
ret = parse_response(AF_INET, argp, &response);
}
((unsigned char *)argp->key.hostaddr.addr)[3]);
#endif
- ret = winbindd_request_response(WINBINDD_WINS_BYIP, &request, &response);
+ ret = winbindd_request_response(NULL, WINBINDD_WINS_BYIP,
+ &request, &response);
if( ret == NSS_STATUS_SUCCESS) {
parse_response(argp->key.hostaddr.type, argp, &response);
/* Send off request */
- if (winbindd_request_response(WINBINDD_INFO, NULL, &response) !=
+ if (winbindd_request_response(NULL, WINBINDD_INFO, NULL, &response) !=
NSS_STATUS_SUCCESS) {
d_printf("could not obtain winbind separator!\n");
return *lp_winbind_separator();
/* Send off request */
- if (winbindd_request_response(WINBINDD_DOMAIN_NAME, NULL, &response) !=
+ if (winbindd_request_response(NULL, WINBINDD_DOMAIN_NAME, NULL, &response) !=
NSS_STATUS_SUCCESS) {
DEBUG(1, ("could not obtain winbind domain name!\n"));
return lp_workgroup();
/* Send off request */
- if (winbindd_request_response(WINBINDD_NETBIOS_NAME, NULL, &response) !=
+ if (winbindd_request_response(NULL, WINBINDD_NETBIOS_NAME, NULL, &response) !=
NSS_STATUS_SUCCESS) {
DEBUG(1, ("could not obtain winbind netbios name!\n"));
return lp_netbios_name();
return False;
}
- if (winbindd_request_response(WINBINDD_LOOKUPNAME, &request, &response) !=
+ if (winbindd_request_response(NULL, WINBINDD_LOOKUPNAME, &request, &response) !=
NSS_STATUS_SUCCESS) {
DEBUG(0, ("Winbindd lookupname failed to resolve %s into a SID!\n",
require_membership_of));
sizeof(request.data.auth.require_membership_of_sid));
}
- result = winbindd_request_response(WINBINDD_PAM_AUTH, &request, &response);
+ result = winbindd_request_response(NULL, WINBINDD_PAM_AUTH, &request, &response);
/* Display response */
request.data.auth_crap.nt_resp_len = nt_response->length;
}
- result = winbindd_request_response(WINBINDD_PAM_AUTH_CRAP, &request, &response);
+ result = winbindd_request_response(NULL, WINBINDD_PAM_AUTH_CRAP, &request, &response);
SAFE_FREE(request.extra_data.data);
/* Display response */
request.data.chng_pswd_auth_crap.old_lm_hash_enc_len = old_lm_hash_enc.length;
}
- result = winbindd_request_response(WINBINDD_PAM_CHNG_PSWD_AUTH_CRAP, &request, &response);
+ result = winbindd_request_response(NULL, WINBINDD_PAM_CHNG_PSWD_AUTH_CRAP, &request, &response);
/* Display response */
challenge_msg.data, challenge_msg.length);
}
- result = winbindd_request_response(WINBINDD_CCACHE_NTLMAUTH, &wb_request, &wb_response);
+ result = winbindd_request_response(NULL, WINBINDD_CCACHE_NTLMAUTH, &wb_request, &wb_response);
SAFE_FREE(wb_request.extra_data.data);
if (result != NSS_STATUS_SUCCESS) {