• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.5.8/xnu-1228.15.4/bsd/kern/

Lines Matching refs:mbuf

33 #include <sys/mbuf.h>
46 void* mbuf_data(mbuf_t mbuf)
48 return mbuf->m_data;
51 void* mbuf_datastart(mbuf_t mbuf)
53 if (mbuf->m_flags & M_EXT)
54 return mbuf->m_ext.ext_buf;
55 if (mbuf->m_flags & M_PKTHDR)
56 return mbuf->m_pktdat;
57 return mbuf->m_dat;
60 errno_t mbuf_setdata(mbuf_t mbuf, void* data, size_t len)
62 size_t start = (size_t)((char*)mbuf_datastart(mbuf));
63 size_t maxlen = mbuf_maxlen(mbuf);
67 mbuf->m_data = data;
68 mbuf->m_len = len;
73 errno_t mbuf_align_32(mbuf_t mbuf, size_t len)
75 if ((mbuf->m_flags & M_EXT) != 0 && m_mclhasreference(mbuf))
77 mbuf->m_data = mbuf_datastart(mbuf);
78 mbuf->m_data += ((mbuf_trailingspace(mbuf) - len) &~ (sizeof(u_int32_t) - 1));
88 errno_t mbuf_get(mbuf_how_t how, mbuf_type_t type, mbuf_t *mbuf)
90 /* Must set *mbuf to NULL in failure case */
91 *mbuf = m_get(how, type);
93 return (*mbuf == NULL) ? ENOMEM : 0;
96 errno_t mbuf_gethdr(mbuf_how_t how, mbuf_type_t type, mbuf_t *mbuf)
98 /* Must set *mbuf to NULL in failure case */
99 *mbuf = m_gethdr(how, type);
101 return (*mbuf == NULL) ? ENOMEM : 0;
105 mbuf_attachcluster(mbuf_how_t how, mbuf_type_t type, mbuf_t *mbuf,
112 if ((*mbuf = m_clattach(mbuf != NULL ? *mbuf : NULL, type, extbuf,
166 mbuf_getcluster(mbuf_how_t how, mbuf_type_t type, size_t size, mbuf_t* mbuf)
168 /* Must set *mbuf to NULL in failure case */
172 if (mbuf == NULL)
174 if (*mbuf == NULL) {
175 *mbuf = m_get(how, type);
176 if (*mbuf == NULL)
185 *mbuf = m_mclget(*mbuf, how);
187 *mbuf = m_mbigget(*mbuf, how);
190 *mbuf = m_m16kget(*mbuf, how);
200 if (*mbuf == NULL || ((*mbuf)->m_flags & M_EXT) == 0)
204 mbuf_free(*mbuf);
205 *mbuf = NULL;
210 errno_t mbuf_mclget(mbuf_how_t how, mbuf_type_t type, mbuf_t *mbuf)
212 /* Must set *mbuf to NULL in failure case */
215 if (mbuf == NULL) return EINVAL;
216 if (*mbuf == NULL) {
217 error = mbuf_get(how, type, mbuf);
227 *mbuf = m_mclget(*mbuf, how);
229 if (created && ((*mbuf)->m_flags & M_EXT) == 0) {
230 mbuf_free(*mbuf);
231 *mbuf = NULL;
233 if (*mbuf == NULL || ((*mbuf)->m_flags & M_EXT) == 0)
239 errno_t mbuf_getpacket(mbuf_how_t how, mbuf_t *mbuf)
241 /* Must set *mbuf to NULL in failure case */
244 *mbuf = m_getpacket_how(how);
246 if (*mbuf == NULL) {
256 mbuf_t mbuf_free(mbuf_t mbuf)
258 return m_free(mbuf);
261 void mbuf_freem(mbuf_t mbuf)
263 m_freem(mbuf);
266 int mbuf_freem_list(mbuf_t mbuf)
268 return m_freem_list(mbuf);
271 size_t mbuf_leadingspace(const mbuf_t mbuf)
273 return m_leadingspace(mbuf);
276 size_t mbuf_trailingspace(const mbuf_t mbuf)
278 return m_trailingspace(mbuf);
285 /* Must set *mbuf to NULL in failure case */
316 errno_t mbuf_pullup(mbuf_t *mbuf, size_t len)
318 /* Must set *mbuf to NULL in failure case */
319 *mbuf = m_pullup(*mbuf, len);
321 return (*mbuf == NULL) ? ENOMEM : 0;
334 void mbuf_adj(mbuf_t mbuf, int len)
336 m_adj(mbuf, len);
385 int mbuf_mclhasreference(mbuf_t mbuf)
387 if ((mbuf->m_flags & M_EXT))
388 return m_mclhasreference(mbuf);
394 /* mbuf header */
395 mbuf_t mbuf_next(const mbuf_t mbuf)
397 return mbuf->m_next;
400 errno_t mbuf_setnext(mbuf_t mbuf, mbuf_t next)
404 mbuf->m_next = next;
409 mbuf_t mbuf_nextpkt(const mbuf_t mbuf)
411 return mbuf->m_nextpkt;
414 void mbuf_setnextpkt(mbuf_t mbuf, mbuf_t nextpkt)
416 mbuf->m_nextpkt = nextpkt;
419 size_t mbuf_len(const mbuf_t mbuf)
421 return mbuf->m_len;
424 void mbuf_setlen(mbuf_t mbuf, size_t len)
426 mbuf->m_len = len;
429 size_t mbuf_maxlen(const mbuf_t mbuf)
431 if (mbuf->m_flags & M_EXT)
432 return mbuf->m_ext.ext_size;
433 return &mbuf->m_dat[MLEN] - ((char*)mbuf_datastart(mbuf));
436 mbuf_type_t mbuf_type(const mbuf_t mbuf)
438 return mbuf->m_type;
441 errno_t mbuf_settype(mbuf_t mbuf, mbuf_type_t new_type)
445 m_mchtype(mbuf, new_type);
450 mbuf_flags_t mbuf_flags(const mbuf_t mbuf)
452 return mbuf->m_flags & mbuf_flags_mask;
455 errno_t mbuf_setflags(mbuf_t mbuf, mbuf_flags_t flags)
458 mbuf->m_flags = flags |
459 (mbuf->m_flags & ~mbuf_flags_mask);
464 errno_t mbuf_setflags_mask(mbuf_t mbuf, mbuf_flags_t flags, mbuf_flags_t mask)
468 mbuf->m_flags = (flags & mask) | (mbuf->m_flags & ~mask);
483 size_t mbuf_pkthdr_len(const mbuf_t mbuf)
485 return mbuf->m_pkthdr.len;
488 void mbuf_pkthdr_setlen(mbuf_t mbuf, size_t len)
490 mbuf->m_pkthdr.len = len;
493 void mbuf_pkthdr_adjustlen(mbuf_t mbuf, int amount)
495 mbuf->m_pkthdr.len += amount;
498 ifnet_t mbuf_pkthdr_rcvif(const mbuf_t mbuf)
501 return mbuf->m_pkthdr.rcvif;
504 errno_t mbuf_pkthdr_setrcvif(mbuf_t mbuf, ifnet_t ifnet)
507 mbuf->m_pkthdr.rcvif = (struct ifnet*)ifnet;
511 void* mbuf_pkthdr_header(const mbuf_t mbuf)
513 return mbuf->m_pkthdr.header;
516 void mbuf_pkthdr_setheader(mbuf_t mbuf, void *header)
518 mbuf->m_pkthdr.header = (void*)header;
522 mbuf_inbound_modified(mbuf_t mbuf)
525 mbuf->m_pkthdr.csum_flags = 0;
528 extern void in_cksum_offset(struct mbuf* m, size_t ip_offset);
529 extern void in_delayed_cksum_offset(struct mbuf *m, int ip_offset);
532 mbuf_outbound_finalize(mbuf_t mbuf, u_long protocol_family, size_t protocol_offset)
534 if ((mbuf->m_pkthdr.csum_flags &
541 if (mbuf->m_pkthdr.csum_flags & CSUM_TCP_SUM16) {
548 mbuf->m_pkthdr.csum_flags &= ~CSUM_TCP_SUM16;
549 mbuf->m_pkthdr.csum_flags |= CSUM_TCP;
550 first = mbuf->m_pkthdr.csum_data >> 16;
551 second = mbuf->m_pkthdr.csum_data & 0xffff;
552 mbuf->m_pkthdr.csum_data = first - second;
554 if (mbuf->m_pkthdr.csum_flags & CSUM_DELAY_DATA) {
555 in_delayed_cksum_offset(mbuf, protocol_offset);
558 if (mbuf->m_pkthdr.csum_flags & CSUM_DELAY_IP) {
559 in_cksum_offset(mbuf, protocol_offset);
562 mbuf->m_pkthdr.csum_flags &= ~(CSUM_DELAY_DATA | CSUM_DELAY_IP);
570 if ((mbuf->m_pkthdr.csum_flags & (CSUM_DELAY_DATA | CSUM_DELAY_IP)) != 0)
577 mbuf_t mbuf,
580 mbuf->m_pkthdr.csum_flags |= CSUM_VLAN_TAG_VALID;
581 mbuf->m_pkthdr.vlan_tag = vlan;
588 mbuf_t mbuf,
591 if ((mbuf->m_pkthdr.csum_flags & CSUM_VLAN_TAG_VALID) == 0)
594 *vlan = mbuf->m_pkthdr.vlan_tag;
601 mbuf_t mbuf)
603 mbuf->m_pkthdr.csum_flags &= ~CSUM_VLAN_TAG_VALID;
604 mbuf->m_pkthdr.vlan_tag = 0;
614 mbuf_t mbuf,
619 mbuf->m_pkthdr.csum_flags = (mbuf->m_pkthdr.csum_flags & 0xffff0000) | request;
620 mbuf->m_pkthdr.csum_data = value;
627 mbuf_t mbuf,
631 *request = mbuf->m_pkthdr.csum_flags;
634 *value = mbuf->m_pkthdr.csum_data;
642 mbuf_t mbuf)
644 mbuf->m_pkthdr.csum_flags &= 0xffff0000;
645 mbuf->m_pkthdr.csum_data = 0;
656 mbuf_t mbuf,
661 mbuf->m_pkthdr.csum_flags = (mbuf->m_pkthdr.csum_flags & 0xffff0000) | performed;
662 mbuf->m_pkthdr.csum_data = value;
669 mbuf_t mbuf,
673 *performed = mbuf->m_pkthdr.csum_flags & mbuf_valid_csum_performed_flags;
674 *value = mbuf->m_pkthdr.csum_data;
681 mbuf_t mbuf)
683 mbuf->m_pkthdr.csum_flags &= 0xffff0000;
684 mbuf->m_pkthdr.csum_data = 0;
690 mbuf_inet_cksum(mbuf_t mbuf, int protocol, u_int32_t offset, u_int32_t length,
693 if (mbuf == NULL || length == 0 || csum == NULL ||
694 (u_int32_t)mbuf->m_pkthdr.len < (offset + length))
697 *csum = inet_cksum(mbuf, protocol, offset, length);
703 mbuf_inet6_cksum(mbuf_t mbuf, int protocol, u_int32_t offset, u_int32_t length,
706 if (mbuf == NULL || length == 0 || csum == NULL ||
707 (u_int32_t)mbuf->m_pkthdr.len < (offset + length))
710 *csum = inet6_cksum(mbuf, protocol, offset, length);
715 mbuf_inet6_cksum(__unused mbuf_t mbuf, __unused int protocol,
724 inet6_cksum(__unused struct mbuf *m, __unused unsigned int nxt,
866 mbuf_t mbuf,
879 if (mbuf == NULL || (mbuf->m_flags & M_PKTHDR) == 0 || id < MTAG_FIRST_ID ||
886 tag = m_tag_locate(mbuf, id, type, NULL);
898 m_tag_prepend(mbuf, tag);
906 mbuf_t mbuf,
920 if (mbuf == NULL || (mbuf->m_flags & M_PKTHDR) == 0 || id < MTAG_FIRST_ID ||
926 tag = m_tag_locate(mbuf, id, type, NULL);
940 mbuf_t mbuf,
946 if (mbuf == NULL || (mbuf->m_flags & M_PKTHDR) == 0 || id < MTAG_FIRST_ID ||
950 tag = m_tag_locate(mbuf, id, type, NULL);
955 m_tag_delete(mbuf, tag);
959 /* mbuf stats */
982 mbuf_allocpacket(mbuf_how_t how, size_t packetlen, unsigned int *maxchunks, mbuf_t *mbuf)
985 struct mbuf *m;
1003 *mbuf = m;
1010 mbuf_allocpacket_list(unsigned int numpkts, mbuf_how_t how, size_t packetlen, unsigned int *maxchunks, mbuf_t *mbuf)
1013 struct mbuf *m;
1034 *mbuf = m;
1045 * 2) mbuf_copyback will grow the last mbuf in the chain if possible