Lines Matching refs:mb

60 smb_msgbuf_used(smb_msgbuf_t *mb)
63 return (mb->scan - mb->base);
70 smb_msgbuf_size(smb_msgbuf_t *mb)
72 return (mb->max);
76 smb_msgbuf_base(smb_msgbuf_t *mb)
78 return (mb->base);
85 smb_msgbuf_word_align(smb_msgbuf_t *mb)
87 mb->scan = (uint8_t *)((uintptr_t)(mb->scan + 1) & ~1);
94 smb_msgbuf_dword_align(smb_msgbuf_t *mb)
96 mb->scan = (uint8_t *)((uintptr_t)(mb->scan + 3) & ~3);
104 smb_msgbuf_has_space(smb_msgbuf_t *mb, size_t size)
106 if (size > mb->max || (mb->scan + size) > mb->end)
116 smb_msgbuf_fset(smb_msgbuf_t *mb, uint32_t flags)
118 mb->flags |= flags;
125 smb_msgbuf_fclear(smb_msgbuf_t *mb, uint32_t flags)
127 mb->flags &= ~flags;
141 smb_msgbuf_init(smb_msgbuf_t *mb, uint8_t *buf, size_t size, uint32_t flags)
143 mb->scan = mb->base = buf;
144 mb->max = mb->count = size;
145 mb->end = &buf[size];
146 mb->flags = flags;
147 mb->mlist.next = 0;
157 smb_msgbuf_term(smb_msgbuf_t *mb)
159 smb_msgbuf_mlist_t *item = mb->mlist.next;
184 smb_msgbuf_decode(smb_msgbuf_t *mb, char *fmt, ...)
191 orig_scan = mb->scan;
192 rc = buf_decode(mb, fmt, ap);
197 mb->scan = orig_scan;
202 return (mb->scan - orig_scan);
214 buf_decode(smb_msgbuf_t *mb, char *fmt, va_list ap)
261 if (smb_msgbuf_has_space(mb, repc) == 0)
264 mb->scan += repc;
268 if (smb_msgbuf_has_space(mb, repc) == 0)
272 bcopy(mb->scan, bvalp, repc);
273 mb->scan += repc;
277 if (smb_msgbuf_has_space(mb, repc) == 0)
282 *bvalp++ = *mb->scan++;
287 rc = smb_msgbuf_has_space(mb, repc * sizeof (uint16_t));
293 *wvalp++ = LE_IN16(mb->scan);
294 mb->scan += sizeof (uint16_t);
299 rc = smb_msgbuf_has_space(mb, repc * sizeof (int32_t));
305 *lvalp++ = LE_IN32(mb->scan);
306 mb->scan += sizeof (int32_t);
311 rc = smb_msgbuf_has_space(mb, repc * sizeof (int64_t));
317 *llvalp++ = LE_IN64(mb->scan);
318 mb->scan += sizeof (int64_t);
323 if (mb->flags & SMB_MSGBUF_UNICODE)
329 repc = strlen((const char *)mb->scan) + 1;
330 if (smb_msgbuf_has_space(mb, repc) == 0)
332 if ((cvalp = smb_msgbuf_malloc(mb, repc * 2)) == 0)
338 wchar = *mb->scan++;
347 mb->scan += repc;
358 smb_msgbuf_word_align(mb);
363 uint8_t *tmp_scan = mb->scan;
370 if (smb_msgbuf_has_space(mb, repc) == 0)
376 if ((cvalp = smb_msgbuf_malloc(mb, repc * 2)) == 0)
385 wchar = LE_IN16(mb->scan);
386 mb->scan += 2;
395 mb->scan += repc;
399 if (smb_msgbuf_has_space(mb, 4) == 0)
402 if (mb->scan[0] != 0xFF ||
403 mb->scan[1] != 'S' ||
404 mb->scan[2] != 'M' ||
405 mb->scan[3] != 'B') {
408 mb->scan += 4;
430 smb_msgbuf_encode(smb_msgbuf_t *mb, char *fmt, ...)
437 orig_scan = mb->scan;
438 rc = buf_encode(mb, fmt, ap);
443 mb->scan = orig_scan;
448 return (mb->scan - orig_scan);
460 buf_encode(smb_msgbuf_t *mb, char *fmt, va_list ap)
507 if (smb_msgbuf_has_space(mb, repc) == 0)
511 *mb->scan++ = 0;
515 if (smb_msgbuf_has_space(mb, repc) == 0)
519 bcopy(bvalp, mb->scan, repc);
520 mb->scan += repc;
524 if (smb_msgbuf_has_space(mb, repc) == 0)
529 *mb->scan++ = cval;
534 rc = smb_msgbuf_has_space(mb, repc * sizeof (uint16_t));
540 LE_OUT16(mb->scan, wval);
541 mb->scan += sizeof (uint16_t);
546 rc = smb_msgbuf_has_space(mb, repc * sizeof (int32_t));
552 LE_OUT32(mb->scan, lval);
553 mb->scan += sizeof (int32_t);
558 rc = smb_msgbuf_has_space(mb, repc * sizeof (int64_t));
564 LE_OUT64(mb->scan, llval);
565 mb->scan += sizeof (uint64_t);
570 if (mb->flags & SMB_MSGBUF_UNICODE)
580 if (!(mb->flags & SMB_MSGBUF_NOTERM))
583 if (smb_msgbuf_has_space(mb, repc) == 0)
593 *mb->scan++ = (uint8_t)wchar;
596 *mb->scan++ = wchar >> 8;
601 (mb->flags & SMB_MSGBUF_NOTERM) == 0) {
602 *mb->scan++ = 0;
606 *mb->scan++ = 0;
616 smb_msgbuf_word_align(mb);
620 if (!(mb->flags & SMB_MSGBUF_NOTERM))
623 if (!smb_msgbuf_has_space(mb, repc))
634 LE_OUT16(mb->scan, wchar);
635 mb->scan += 2;
639 (mb->flags & SMB_MSGBUF_NOTERM) == 0) {
640 LE_OUT16(mb->scan, 0);
641 mb->scan += 2;
645 *mb->scan++ = 0;
651 if (smb_msgbuf_has_space(mb, 4) == 0)
654 *mb->scan++ = 0xFF;
655 *mb->scan++ = 'S';
656 *mb->scan++ = 'M';
657 *mb->scan++ = 'B';
677 smb_msgbuf_malloc(smb_msgbuf_t *mb, size_t size)
689 item->next = mb->mlist.next;
691 mb->mlist.next = item;