~ubuntu-branches/ubuntu/vivid/samba/vivid

« back to all changes in this revision

Viewing changes to source4/winbind/wb_cmd_list_trustdom.c

  • Committer: Package Import Robot
  • Author(s): Chuck Short
  • Date: 2011-12-21 13:18:04 UTC
  • mfrom: (0.39.21 sid)
  • Revision ID: package-import@ubuntu.com-20111221131804-xtlr39wx6njehxxr
Tags: 2:3.6.1-3ubuntu1
* Merge from Debian testing.  Remaining changes:
  + debian/patches/VERSION.patch:
    - set SAMBA_VERSION_SUFFIX to Ubuntu.
  + debian/patches/error-trans.fix-276472:
    - Add the translation of Unix Error code -ENOTSUP to NT Error Code
    - NT_STATUS_NOT_SUPPORTED to prevent the Permission denied error.
  + debian/smb.conf:
    - add "(Samba, Ubuntu)" to server string.
    - comment out the default [homes] share, and add a comment about
      "valid users = %S" to show users how to restrict access to
      \\server\username to only username.
    - Set 'usershare allow guests', so that usershare admins are 
      allowed to create public shares in addition to authenticated
      ones.
    - add map to guest = Bad user, maps bad username to guest access.
  + debian/samba-common.config:
    - Do not change priority to high if dhclient3 is installed.
    - Use priority medium instead of high for the workgroup question.
  + debian/control:
    - Don't build against or suggest ctdb.
    - Add dependency on samba-common-bin to samba.
  + Add ufw integration:
    - Created debian/samba.ufw.profile
    - debian/rules, debian/samba.dirs, debian/samba.files: install
      profile
    - debian/control: have samba suggest ufw
  + Add apport hook:
    - Created debian/source_samba.py.
    - debian/rules, debian/samba.dirs, debian/samba-common-bin.files: install
  + Switch to upstart:
    - Add debian/samba.{nmbd,smbd}.upstart.
  + debian/samba.logrotate, debian/samba-common.dhcp, debian/samba.if-up:
    - Make them upstart compatible
  + debian/samba.postinst: 
    - Avoid scary pdbedit warnings on first import.
  + debian/samba-common.postinst: Add more informative error message for
    the case where smb.conf was manually deleted
  + debian/patches/fix-debuglevel-name-conflict.patch: don't use 'debug_level'
    as a global variable name in an NSS module 
  + Dropped:
    - debian/patches/error-trans.fix-276472
    - debian/patches/fix-debuglevel-name-conflict.patch

Show diffs side-by-side

added added

removed removed

Lines of Context:
33
33
        struct composite_context *ctx;
34
34
        struct dcerpc_pipe *lsa_pipe;
35
35
        struct policy_handle *lsa_policy;
36
 
        int num_domains;
 
36
        uint32_t num_domains;
37
37
        struct wb_dom_info **domains;
38
38
 
39
39
        uint32_t resume_handle;
43
43
 
44
44
static void cmd_list_trustdoms_recv_domain(struct composite_context *ctx);
45
45
static void cmd_list_trustdoms_recv_lsa(struct composite_context *ctx);
46
 
static void cmd_list_trustdoms_recv_doms(struct rpc_request *req);
 
46
static void cmd_list_trustdoms_recv_doms(struct tevent_req *subreq);
47
47
 
48
48
struct composite_context *wb_cmd_list_trustdoms_send(TALLOC_CTX *mem_ctx,
49
49
                                                     struct wbsrv_service *service)
94
94
        struct cmd_list_trustdom_state *state =
95
95
                talloc_get_type(ctx->async.private_data,
96
96
                                struct cmd_list_trustdom_state);
97
 
        struct rpc_request *req;
 
97
        struct tevent_req *subreq;
98
98
 
99
99
        state->ctx->status = wb_init_lsa_recv(ctx, state,
100
100
                                              &state->lsa_pipe,
114
114
        state->r.out.resume_handle = &state->resume_handle;
115
115
        state->r.out.domains = &state->domainlist;
116
116
 
117
 
        req = dcerpc_lsa_EnumTrustDom_send(state->lsa_pipe, state, &state->r);
118
 
        composite_continue_rpc(state->ctx, req, cmd_list_trustdoms_recv_doms,
119
 
                               state);
 
117
        subreq = dcerpc_lsa_EnumTrustDom_r_send(state,
 
118
                                                state->ctx->event_ctx,
 
119
                                                state->lsa_pipe->binding_handle,
 
120
                                                &state->r);
 
121
        if (composite_nomem(subreq, state->ctx)) return;
 
122
        tevent_req_set_callback(subreq, cmd_list_trustdoms_recv_doms, state);
120
123
}
121
124
 
122
 
static void cmd_list_trustdoms_recv_doms(struct rpc_request *req)
 
125
static void cmd_list_trustdoms_recv_doms(struct tevent_req *subreq)
123
126
{
124
127
        struct cmd_list_trustdom_state *state =
125
 
                talloc_get_type(req->async.private_data,
126
 
                                struct cmd_list_trustdom_state);
127
 
        int i, old_num_domains;
 
128
                tevent_req_callback_data(subreq,
 
129
                struct cmd_list_trustdom_state);
 
130
        uint32_t i, old_num_domains;
128
131
 
129
 
        state->ctx->status = dcerpc_ndr_request_recv(req);
 
132
        state->ctx->status = dcerpc_lsa_EnumTrustDom_r_recv(subreq, state);
 
133
        TALLOC_FREE(subreq);
130
134
        if (!composite_is_ok(state->ctx)) return;
131
135
        state->ctx->status = state->r.out.result;
132
136
 
147
151
            composite_nomem(state->domains, state->ctx)) return;
148
152
 
149
153
        for (i=0; i<state->r.out.domains->count; i++) {
150
 
                int j = i+old_num_domains;
 
154
                uint32_t j = i+old_num_domains;
151
155
                state->domains[j] = talloc(state->domains,
152
156
                                           struct wb_dom_info);
153
157
                if (composite_nomem(state->domains[i], state->ctx)) return;
173
177
        state->r.out.resume_handle = &state->resume_handle;
174
178
        state->r.out.domains = &state->domainlist;
175
179
        
176
 
        req = dcerpc_lsa_EnumTrustDom_send(state->lsa_pipe, state, &state->r);
177
 
        composite_continue_rpc(state->ctx, req, cmd_list_trustdoms_recv_doms,
178
 
                               state);
 
180
        subreq = dcerpc_lsa_EnumTrustDom_r_send(state,
 
181
                                                state->ctx->event_ctx,
 
182
                                                state->lsa_pipe->binding_handle,
 
183
                                                &state->r);
 
184
        if (composite_nomem(subreq, state->ctx)) return;
 
185
        tevent_req_set_callback(subreq, cmd_list_trustdoms_recv_doms, state);
179
186
}
180
187
 
181
188
NTSTATUS wb_cmd_list_trustdoms_recv(struct composite_context *ctx,
182
189
                                    TALLOC_CTX *mem_ctx,
183
 
                                    int *num_domains,
 
190
                                    uint32_t *num_domains,
184
191
                                    struct wb_dom_info ***domains)
185
192
{
186
193
        NTSTATUS status = composite_wait(ctx);