winbindd: simplify an if condition in winbindd_dual_pam_auth
[samba.git] / source4 / rpc_server / dcesrv_mgmt.c
index 1656050b59ec531366b3cc834cf4eb9afa4c05e1..ecb90d8848e8179e63248370cca7e7ba4244760f 100644 (file)
@@ -7,7 +7,7 @@
    
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
    
    This program is distributed in the hope that it will be useful,
    GNU General Public License for more details.
    
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 #include "includes.h"
 #include "rpc_server/dcerpc_server.h"
+#include "rpc_server/dcerpc_server_proto.h"
 #include "librpc/gen_ndr/ndr_mgmt.h"
-#include "rpc_server/common/common.h"
+
+#define DCESRV_INTERFACE_MGMT_BIND(call, iface) \
+       dcesrv_interface_mgmt_bind(call, iface)
+/*
+ * This #define allows the mgmt interface to accept invalid
+ * association groups, because association groups are to coordinate
+ * handles, and handles are not used in mgmt. This in turn avoids
+ * the need to coordinate these across multiple possible NETLOGON
+ * processes, as an mgmt interface is added to each
+ */
+
+#define DCESRV_INTERFACE_MGMT_FLAGS DCESRV_INTERFACE_FLAGS_HANDLES_NOT_USED
+
+static NTSTATUS dcesrv_interface_mgmt_bind(struct dcesrv_call_state *dce_call,
+                                            const struct dcesrv_interface *iface)
+{
+       return dcesrv_interface_bind_allow_connect(dce_call, iface);
+}
 
 /* 
   mgmt_inq_if_ids 
 */
-static WERROR mgmt_inq_if_ids(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
+static WERROR dcesrv_mgmt_inq_if_ids(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
                       struct mgmt_inq_if_ids *r)
 {
        const struct dcesrv_endpoint *ep = dce_call->conn->endpoint;
@@ -40,7 +57,7 @@ static WERROR mgmt_inq_if_ids(struct dcesrv_call_state *dce_call, TALLOC_CTX *me
        vector->if_id = NULL;
        for (l = ep->interface_list; l; l = l->next) {
                vector->count++;
-               vector->if_id = talloc_realloc(mem_ctx, vector->if_id, struct dcerpc_syntax_id_p, vector->count);
+               vector->if_id = talloc_realloc(mem_ctx, vector->if_id, struct ndr_syntax_id_p, vector->count);
                vector->if_id[vector->count-1].id = &l->iface.syntax_id;
        }
        return WERR_OK;
@@ -50,7 +67,7 @@ static WERROR mgmt_inq_if_ids(struct dcesrv_call_state *dce_call, TALLOC_CTX *me
 /* 
   mgmt_inq_stats 
 */
-static WERROR mgmt_inq_stats(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
+static WERROR dcesrv_mgmt_inq_stats(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
                       struct mgmt_inq_stats *r)
 {
        if (r->in.max_count != MGMT_STATS_ARRAY_MAX_SIZE)
@@ -71,7 +88,7 @@ static WERROR mgmt_inq_stats(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem
 /* 
   mgmt_is_server_listening 
 */
-static uint32_t mgmt_is_server_listening(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
+static uint32_t dcesrv_mgmt_is_server_listening(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
                       struct mgmt_is_server_listening *r)
 {
        *r->out.status = 0;
@@ -82,7 +99,7 @@ static uint32_t mgmt_is_server_listening(struct dcesrv_call_state *dce_call, TAL
 /* 
   mgmt_stop_server_listening 
 */
-static WERROR mgmt_stop_server_listening(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
+static WERROR dcesrv_mgmt_stop_server_listening(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
                       struct mgmt_stop_server_listening *r)
 {
        return WERR_ACCESS_DENIED;
@@ -92,7 +109,7 @@ static WERROR mgmt_stop_server_listening(struct dcesrv_call_state *dce_call, TAL
 /* 
   mgmt_inq_princ_name 
 */
-static WERROR mgmt_inq_princ_name(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
+static WERROR dcesrv_mgmt_inq_princ_name(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
                       struct mgmt_inq_princ_name *r)
 {
        DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
@@ -101,3 +118,8 @@ static WERROR mgmt_inq_princ_name(struct dcesrv_call_state *dce_call, TALLOC_CTX
 
 /* include the generated boilerplate */
 #include "librpc/gen_ndr/ndr_mgmt_s.c"
+
+const struct dcesrv_interface dcesrv_get_mgmt_interface(void)
+{
+       return dcesrv_mgmt_interface;
+}