if (!NT_STATUS_IS_OK(ntresult)) {
printf("result was %s\n", nt_errstr(ntresult));
}
+ } else if (cmd_entry->returntype == RPC_RTYPE_BINDING) {
+ ntresult = cmd_entry->bfn(binding, mem_ctx, argc, argv);
+ if (!NT_STATUS_IS_OK(ntresult)) {
+ printf("result was %s\n", nt_errstr(ntresult));
+ }
} else {
wresult = cmd_entry->wfn(cmd_entry->rpc_pipe, mem_ctx, argc, argv);
/* print out the DOS error */
if (((set->returntype == RPC_RTYPE_NTSTATUS) &&
(set->ntfn == NULL)) ||
((set->returntype == RPC_RTYPE_WERROR) &&
- (set->wfn == NULL))) {
+ (set->wfn == NULL)) ||
+ ((set->returntype == RPC_RTYPE_BINDING) &&
+ (set->bfn == NULL))) {
fprintf (stderr, "Invalid command\n");
goto out_free;
}
typedef enum {
RPC_RTYPE_NTSTATUS = 0,
RPC_RTYPE_WERROR,
+ RPC_RTYPE_BINDING,
MAX_RPC_RETURN_TYPE
} RPC_RETURN_TYPE;
NTSTATUS (*ntfn)(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc,
const char **argv);
WERROR (*wfn)(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv);
+ NTSTATUS (*bfn)(struct dcerpc_binding *binding,
+ TALLOC_CTX *mem_ctx,
+ int argc,
+ const char **argv);
const struct ndr_interface_table *table;
struct rpc_pipe_client *rpc_pipe;
const char *description;