Ignore:
Timestamp:
Nov 27, 2012, 4:43:17 PM (13 years ago)
Author:
Silvan Scherrer
Message:

Samba Server: updated trunk to 3.6.0

Location:
trunk/server
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/server

  • trunk/server/source3/rpcclient/cmd_epmapper.c

    r414 r745  
    2121#include "includes.h"
    2222#include "rpcclient.h"
    23 #include "../librpc/gen_ndr/cli_epmapper.h"
     23#include "../librpc/gen_ndr/ndr_epmapper_c.h"
     24#include "../librpc/gen_ndr/ndr_lsa.h"
    2425
    2526static NTSTATUS cmd_epmapper_map(struct rpc_pipe_client *p,
     
    2728                                 int argc, const char **argv)
    2829{
     30        struct dcerpc_binding_handle *b = p->binding_handle;
    2931        struct dcerpc_binding map_binding;
    3032        struct epm_twr_t map_tower;
    31         struct epm_twr_t res_tower;
    32         struct epm_twr_p_t towers;
     33        struct epm_twr_p_t towers[500];
    3334        struct policy_handle entry_handle;
    3435        struct ndr_syntax_id abstract_syntax;
     
    3637        TALLOC_CTX *tmp_ctx = talloc_stackframe();
    3738        NTSTATUS status;
     39        uint32_t result;
     40        uint32_t i;
    3841
    3942        abstract_syntax = ndr_table_lsarpc.syntax_id;
     
    5255        }
    5356
    54         towers.twr = &res_tower;
     57        ZERO_STRUCT(towers);
     58        ZERO_STRUCT(entry_handle);
    5559
    56         ZERO_STRUCT(entry_handle);
    57         status = rpccli_epm_Map(
    58                 p, tmp_ctx, &abstract_syntax.uuid,
    59                 &map_tower, &entry_handle, 1,
    60                 &num_towers, &towers);
     60        status = dcerpc_epm_Map(
     61                b, tmp_ctx, &abstract_syntax.uuid,
     62                &map_tower, &entry_handle, ARRAY_SIZE(towers),
     63                &num_towers, towers, &result);
     64        if (!NT_STATUS_IS_OK(status)) {
     65                d_fprintf(stderr, "dcerpc_epm_Map returned %s\n",
     66                          nt_errstr(status));
     67                return status;
     68        }
    6169
    62         return status;
     70        if (result != EPMAPPER_STATUS_OK) {
     71                d_fprintf(stderr, "epm_Map returned %u (0x%08X)\n",
     72                          result, result);
     73                return NT_STATUS_UNSUCCESSFUL;
     74        }
     75
     76        d_printf("num_tower[%u]\n", num_towers);
     77
     78        for (i=0; i < num_towers; i++) {
     79                struct dcerpc_binding *binding;
     80
     81                if (towers[i].twr == NULL) {
     82                        d_fprintf(stderr, "tower[%u] NULL\n", i);
     83                        break;
     84                }
     85
     86                status = dcerpc_binding_from_tower(tmp_ctx, &towers[i].twr->tower,
     87                                                   &binding);
     88                if (!NT_STATUS_IS_OK(status)) {
     89                        break;
     90                }
     91
     92                d_printf("tower[%u] %s\n", i, dcerpc_binding_string(tmp_ctx, binding));
     93        }
     94
     95        return NT_STATUS_OK;
    6396}
    6497
     
    67100                                    int argc, const char **argv)
    68101{
     102        struct dcerpc_binding_handle *b = p->binding_handle;
    69103        struct policy_handle entry_handle;
    70104
     
    78112                char *guid_string;
    79113                struct dcerpc_binding *binding;
     114                uint32_t result;
    80115
    81                 status = rpccli_epm_Lookup(p, tmp_ctx,
     116                status = dcerpc_epm_Lookup(b, tmp_ctx,
    82117                                   0, /* rpc_c_ep_all */
    83118                                   NULL,
     
    86121                                   &entry_handle,
    87122                                   1, /* max_ents */
    88                                    &num_entries, &entry);
     123                                   &num_entries, &entry,
     124                                   &result);
    89125                if (!NT_STATUS_IS_OK(status)) {
    90                         d_fprintf(stderr, "rpccli_epm_Lookup returned %s\n",
     126                        d_fprintf(stderr, "dcerpc_epm_Lookup returned %s\n",
    91127                                  nt_errstr(status));
    92128                        break;
    93129                }
    94130
     131                if (result == EPMAPPER_STATUS_NO_MORE_ENTRIES) {
     132                        d_fprintf(stderr, "epm_Lookup no more entries\n");
     133                        break;
     134                }
     135
     136                if (result != EPMAPPER_STATUS_OK) {
     137                        d_fprintf(stderr, "epm_Lookup returned %u (0x%08X)\n",
     138                                  result, result);
     139                        break;
     140                }
     141
    95142                if (num_entries != 1) {
    96                         d_fprintf(stderr, "rpccli_epm_Lookup returned %d "
     143                        d_fprintf(stderr, "epm_Lookup returned %d "
    97144                                  "entries, expected one\n", (int)num_entries);
    98145                        break;
Note: See TracChangeset for help on using the changeset viewer.