dce/rpc "client" api

Luke Kenneth Casson Leighton lkcl at samba.org
Sat Aug 19 10:58:57 GMT 2000

> > then, the callers of cli_connect.c do not need to 
> > _worry_ about PDU reassembly.  otherwise, you end up 
> > in a right mess.
> Please explain.  You're already having to assemble the 
> PDU to pass to the cli_connect routines.

there are potentially two levels of PDU assembly.

level 1)

take the DCE/RPC function-arguments, marshall them into a contiguous data
stream which may be larger than 0x1630-0x10 bytes, and split them down
into 0x1630-0x10 byte segments, add a 0x10 byte header at the front and
call each one a PDU (protocol data unit).

send them.  receive them.

strip out the headers.  concatenate the data.  you have the
modified-DCE/RPC function arguments.  unmarshall them.

level 2)

take each PDU (of which there may be several).  take any transport, and
use it to send each [independent PDU].  the transport *MAY*, at its own
discretion, fragment the PDU.  the transport *MUST* reassemble any
arbitrary fragments back into a contiguous stream.

different reassembly rules, which i split with cli_connect.c.
cli_connect.c handles individual PDUs.

More information about the samba-technical mailing list