s3:winbind: Convert winbindd_dsgetdcname to the new API
[sfrench/samba-autobuild/.git] / source3 / winbindd / winbindd.c
index 0f320850d2ae40a25c722985beee06da0482bc31..6485f1734c28a0c7381e5c9154c0c7f1811fe047 100644 (file)
@@ -425,27 +425,8 @@ static struct winbindd_dispatch_table {
        const char *winbindd_cmd_name;
 } dispatch_table[] = {
 
-       /* User functions */
-
-       { WINBINDD_GETPWNAM, winbindd_getpwnam, "GETPWNAM" },
-       { WINBINDD_GETPWUID, winbindd_getpwuid, "GETPWUID" },
-       { WINBINDD_GETPWSID, winbindd_getpwsid, "GETPWSID" },
-
-       { WINBINDD_SETPWENT, winbindd_setpwent, "SETPWENT" },
-       { WINBINDD_ENDPWENT, winbindd_endpwent, "ENDPWENT" },
-       { WINBINDD_GETPWENT, winbindd_getpwent, "GETPWENT" },
-
-       { WINBINDD_GETGROUPS, winbindd_getgroups, "GETGROUPS" },
-       { WINBINDD_GETUSERSIDS, winbindd_getusersids, "GETUSERSIDS" },
-       { WINBINDD_GETUSERDOMGROUPS, winbindd_getuserdomgroups,
-         "GETUSERDOMGROUPS" },
-       { WINBINDD_GETSIDALIASES, winbindd_getsidaliases,
-          "LOOKUPUSERALIASES" },
-
        /* Group functions */
 
-       { WINBINDD_GETGRNAM, winbindd_getgrnam, "GETGRNAM" },
-       { WINBINDD_GETGRGID, winbindd_getgrgid, "GETGRGID" },
        { WINBINDD_SETGRENT, winbindd_setgrent, "SETGRENT" },
        { WINBINDD_ENDGRENT, winbindd_endgrent, "ENDGRENT" },
        { WINBINDD_GETGRENT, winbindd_getgrent, "GETGRENT" },
@@ -465,7 +446,6 @@ static struct winbindd_dispatch_table {
        { WINBINDD_LIST_GROUPS, winbindd_list_groups, "LIST_GROUPS" },
        { WINBINDD_LIST_TRUSTDOM, winbindd_list_trusted_domains,
          "LIST_TRUSTDOM" },
-       { WINBINDD_SHOW_SEQUENCE, winbindd_show_sequence, "SHOW_SEQUENCE" },
 
        /* SID related functions */
 
@@ -473,8 +453,6 @@ static struct winbindd_dispatch_table {
 
        /* Lookup related functions */
 
-       { WINBINDD_UID_TO_SID, winbindd_uid_to_sid, "UID_TO_SID" },
-       { WINBINDD_GID_TO_SID, winbindd_gid_to_sid, "GID_TO_SID" },
        { WINBINDD_ALLOCATE_UID, winbindd_allocate_uid, "ALLOCATE_UID" },
        { WINBINDD_ALLOCATE_GID, winbindd_allocate_gid, "ALLOCATE_GID" },
        { WINBINDD_SET_MAPPING, winbindd_set_mapping, "SET_MAPPING" },
@@ -493,7 +471,6 @@ static struct winbindd_dispatch_table {
        { WINBINDD_PRIV_PIPE_DIR, winbindd_priv_pipe_dir,
          "WINBINDD_PRIV_PIPE_DIR" },
        { WINBINDD_GETDCNAME, winbindd_getdcname, "GETDCNAME" },
-       { WINBINDD_DSGETDCNAME, winbindd_dsgetdcname, "DSGETDCNAME" },
 
        /* Credential cache access */
        { WINBINDD_CCACHE_NTLMAUTH, winbindd_ccache_ntlm_auth, "NTLMAUTH" },
@@ -513,6 +490,7 @@ struct winbindd_async_dispatch_table {
        const char *cmd_name;
        struct tevent_req *(*send_req)(TALLOC_CTX *mem_ctx,
                                       struct tevent_context *ev,
+                                      struct winbindd_cli_state *cli,
                                       struct winbindd_request *request);
        NTSTATUS (*recv_req)(struct tevent_req *req,
                             struct winbindd_response *presp);
@@ -529,6 +507,38 @@ static struct winbindd_async_dispatch_table async_nonpriv_table[] = {
          winbindd_sid_to_uid_send, winbindd_sid_to_uid_recv },
        { WINBINDD_SID_TO_GID, "SID_TO_GID",
          winbindd_sid_to_gid_send, winbindd_sid_to_gid_recv },
+       { WINBINDD_UID_TO_SID, "UID_TO_SID",
+         winbindd_uid_to_sid_send, winbindd_uid_to_sid_recv },
+       { WINBINDD_GID_TO_SID, "GID_TO_SID",
+         winbindd_gid_to_sid_send, winbindd_gid_to_sid_recv },
+       { WINBINDD_GETPWSID, "GETPWSID",
+         winbindd_getpwsid_send, winbindd_getpwsid_recv },
+       { WINBINDD_GETPWNAM, "GETPWNAM",
+         winbindd_getpwnam_send, winbindd_getpwnam_recv },
+       { WINBINDD_GETPWUID, "GETPWUID",
+         winbindd_getpwuid_send, winbindd_getpwuid_recv },
+       { WINBINDD_GETSIDALIASES, "GETSIDALIASES",
+         winbindd_getsidaliases_send, winbindd_getsidaliases_recv },
+       { WINBINDD_GETUSERDOMGROUPS, "GETUSERDOMGROUPS",
+         winbindd_getuserdomgroups_send, winbindd_getuserdomgroups_recv },
+       { WINBINDD_GETGROUPS, "GETGROUPS",
+         winbindd_getgroups_send, winbindd_getgroups_recv },
+       { WINBINDD_SHOW_SEQUENCE, "SHOW_SEQUENCE",
+         winbindd_show_sequence_send, winbindd_show_sequence_recv },
+       { WINBINDD_GETGRGID, "GETGRGID",
+         winbindd_getgrgid_send, winbindd_getgrgid_recv },
+       { WINBINDD_GETGRNAM, "GETGRNAM",
+         winbindd_getgrnam_send, winbindd_getgrnam_recv },
+       { WINBINDD_GETUSERSIDS, "GETUSERSIDS",
+         winbindd_getusersids_send, winbindd_getusersids_recv },
+       { WINBINDD_SETPWENT, "SETPWENT",
+         winbindd_setpwent_send, winbindd_setpwent_recv },
+       { WINBINDD_GETPWENT, "GETPWENT",
+         winbindd_getpwent_send, winbindd_getpwent_recv },
+       { WINBINDD_ENDPWENT, "ENDPWENT",
+         winbindd_endpwent_send, winbindd_endpwent_recv },
+       { WINBINDD_DSGETDCNAME, "DSGETDCNAME",
+         winbindd_dsgetdcname_send, winbindd_dsgetdcname_recv },
 
        { 0, NULL, NULL, NULL }
 };
@@ -562,7 +572,7 @@ static void process_request(struct winbindd_cli_state *state)
                           atable->cmd_name));
 
                req = atable->send_req(state->mem_ctx, winbind_event_context(),
-                                      state->request);
+                                      state, state->request);
                if (req == NULL) {
                        DEBUG(0, ("process_request: atable->send failed for "
                                  "%s\n", atable->cmd_name));
@@ -805,7 +815,6 @@ static void remove_client(struct winbindd_cli_state *state)
 
        /* Free any getent state */
 
-       free_getent_state(state->getpwent_state);
        free_getent_state(state->getgrent_state);
 
        TALLOC_FREE(state->mem_ctx);
@@ -826,7 +835,7 @@ static bool remove_idle_client(void)
 
        for (state = winbindd_client_list(); state; state = state->next) {
                if (state->response == NULL &&
-                   !state->getpwent_state && !state->getgrent_state) {
+                   !state->pwent_state && !state->getgrent_state) {
                        nidle++;
                        if (!last_access || state->last_access < last_access) {
                                last_access = state->last_access;