#include "includes.h"
#include "libcli/raw/libcliraw.h"
#include "libcli/composite/composite.h"
+#include "libcli/composite/monitor.h"
#include "librpc/gen_ndr/ndr_samr.h"
#include "libnet/composite.h"
{
struct composite_context *c = req->async.private;
struct useradd_state *s = talloc_get_type(c->private, struct useradd_state);
+ struct monitor_msg msg;
switch (s->stage) {
case USERADD_CREATE:
c->status = useradd_create(c, s);
+ msg.type = rpc_create_user;
+ msg.data.rpc_create_user.rid = *s->createuser.out.rid;
break;
}
c->state = SMBCLI_REQUEST_ERROR;
}
+ if (c->monitor_fn) {
+ c->monitor_fn(&msg);
+ }
+
if (c->state >= SMBCLI_REQUEST_DONE &&
c->async.fn) {
c->async.fn(c);
*/
struct composite_context *rpc_composite_useradd_send(struct dcerpc_pipe *p,
- struct rpc_composite_useradd *io)
+ struct rpc_composite_useradd *io,
+ void (*monitor)(struct monitor_msg*))
{
struct composite_context *c;
struct useradd_state *s;
s->domain_handle = io->in.domain_handle;
s->pipe = p;
- c->state = SMBCLI_REQUEST_SEND;
- c->private = s;
- c->event_ctx = dcerpc_event_context(p);
+ c->state = SMBCLI_REQUEST_SEND;
+ c->private = s;
+ c->event_ctx = dcerpc_event_context(p);
+ c->monitor_fn = monitor;
/* preparing parameters to send rpc request */
s->createuser.in.domain_handle = &io->in.domain_handle;
TALLOC_CTX *mem_ctx,
struct rpc_composite_useradd *io)
{
- struct composite_context *c = rpc_composite_useradd_send(pipe, io);
+ struct composite_context *c = rpc_composite_useradd_send(pipe, io, NULL);
return rpc_composite_useradd_recv(c, mem_ctx, io);
}