extern const struct ndr_syntax_id ndr_transfer_syntax;
extern const struct ndr_syntax_id ndr64_transfer_syntax;
+struct ndr_interface_call {
+ const char *name;
+ size_t struct_size;
+ ndr_push_flags_fn_t ndr_push;
+ ndr_pull_flags_fn_t ndr_pull;
+ ndr_print_function_t ndr_print;
+ BOOL async;
+};
+
/* FIXME: Use represent_as instead */
struct dom_sid;
NTSTATUS ndr_push_dom_sid2(struct ndr_push *ndr, int ndr_flags, const struct dom_sid *sid);
TALLOC_CTX *mem_ctx,
void *r)
{
- const struct dcerpc_interface_call *call;
+ const struct ndr_interface_call *call;
struct ndr_push *push;
NTSTATUS status;
DATA_BLOB request;
void *r = req->ndr.struct_ptr;
uint32_t opnum = req->ndr.opnum;
const struct dcerpc_interface_table *table = req->ndr.table;
- const struct dcerpc_interface_call *call = &table->calls[opnum];
+ const struct ndr_interface_call *call = &table->calls[opnum];
/* make sure the recv code doesn't free the request, as we
need to grab the flags element before it is freed */
/* this triggers the DCERPC_PFC_FLAG_CONC_MPX flag in the bind request */
#define DCERPC_CONCURRENT_MULTIPLEX (1<<19)
-/*
- this is used to find pointers to calls
-*/
-struct dcerpc_interface_call {
- const char *name;
- size_t struct_size;
- ndr_push_flags_fn_t ndr_push;
- ndr_pull_flags_fn_t ndr_pull;
- ndr_print_function_t ndr_print;
- BOOL async;
-};
-
struct dcerpc_endpoint_list {
uint32_t count;
const char * const *names;
struct ndr_syntax_id syntax_id;
const char *helpstring;
uint32_t num_calls;
- const struct dcerpc_interface_call *calls;
+ const struct ndr_interface_call *calls;
const struct dcerpc_endpoint_list *endpoints;
const struct dcerpc_authservice_list *authservices;
};
/*
find a dcerpc call on an interface by name
*/
-const struct dcerpc_interface_call *dcerpc_iface_find_call(const struct dcerpc_interface_table *iface,
- const char *name)
+const struct ndr_interface_call *dcerpc_iface_find_call(const struct dcerpc_interface_table *iface,
+ const char *name)
{
int i;
for (i=0;i<iface->num_calls;i++) {
#include "librpc/rpc/dcerpc_table.h"
#endif
-static const struct dcerpc_interface_call *find_function(
+static const struct ndr_interface_call *find_function(
const struct dcerpc_interface_table *p,
const char *function)
{
int main(int argc, const char *argv[])
{
const struct dcerpc_interface_table *p = NULL;
- const struct dcerpc_interface_call *f;
+ const struct ndr_interface_call *f;
const char *pipe_name, *function, *inout, *filename;
uint8_t *data;
size_t size;
return if ($#{$interface->{FUNCTIONS}}+1 == 0);
return unless defined ($interface->{PROPERTIES}->{uuid});
- $self->pidl("static const struct dcerpc_interface_call $interface->{NAME}\_calls[] = {");
+ $self->pidl("static const struct ndr_interface_call $interface->{NAME}\_calls[] = {");
foreach my $d (@{$interface->{FUNCTIONS}}) {
next if not defined($d->{OPNUM});
$self->pidl("\t{");
struct dcesrv_remote_private *private = dce_call->context->private;
uint16_t opnum = dce_call->pkt.u.request.opnum;
const struct dcerpc_interface_table *table = dce_call->context->iface->private;
- const struct dcerpc_interface_call *call;
+ const struct ndr_interface_call *call;
const char *name;
name = table->calls[opnum].name;
NTSTATUS status;
void *ptr;
struct ejs_rpc *ejs;
- const struct dcerpc_interface_call *call;
+ const struct ndr_interface_call *call;
struct ejs_irpc_connection *p;
struct irpc_request **reqs;
int i, count;
void *ptr;
struct rpc_request *req;
struct ejs_rpc *ejs;
- const struct dcerpc_interface_call *call;
+ const struct ndr_interface_call *call;
if (argc != 1 || argv[0]->type != MPR_TYPE_OBJECT) {
ejsSetErrorMsg(eid, "rpc_call invalid arguments");