data_len = PTR_DIFF(p, data);
/* create the request RPC_HDR */
- make_rpc_hdr(&hdr, RPC_BIND, call_id, PTR_DIFF(p, data + 0x10));
+ make_rpc_hdr(&hdr, RPC_BIND, 0x0, call_id, PTR_DIFF(p, data + 0x10));
/* stream the header into data */
p = smb_io_rpc_hdr(False, &hdr, data, data, 4, 0);
DOM_ID_INFO_1 *id1);
char* smb_io_sam_info(BOOL io, DOM_SAM_INFO *sam, char *q, char *base, int align, int depth);
char* smb_io_gid(BOOL io, DOM_GID *gid, char *q, char *base, int align, int depth);
-void make_rpc_hdr(RPC_HDR *hdr, enum RPC_PKT_TYPE pkt_type,
+void make_rpc_hdr(RPC_HDR *hdr, enum RPC_PKT_TYPE pkt_type, uint8 frag,
uint32 call_id, int data_len);
char* smb_io_rpc_hdr(BOOL io, RPC_HDR *rpc, char *q, char *base, int align, int depth);
void make_rpc_iface(RPC_IFACE *ifc, char data[16], uint32 version);
rdata_len = PTR_DIFF(p, rdata);
- make_rpc_hdr(&hdr, RPC_BINDACK, hdr.call_id, rdata_len);
+ make_rpc_hdr(&hdr, RPC_BINDACK, 0x0, hdr.call_id, rdata_len);
p = smb_io_rpc_hdr(False, &hdr, rdata, rdata, 4, 0);
/*******************************************************************
creates an RPC_HDR structure.
********************************************************************/
-void make_rpc_hdr(RPC_HDR *hdr, enum RPC_PKT_TYPE pkt_type,
+void make_rpc_hdr(RPC_HDR *hdr, enum RPC_PKT_TYPE pkt_type, uint8 frag,
uint32 call_id, int data_len)
{
if (hdr == NULL) return;
hdr->major = 5; /* RPC version 5 */
hdr->minor = 0; /* minor version 0 */
hdr->pkt_type = pkt_type; /* RPC packet type */
- hdr->frag = 3; /* first frag + last frag */
+ hdr->frag = frag; /* first frag + last frag */
hdr->pack_type = 0x10; /* packed data representation */
hdr->frag_len = data_len; /* fragment length, fill in later */
hdr->auth_len = 0; /* authentication length */
{
if (hdr == NULL) return;
- make_rpc_hdr(&(hdr->hdr), pkt_type, call_id, data_len);
+ /* frag is FIRST_FRAG | LAST_FRAG. lkclXXXX must define these */
+ make_rpc_hdr(&(hdr->hdr), pkt_type, 0x03, call_id, data_len);
hdr->alloc_hint = data_len - 0x18; /* allocation hint */
hdr->context_id = 0; /* presentation context identifier */