------------------------------------------------------------
revno: 11212
revision-id: [EMAIL PROTECTED]
parent: [EMAIL PROTECTED]
committer: Jelmer Vernooij <[EMAIL PROTECTED]>
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:[EMAIL PROTECTED]
modified:
  .bzrignore                     svn-v2:[EMAIL PROTECTED]
  source/librpc/idl/mgmt.idl     svn-v2:[EMAIL PROTECTED]
  source/rpc_server/dcesrv_mgmt.c svn-v2:[EMAIL PROTECTED]
  source/torture/rpc/mgmt.c      svn-v2:[EMAIL PROTECTED]
=== 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",

Reply via email to