Rev 11212: Implement inq_if_ids. in file:///home/jelmer/bzr.samba/4.0-mgmt/

Jelmer Vernooij jelmer at samba.org
Tue Jan 16 13:26:40 GMT 2007


------------------------------------------------------------
revno: 11212
revision-id: jelmer at samba.org-20070116132625-20m48ecr6l8ekg48
parent: jelmer at samba.org-20070116125247-4edqesi7i19sqhhn
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: 4.0-mgmt
timestamp: Tue 2007-01-16 14:26:25 +0100
message:
  Implement inq_if_ids.
removed:
  source/rpc_server/mgmt/        svn-v2:20785 at 0c0555d6-39d7-0310-84fc-f1cc0bd64818-branches%2fSAMBA_4_0-source%2frpc_server%2fmgmt
modified:
  .bzrignore                     svn-v2:17811 at 0c0555d6-39d7-0310-84fc-f1cc0bd64818-branches%2fSAMBA_4_0-.bzrignore
  source/librpc/idl/mgmt.idl     svn-v2:6 at 0c0555d6-39d7-0310-84fc-f1cc0bd64818-branches%2fSAMBA_4_0-source%2flibrpc%2fidl%2fmgmt.idl
  source/rpc_server/dcesrv_mgmt.c svn-v2:20785 at 0c0555d6-39d7-0310-84fc-f1cc0bd64818-branches%2fSAMBA_4_0-source%2frpc_server%2fmgmt%2fdcesrv_mgmt.c
  source/torture/rpc/mgmt.c      svn-v2:6 at 0c0555d6-39d7-0310-84fc-f1cc0bd64818-branches%2fSAMBA_4_0-source%2ftorture%2frpc%2fmgmt.c
=== removed directory 'source/rpc_server/mgmt'
=== modified file '.bzrignore'
--- a/.bzrignore	2007-01-16 11:28:41 +0000
+++ b/.bzrignore	2007-01-16 13:26:25 +0000
@@ -150,3 +150,8 @@
 source/heimdal/lib/roken/err.h
 source/scripting/ejs/ejsnet/proto.h
 source/heimdal/lib/hx509/asn1_*.c
+bin/shared
+bin/shared/*.so.*
+source/bin/shared
+source/bin/shared/*.so*
+source/st

=== modified file 'source/librpc/idl/mgmt.idl'
--- a/source/librpc/idl/mgmt.idl	2007-01-16 12:52:47 +0000
+++ b/source/librpc/idl/mgmt.idl	2007-01-16 13:26:25 +0000
@@ -23,7 +23,7 @@
 	/***********************/
 	/* Function 0x00       */
 	WERROR mgmt_inq_if_ids (
-		[out,unique]       rpc_if_id_vector_t      *if_id_vector
+		[out]       rpc_if_id_vector_t      **if_id_vector
 		);
 
 

=== modified file 'source/rpc_server/dcesrv_mgmt.c'
--- a/source/rpc_server/dcesrv_mgmt.c	2007-01-16 12:52:47 +0000
+++ b/source/rpc_server/dcesrv_mgmt.c	2007-01-16 13:26:25 +0000
@@ -31,7 +31,19 @@
 static WERROR mgmt_inq_if_ids(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
 		       struct mgmt_inq_if_ids *r)
 {
-	DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
+	const struct dcesrv_endpoint *ep = dce_call->conn->endpoint;
+	struct dcesrv_if_list *l;
+	struct rpc_if_id_vector_t *vector;
+
+	vector = *r->out.if_id_vector = talloc(mem_ctx, struct rpc_if_id_vector_t);
+	vector->count = 0;
+	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[vector->count-1].id = &l->iface.syntax_id;
+	}
+	return WERR_OK;
 }
 
 
@@ -62,7 +74,7 @@
 static WERROR mgmt_stop_server_listening(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
 		       struct mgmt_stop_server_listening *r)
 {
-	DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
+	return WERR_ACCESS_DENIED;
 }
 
 

=== modified file 'source/torture/rpc/mgmt.c'
--- a/source/torture/rpc/mgmt.c	2007-01-16 12:52:47 +0000
+++ b/source/torture/rpc/mgmt.c	2007-01-16 13:26:25 +0000
@@ -30,12 +30,15 @@
 /*
   ask the server what interface IDs are available on this endpoint
 */
-static BOOL test_inq_if_ids(struct dcerpc_pipe *p, 
-			    TALLOC_CTX *mem_ctx)
+static BOOL test_inq_if_ids(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx)
 {
 	NTSTATUS status;
 	struct mgmt_inq_if_ids r;
+	struct rpc_if_id_vector_t *vector;
 	int i;
+
+	vector = talloc(mem_ctx, struct rpc_if_id_vector_t);
+	r.out.if_id_vector = &vector;
 	
 	status = dcerpc_mgmt_inq_if_ids(p, mem_ctx, &r);
 	if (!NT_STATUS_IS_OK(status)) {
@@ -48,13 +51,13 @@
 		return False;
 	}
 
-	if (!r.out.if_id_vector) {
+	if (!vector) {
 		printf("inq_if_ids gave NULL if_id_vector\n");
 		return False;
 	}
 
-	for (i=0;i<r.out.if_id_vector->count;i++) {
-		struct dcerpc_syntax_id *id = r.out.if_id_vector->if_id[i].id;
+	for (i=0;i<vector->count;i++) {
+		struct dcerpc_syntax_id *id = vector->if_id[i].id;
 		if (!id) continue;
 
 		printf("\tuuid %s  version 0x%08x  '%s'\n",



More information about the samba-cvs mailing list