summaryrefslogtreecommitdiff
path: root/source4/librpc/rpc/dcerpc.c
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2004-11-07 21:30:59 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:05:38 -0500
commitf2d715cd858833e87a57d99ff6716e6af045558a (patch)
tree945dbd40775a42fb50bea2a1a15f26cc76c2c033 /source4/librpc/rpc/dcerpc.c
parentadd049380ea964a430c60e668e4dffd7ed81156e (diff)
downloadsamba-f2d715cd858833e87a57d99ff6716e6af045558a.tar.gz
samba-f2d715cd858833e87a57d99ff6716e6af045558a.tar.bz2
samba-f2d715cd858833e87a57d99ff6716e6af045558a.zip
r3606: More DCOM fixes:
- OXID tables work now. IOXIDResolver is used if there is used for getting a STRINGBINDING if none is known yet - Add custom dissectors for STRINGARRAY and DUALSTRINGARRAY. If there's a way to get rid of these later on (by supporting them thru pidl somehow), I'd be happy to use that instead of doing it manually. I can now get to the point where we have created an object and are connected to it. The only thing left to do is being able to set the Object UUID properly.. (This used to be commit 54e1e5edca50d3cd496c080715e84ec62cb2a10c)
Diffstat (limited to 'source4/librpc/rpc/dcerpc.c')
-rw-r--r--source4/librpc/rpc/dcerpc.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/source4/librpc/rpc/dcerpc.c b/source4/librpc/rpc/dcerpc.c
index beccac78ca..dcbbe3ac7d 100644
--- a/source4/librpc/rpc/dcerpc.c
+++ b/source4/librpc/rpc/dcerpc.c
@@ -879,13 +879,14 @@ struct rpc_request *dcerpc_request_send(struct dcerpc_pipe *p,
pkt.ptype = DCERPC_PKT_REQUEST;
pkt.call_id = req->call_id;
pkt.auth_length = 0;
+ pkt.pfc_flags = 0;
pkt.u.request.alloc_hint = remaining;
pkt.u.request.context_id = 0;
pkt.u.request.opnum = opnum;
if (object) {
pkt.object.object = *object;
pkt.pfc_flags |= DCERPC_PFC_FLAG_ORPC;
- /* FIXME: pfc_cflags is reset below! */
+ printf("OBJECT: %s\n", GUID_string(NULL, object));
}
DLIST_ADD(p->pending, req);
@@ -896,7 +897,7 @@ struct rpc_request *dcerpc_request_send(struct dcerpc_pipe *p,
BOOL last_frag = False;
first_packet = False;
- pkt.pfc_flags = 0;
+ pkt.pfc_flags &= ~(DCERPC_PFC_FLAG_FIRST |DCERPC_PFC_FLAG_LAST);
if (remaining == stub_data->length) {
pkt.pfc_flags |= DCERPC_PFC_FLAG_FIRST;
@@ -974,7 +975,7 @@ NTSTATUS dcerpc_request_recv(struct rpc_request *req,
perform a full request/response pair on a dcerpc pipe
*/
NTSTATUS dcerpc_request(struct dcerpc_pipe *p,
- struct OBJREF *object,
+ struct GUID *object,
uint16_t opnum,
TALLOC_CTX *mem_ctx,
DATA_BLOB *stub_data_in,
@@ -1141,7 +1142,7 @@ static NTSTATUS dcerpc_ndr_validate_out(struct dcerpc_pipe *p,
call dcerpc_ndr_request_recv() to receive the answer
*/
struct rpc_request *dcerpc_ndr_request_send(struct dcerpc_pipe *p,
- struct OBJREF *object,
+ struct GUID *object,
uint32_t opnum,
TALLOC_CTX *mem_ctx,
NTSTATUS (*ndr_push)(struct ndr_push *, int, void *),
@@ -1278,7 +1279,7 @@ NTSTATUS dcerpc_ndr_request_recv(struct rpc_request *req)
standard format
*/
NTSTATUS dcerpc_ndr_request(struct dcerpc_pipe *p,
- struct OBJREF *object,
+ struct GUID *object,
uint32_t opnum,
TALLOC_CTX *mem_ctx,
NTSTATUS (*ndr_push)(struct ndr_push *, int, void *),