msrpc daemon / pid.vuid

Nicolas Williams Nicolas.Williams at
Fri Feb 4 19:30:04 GMT 2000

On Sat, Feb 05, 2000 at 06:18:35AM +1100, Luke Kenneth Casson Leighton wrote:
> > No. I mean encapsulate *every* DCE/RPC packet forwarded to an MSRPC
> > daemon by smbd with PID/VUID information. I.e., send the PID, send the
> > VUID, send the DCE/RPC packet.
> i went to a lot of trouble to remove the dependence between dce/rpc and
> smbd.

The idea is not to insert PID/VUID information as extra NDR-encoded
DCE/RPC arguments! The idea is to encapsulate, i.e., add a packet
"frame" for the SMBD<->MSRPC protocol; these packet frames are terribly
simple: they contain three fields: SMBD PID, VUID, DCE/RPC NDR data (I
would include a length field, but you say that the MSRPC daemons should
get that from the DCE/RPC data; I don't like that, but hey, what do I
know: you're the DCE/RPC expert, not I).

> i used to have a "NetBIOS-like" interface which encapsulated a DCE/RPC
> packet in a NetBIOS length+char* format (i used send_smb() basically!)
> that original implementation is starting to have merits.  it allows the
> simulation of "threads".
> HEY!  *bing* OF COURSE!  dammit, dce/rpc already _is_ sutable to threaded
> environments!

Luke, this is the second time we've done this, over the same exact idea.


Probably what happened is that you forgot and this whole
forking-one-msrpc-daemon-per-vuid hit you in the middle of the night
when you must have been too tired to see that it was not an issue.

Ah. The dangers of coding late at night.

> YESS, nico, you're a genius.  COOL, it's even 16 bit!  see context_id,
> below:

Genius? Nah. And I have no idea what the stuff below is.

> /* RPC_HDR_REQ - ms request rpc header */
> typedef struct rpc_hdr_req_info
> {
>   uint32 alloc_hint;   /* allocation hint - data size (bytes) minus header and tail. */
>   uint16 context_id;   /* 0 - presentation context identifier */
>   uint16  opnum;        /* opnum */
> /* RPC_HDR_RESP - ms response rpc header */
> typedef struct rpc_hdr_resp_info
> {
>   uint32 alloc_hint;   /* allocation hint - data size (bytes) minus header and tail. */
>   uint16 context_id;   /* 0 - presentation context identifier */
>   uint8  cancel_count; /* 0 - cancel count */
>   uint8  reserved;     /* 0 - reserved. */

-DISCLAIMER: an automatically appended disclaimer may follow. By posting-
-to a public e-mail mailing list I hereby grant permission to distribute-
-and copy this message.-

This message contains confidential information and is intended only 
for the individual named.  If you are not the named addressee you 
should not disseminate, distribute or copy this e-mail.  Please 
notify the sender immediately by e-mail if you have received this 
e-mail by mistake and delete this e-mail from your system.

E-mail transmission cannot be guaranteed to be secure or error-free 
as information could be intercepted, corrupted, lost, destroyed, 
arrive late or incomplete, or contain viruses.  The sender therefore 
does not accept liability for any errors or omissions in the contents 
of this message which arise as a result of e-mail transmission.  If 
verification is required please request a hard-copy version.  This 
message is provided for informational purposes and should not be 
construed as a solicitation or offer to buy or sell any securities or 
related financial instruments.

More information about the samba-technical mailing list