r23210: Very funny, we thought to use netr_GetDcName (e.g. in winbind) but were using
authorGünther Deschner <gd@samba.org>
Tue, 29 May 2007 15:27:13 +0000 (15:27 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:22:54 +0000 (12:22 -0500)
netr_GetDcAnyName all the time (which is the correct thing to do).

Fix the naming and opcode mixup in all branches.

Guenther

source/include/rpc_netlogon.h
source/nsswitch/winbindd_cm.c
source/nsswitch/winbindd_misc.c
source/rpc_client/cli_netlogon.c
source/rpc_parse/parse_net.c
source/rpcclient/cmd_netlogon.c

index 2583a5bd4090d7de86ea2bef6f89a0631bc562a4..163b18a266b5289a96583759d1a8e370b078cd4b 100644 (file)
@@ -32,9 +32,9 @@
 #define NET_AUTH               0x05
 #define NET_SRVPWSET           0x06
 #define NET_SAM_DELTAS         0x07
-#define NET_GETANYDCNAME       0x0b
+#define NET_GETDCNAME          0x0b
 #define NET_LOGON_CTRL         0x0c
-#define NET_GETDCNAME          0x0d
+#define NET_GETANYDCNAME       0x0d
 #define NET_AUTH2              0x0f
 #define NET_LOGON_CTRL2                0x0e
 #define NET_SAM_SYNC           0x10
@@ -411,39 +411,39 @@ typedef struct net_r_logon_ctrl2_info {
        NTSTATUS status; /* return code */
 } NET_R_LOGON_CTRL2;
 
-/* NET_Q_GETDCNAME - Ask a DC for a trusted DC name */
+/* NET_Q_GETANYDCNAME - Ask a DC for a trusted DC name */
 
-typedef struct net_q_getdcname {
+typedef struct net_q_getanydcname {
        uint32  ptr_logon_server;
        UNISTR2 uni_logon_server;
        uint32  ptr_domainname;
        UNISTR2 uni_domainname;
-} NET_Q_GETDCNAME;
+} NET_Q_GETANYDCNAME;
 
-/* NET_R_GETDCNAME - Ask a DC for a trusted DC name */
+/* NET_R_GETANYDCNAME - Ask a DC for a trusted DC name */
 
-typedef struct net_r_getdcname {
+typedef struct net_r_getanydcname {
        uint32  ptr_dcname;
        UNISTR2 uni_dcname;
        WERROR status;
-} NET_R_GETDCNAME;
+} NET_R_GETANYDCNAME;
 
 
-/* NET_Q_GETANYDCNAME - Ask a DC for a trusted DC name */
+/* NET_Q_GETDCNAME - Ask a DC for a trusted DC name */
 
-typedef struct net_q_getanydcname {
+typedef struct net_q_getdcname {
        UNISTR2 uni_logon_server;
        uint32  ptr_domainname;
        UNISTR2 uni_domainname;
-} NET_Q_GETANYDCNAME;
+} NET_Q_GETDCNAME;
 
-/* NET_R_GETANYDCNAME - Ask a DC for a trusted DC name */
+/* NET_R_GETDCNAME - Ask a DC for a trusted DC name */
 
-typedef struct net_r_getanydcname {
+typedef struct net_r_getdcname {
        uint32  ptr_dcname;
        UNISTR2 uni_dcname;
-       WERROR status;
-} NET_R_GETANYDCNAME;
+       NTSTATUS status;
+} NET_R_GETDCNAME;
 
 /* NET_Q_TRUST_DOM_LIST - LSA Query Trusted Domains */
 typedef struct net_q_trust_dom_info {
index ba91239a7396203409044f9e1c81854e33aa4105..b8b11b8466aa9638d4d165409124c1c0afbe8246 100644 (file)
@@ -602,8 +602,8 @@ static BOOL get_dc_name_via_netlogon(const struct winbindd_domain *domain,
 
        orig_timeout = cli_set_timeout(netlogon_pipe->cli, 35000);
        
-       werr = rpccli_netlogon_getdcname(netlogon_pipe, mem_ctx, our_domain->dcname,
-                                          domain->name, tmp);
+       werr = rpccli_netlogon_getanydcname(netlogon_pipe, mem_ctx, our_domain->dcname,
+                                           domain->name, tmp);
 
        /* And restore our original timeout. */
        cli_set_timeout(netlogon_pipe->cli, orig_timeout);
@@ -611,12 +611,12 @@ static BOOL get_dc_name_via_netlogon(const struct winbindd_domain *domain,
        talloc_destroy(mem_ctx);
 
        if (!W_ERROR_IS_OK(werr)) {
-               DEBUG(10, ("rpccli_netlogon_getdcname failed: %s\n",
+               DEBUG(10, ("rpccli_netlogon_getanydcname failed: %s\n",
                           dos_errstr(werr)));
                return False;
        }
 
-       /* cli_netlogon_getdcname gives us a name with \\ */
+       /* cli_netlogon_getanydcname gives us a name with \\ */
        p = tmp;
        if (*p == '\\') {
                p+=1;
@@ -627,7 +627,7 @@ static BOOL get_dc_name_via_netlogon(const struct winbindd_domain *domain,
 
        fstrcpy(dcname, p);
 
-       DEBUG(10, ("rpccli_netlogon_getdcname returned %s\n", dcname));
+       DEBUG(10, ("rpccli_netlogon_getanydcname returned %s\n", dcname));
 
        if (!resolve_name(dcname, dc_ip, 0x20)) {
                return False;
index ac751bf2a85e6e459425f411bd56d4c2c115e43f..acb7dbf8a971fd993016ac0075e43a30dd46bff1 100644 (file)
@@ -247,9 +247,9 @@ enum winbindd_result winbindd_dual_getdcname(struct winbindd_domain *domain,
 
        orig_timeout = cli_set_timeout(netlogon_pipe->cli, 35000);
 
-       werr = rpccli_netlogon_getdcname(netlogon_pipe, state->mem_ctx, domain->dcname,
-                                          state->request.domain_name,
-                                          dcname_slash);
+       werr = rpccli_netlogon_getanydcname(netlogon_pipe, state->mem_ctx, domain->dcname,
+                                           state->request.domain_name,
+                                           dcname_slash);
        /* And restore our original timeout. */
        cli_set_timeout(netlogon_pipe->cli, orig_timeout);
 
index eaa398087b41bb86f32f926c69299ac1d0e408fb..f155c736e9335f3969136e0599e392d98f49ee77 100644 (file)
@@ -380,15 +380,15 @@ NTSTATUS rpccli_netlogon_logon_ctrl2(struct rpc_pipe_client *cli, TALLOC_CTX *me
        return result;
 }
 
-/* GetDCName */
+/* GetAnyDCName */
 
-WERROR rpccli_netlogon_getdcname(struct rpc_pipe_client *cli,
-                                TALLOC_CTX *mem_ctx, const char *mydcname,
-                                const char *domainname, fstring newdcname)
+WERROR rpccli_netlogon_getanydcname(struct rpc_pipe_client *cli,
+                                   TALLOC_CTX *mem_ctx, const char *mydcname,
+                                   const char *domainname, fstring newdcname)
 {
        prs_struct qbuf, rbuf;
-       NET_Q_GETDCNAME q;
-       NET_R_GETDCNAME r;
+       NET_Q_GETANYDCNAME q;
+       NET_R_GETANYDCNAME r;
        WERROR result;
        fstring mydcname_slash;
 
@@ -398,15 +398,15 @@ WERROR rpccli_netlogon_getdcname(struct rpc_pipe_client *cli,
        /* Initialise input parameters */
 
        slprintf(mydcname_slash, sizeof(fstring)-1, "\\\\%s", mydcname);
-       init_net_q_getdcname(&q, mydcname_slash, domainname);
+       init_net_q_getanydcname(&q, mydcname_slash, domainname);
 
        /* Marshall data and send request */
 
-       CLI_DO_RPC_WERR(cli, mem_ctx, PI_NETLOGON, NET_GETDCNAME,
+       CLI_DO_RPC_WERR(cli, mem_ctx, PI_NETLOGON, NET_GETANYDCNAME,
                q, r,
                qbuf, rbuf,
-               net_io_q_getdcname,
-               net_io_r_getdcname,
+               net_io_q_getanydcname,
+               net_io_r_getanydcname,
                WERR_GENERAL_FAILURE);
 
        result = r.status;
@@ -418,16 +418,16 @@ WERROR rpccli_netlogon_getdcname(struct rpc_pipe_client *cli,
        return result;
 }
 
-/* GetAnyDCName */
+/* GetDCName */
 
-WERROR rpccli_netlogon_getanydcname(struct rpc_pipe_client *cli,
-                                   TALLOC_CTX *mem_ctx, const char *mydcname,
-                                   const char *domainname, fstring newdcname)
+NTSTATUS rpccli_netlogon_getdcname(struct rpc_pipe_client *cli,
+                                  TALLOC_CTX *mem_ctx, const char *mydcname,
+                                  const char *domainname, fstring newdcname)
 {
        prs_struct qbuf, rbuf;
-       NET_Q_GETANYDCNAME q;
-       NET_R_GETANYDCNAME r;
-       WERROR result;
+       NET_Q_GETDCNAME q;
+       NET_R_GETDCNAME r;
+       NTSTATUS result;
        fstring mydcname_slash;
 
        ZERO_STRUCT(q);
@@ -436,20 +436,20 @@ WERROR rpccli_netlogon_getanydcname(struct rpc_pipe_client *cli,
        /* Initialise input parameters */
 
        slprintf(mydcname_slash, sizeof(fstring)-1, "\\\\%s", mydcname);
-       init_net_q_getanydcname(&q, mydcname_slash, domainname);
+       init_net_q_getdcname(&q, mydcname_slash, domainname);
 
        /* Marshall data and send request */
 
-       CLI_DO_RPC_WERR(cli, mem_ctx, PI_NETLOGON, NET_GETANYDCNAME,
+       CLI_DO_RPC(cli, mem_ctx, PI_NETLOGON, NET_GETDCNAME,
                q, r,
                qbuf, rbuf,
-               net_io_q_getanydcname,
-               net_io_r_getanydcname,
-               WERR_GENERAL_FAILURE);
+               net_io_q_getdcname,
+               net_io_r_getdcname,
+               NT_STATUS_UNSUCCESSFUL);
 
        result = r.status;
 
-       if (W_ERROR_IS_OK(result)) {
+       if (NT_STATUS_IS_OK(result)) {
                rpcstr_pull_unistr2_fstring(newdcname, &r.uni_dcname);
        }
 
index 2f215dd938299934607a2c93cdd967ac14b7c5e4..20e4dea23c9df31dedbf6ea7b86a748bc4c37757 100644 (file)
@@ -480,12 +480,12 @@ BOOL net_io_r_logon_ctrl(const char *desc, NET_R_LOGON_CTRL *r_l, prs_struct *ps
 }
 
 /*******************************************************************
- Inits an NET_R_GETDCNAME structure.
+ Inits an NET_R_GETANYDCNAME structure.
 ********************************************************************/
-void init_net_q_getdcname(NET_Q_GETDCNAME *r_t, const char *logon_server,
-                         const char *domainname)
+void init_net_q_getanydcname(NET_Q_GETANYDCNAME *r_t, const char *logon_server,
+                            const char *domainname)
 {
-       DEBUG(5,("init_q_getdcname\n"));
+       DEBUG(5,("init_q_getanydcname\n"));
 
        r_t->ptr_logon_server = (logon_server != NULL);
        init_unistr2(&r_t->uni_logon_server, logon_server, UNI_STR_TERMINATE);
@@ -494,16 +494,16 @@ void init_net_q_getdcname(NET_Q_GETDCNAME *r_t, const char *logon_server,
 }
 
 /*******************************************************************
- Reads or writes an NET_Q_GETDCNAME structure.
+ Reads or writes an NET_Q_GETANYDCNAME structure.
 ********************************************************************/
 
-BOOL net_io_q_getdcname(const char *desc, NET_Q_GETDCNAME *r_t, prs_struct *ps,
-                       int depth)
+BOOL net_io_q_getanydcname(const char *desc, NET_Q_GETANYDCNAME *r_t, prs_struct *ps,
+                          int depth)
 {
        if (r_t == NULL)
                return False;
 
-       prs_debug(ps, depth, desc, "net_io_q_getdcname");
+       prs_debug(ps, depth, desc, "net_io_q_getanydcname");
        depth++;
 
        if (!prs_uint32("ptr_logon_server", ps, depth, &r_t->ptr_logon_server))
@@ -528,26 +528,26 @@ BOOL net_io_q_getdcname(const char *desc, NET_Q_GETDCNAME *r_t, prs_struct *ps,
 
 
 /*******************************************************************
- Inits an NET_R_GETDCNAME structure.
+ Inits an NET_R_GETANYDCNAME structure.
 ********************************************************************/
-void init_net_r_getdcname(NET_R_GETDCNAME *r_t, const char *dcname)
+void init_net_r_getanydcname(NET_R_GETANYDCNAME *r_t, const char *dcname)
 {
-       DEBUG(5,("init_r_getdcname\n"));
+       DEBUG(5,("init_r_getanydcname\n"));
 
        init_unistr2(&r_t->uni_dcname, dcname, UNI_STR_TERMINATE);
 }
 
 /*******************************************************************
- Reads or writes an NET_R_GETDCNAME structure.
+ Reads or writes an NET_R_GETANYDCNAME structure.
 ********************************************************************/
 
-BOOL net_io_r_getdcname(const char *desc, NET_R_GETDCNAME *r_t, prs_struct *ps,
-                       int depth)
+BOOL net_io_r_getanydcname(const char *desc, NET_R_GETANYDCNAME *r_t, prs_struct *ps,
+                          int depth)
 {
        if (r_t == NULL)
                return False;
 
-       prs_debug(ps, depth, desc, "net_io_r_getdcname");
+       prs_debug(ps, depth, desc, "net_io_r_getanydcname");
        depth++;
 
        if (!prs_uint32("ptr_dcname", ps, depth, &r_t->ptr_dcname))
@@ -568,12 +568,12 @@ BOOL net_io_r_getdcname(const char *desc, NET_R_GETDCNAME *r_t, prs_struct *ps,
 
 
 /*******************************************************************
- Inits an NET_R_GETANYDCNAME structure.
+ Inits an NET_R_GETDCNAME structure.
 ********************************************************************/
-void init_net_q_getanydcname(NET_Q_GETANYDCNAME *r_t, const char *logon_server,
-                            const char *domainname)
+void init_net_q_getdcname(NET_Q_GETDCNAME *r_t, const char *logon_server,
+                         const char *domainname)
 {
-       DEBUG(5,("init_q_getanydcname\n"));
+       DEBUG(5,("init_q_getdcname\n"));
 
        init_unistr2(&r_t->uni_logon_server, logon_server, UNI_STR_TERMINATE);
        r_t->ptr_domainname = (domainname != NULL);
@@ -581,16 +581,16 @@ void init_net_q_getanydcname(NET_Q_GETANYDCNAME *r_t, const char *logon_server,
 }
 
 /*******************************************************************
- Reads or writes an NET_Q_GETANYDCNAME structure.
+ Reads or writes an NET_Q_GETDCNAME structure.
 ********************************************************************/
 
-BOOL net_io_q_getanydcname(const char *desc, NET_Q_GETANYDCNAME *r_t, prs_struct *ps,
-                          int depth)
+BOOL net_io_q_getdcname(const char *desc, NET_Q_GETDCNAME *r_t, prs_struct *ps,
+                       int depth)
 {
        if (r_t == NULL)
                return False;
 
-       prs_debug(ps, depth, desc, "net_io_q_getanydcname");
+       prs_debug(ps, depth, desc, "net_io_q_getdcname");
        depth++;
 
        if (!smb_io_unistr2("logon_server", &r_t->uni_logon_server,
@@ -612,26 +612,26 @@ BOOL net_io_q_getanydcname(const char *desc, NET_Q_GETANYDCNAME *r_t, prs_struct
 
 
 /*******************************************************************
- Inits an NET_R_GETANYDCNAME structure.
+ Inits an NET_R_GETDCNAME structure.
 ********************************************************************/
-void init_net_r_getanydcname(NET_R_GETANYDCNAME *r_t, const char *dcname)
+void init_net_r_getdcname(NET_R_GETDCNAME *r_t, const char *dcname)
 {
-       DEBUG(5,("init_r_getanydcname\n"));
+       DEBUG(5,("init_r_getdcname\n"));
 
        init_unistr2(&r_t->uni_dcname, dcname, UNI_STR_TERMINATE);
 }
 
 /*******************************************************************
- Reads or writes an NET_R_GETANYDCNAME structure.
+ Reads or writes an NET_R_GETDCNAME structure.
 ********************************************************************/
 
-BOOL net_io_r_getanydcname(const char *desc, NET_R_GETANYDCNAME *r_t, prs_struct *ps,
-                          int depth)
+BOOL net_io_r_getdcname(const char *desc, NET_R_GETDCNAME *r_t, prs_struct *ps,
+                       int depth)
 {
        if (r_t == NULL)
                return False;
 
-       prs_debug(ps, depth, desc, "net_io_r_getanydcname");
+       prs_debug(ps, depth, desc, "net_io_r_getdcname");
        depth++;
 
        if (!prs_uint32("ptr_dcname", ps, depth, &r_t->ptr_dcname))
@@ -644,7 +644,7 @@ BOOL net_io_r_getanydcname(const char *desc, NET_R_GETANYDCNAME *r_t, prs_struct
        if (!prs_align(ps))
                return False;
 
-       if (!prs_werror("status", ps, depth, &r_t->status))
+       if (!prs_ntstatus("status", ps, depth, &r_t->status))
                return False;
 
        return True;
index 93d47eeb830062bc07e42639cd3b56c4b9470cbf..d78b7fc26e46e556937e528e7f1a217899b6129c 100644 (file)
@@ -45,9 +45,9 @@ static NTSTATUS cmd_netlogon_logon_ctrl2(struct rpc_pipe_client *cli,
        return result;
 }
 
-static WERROR cmd_netlogon_getdcname(struct rpc_pipe_client *cli, 
-                                    TALLOC_CTX *mem_ctx, int argc, 
-                                    const char **argv)
+static WERROR cmd_netlogon_getanydcname(struct rpc_pipe_client *cli, 
+                                       TALLOC_CTX *mem_ctx, int argc, 
+                                       const char **argv)
 {
        fstring dcname;
        WERROR result = WERR_GENERAL_FAILURE;
@@ -61,7 +61,7 @@ static WERROR cmd_netlogon_getdcname(struct rpc_pipe_client *cli,
        /* Make sure to wait for our DC's reply */
        old_timeout = cli_set_timeout(cli->cli, MAX(cli->cli->timeout,30000)); /* 30 seconds. */
 
-       result = rpccli_netlogon_getdcname(cli, mem_ctx, cli->cli->desthost, argv[1], dcname);
+       result = rpccli_netlogon_getanydcname(cli, mem_ctx, cli->cli->desthost, argv[1], dcname);
 
        cli_set_timeout(cli->cli, old_timeout);
 
@@ -76,27 +76,27 @@ static WERROR cmd_netlogon_getdcname(struct rpc_pipe_client *cli,
        return result;
 }
 
-static WERROR cmd_netlogon_getanydcname(struct rpc_pipe_client *cli, 
-                                       TALLOC_CTX *mem_ctx, int argc, 
-                                       const char **argv)
+static NTSTATUS cmd_netlogon_getdcname(struct rpc_pipe_client *cli, 
+                                      TALLOC_CTX *mem_ctx, int argc, 
+                                      const char **argv)
 {
        fstring dcname;
-       WERROR result = WERR_GENERAL_FAILURE;
+       NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
        int old_timeout;
 
        if (argc != 2) {
                fprintf(stderr, "Usage: %s domainname\n", argv[0]);
-               return WERR_OK;
+               return NT_STATUS_OK;
        }
 
        /* Make sure to wait for our DC's reply */
        old_timeout = cli_set_timeout(cli->cli, MAX(cli->cli->timeout,30000)); /* 30 seconds. */
 
-       result = rpccli_netlogon_getanydcname(cli, mem_ctx, cli->cli->desthost, argv[1], dcname);
+       result = rpccli_netlogon_getdcname(cli, mem_ctx, cli->cli->desthost, argv[1], dcname);
 
        cli_set_timeout(cli->cli, old_timeout);
 
-       if (!W_ERROR_IS_OK(result))
+       if (!NT_STATUS_IS_OK(result))
                goto done;
 
        /* Display results */
@@ -579,8 +579,8 @@ struct cmd_set netlogon_commands[] = {
        { "NETLOGON" },
 
        { "logonctrl2", RPC_RTYPE_NTSTATUS, cmd_netlogon_logon_ctrl2, NULL, PI_NETLOGON, NULL, "Logon Control 2",     "" },
-       { "getdcname", RPC_RTYPE_WERROR, NULL, cmd_netlogon_getdcname, PI_NETLOGON, NULL, "Get trusted PDC name",     "" },
        { "getanydcname", RPC_RTYPE_WERROR, NULL, cmd_netlogon_getanydcname, PI_NETLOGON, NULL, "Get trusted DC name",     "" },
+       { "getdcname", RPC_RTYPE_NTSTATUS, cmd_netlogon_getdcname, NULL, PI_NETLOGON, NULL, "Get trusted PDC name",     "" },
        { "dsr_getdcname", RPC_RTYPE_WERROR, NULL, cmd_netlogon_dsr_getdcname, PI_NETLOGON, NULL, "Get trusted DC name",     "" },
        { "dsr_getdcnameex", RPC_RTYPE_WERROR, NULL, cmd_netlogon_dsr_getdcnameex, PI_NETLOGON, NULL, "Get trusted DC name",     "" },
        { "dsr_getdcnameex2", RPC_RTYPE_WERROR, NULL, cmd_netlogon_dsr_getdcnameex2, PI_NETLOGON, NULL, "Get trusted DC name",     "" },