Lines Matching defs:mbuf

70  *	@(#)mbuf.h	8.3 (Berkeley) 1/21/94
92 * includes overhead. An mbuf may add a single "mbuf cluster" of size
120 * mtod(m,t) - convert mbuf pointer to data pointer of correct type
121 * dtom(x) - convert data pointer within mbuf to mbuf pointer (XXX)
126 /* header at beginning of each mbuf: */
128 struct mbuf *mh_next; /* next buffer in chain */
129 struct mbuf *mh_nextpkt; /* next chain in queue/record */
130 int32_t mh_len; /* amount of data in this mbuf */
132 short mh_type; /* type of data in this mbuf */
157 * Packet tag header structure (at the top of mbuf). Pointers are
164 u_int64_t refcnt; /* Number of tags in this mbuf */
180 /* PF mbuf tag */
182 void *pftag_hdr; /* saved hdr pos in mbuf, for ECN */
206 /* TCP specific mbuf tag */
213 /* record/packet header in first mbuf of chain; valid if M_PKTHDR set */
239 /* description of external storage mapped into mbuf, valid if M_EXT set */
257 struct mbuf {
285 /* mbuf flags (private) */
295 /* mbuf pkthdr flags, also in m_flags (private) */
303 #define M_TAGHDR 0x8000 /* m_tag hdr structure at top of mbuf data */
346 /* TCP Segment Offloading requested on this mbuf */
347 #define CSUM_TSO_IPV4 0x100000 /* This mbuf needs to be segmented by the NIC */
348 #define CSUM_TSO_IPV6 0x200000 /* This mbuf needs to be segmented by the NIC */
363 /* mbuf types */
384 * mbuf allocation/deallocation macros:
386 * MGET(struct mbuf *m, int how, int type)
387 * allocates an mbuf and initializes it to contain internal data.
389 * MGETHDR(struct mbuf *m, int how, int type)
390 * allocates an mbuf and initializes it to contain a packet header
406 * MCLALLOC(caddr_t p, int how) allocates an mbuf cluster.
407 * MCLGET adds such clusters to a normal mbuf;
412 * Normal mbuf clusters are normally treated as character arrays
446 * MFREE(struct mbuf *m, struct mbuf *n)
447 * Free a single mbuf and associated external storage.
454 * Copy mbuf pkthdr from from to to.
463 * Set the m_data pointer of a newly-allocated mbuf (m_get/MGET) to place
464 * an object of the specified size at the end of the mbuf, longword aligned.
482 * before the current start of data in an mbuf.
489 * after the end of data in an mbuf.
495 * Arrange to prepend space of size plen to mbuf m.
496 * If a new mbuf must be allocated, how specifies whether to wait.
497 * If how is M_DONTWAIT and allocation fails, the original mbuf chain
502 /* change mbuf to new type */
515 * "off+len") is located in single mbuf, on contiguous memory region.
520 * very top of mbuf. GET0 is likely to make memory copy than GET.
524 struct mbuf *t; \
544 struct mbuf *t; \
568 panic_plain("Failed mbuf validity check: mbuf %p len %d " \
578 * Simple mbuf queueing system
580 * This is basically a SIMPLEQ adapted to mbuf use (i.e. using
587 struct mbuf *mq_first; /* first packet */ \
588 struct mbuf **mq_last; /* addr of last next packet */ \
627 struct mbuf *_m = MBUFQ_FIRST(q); \
637 struct mbuf *__m0; \
676 u_short m_mtypes[256]; /* type specific mbuf allocations */
679 u_int32_t m_msize; /* length of an mbuf */
680 u_int32_t m_mclbytes; /* length of an mbuf cluster */
682 u_int32_t m_mlen; /* length of data in an mbuf */
683 u_int32_t m_mhlen; /* length of data in a header mbuf */
686 u_int32_t m_bigmclbytes; /* length of an mbuf cluster */
698 u_short m_mtypes[256]; /* type specific mbuf allocations */
701 u_int32_t m_msize; /* length of an mbuf */
702 u_int32_t m_mclbytes; /* length of an mbuf cluster */
704 u_int32_t m_mlen; /* length of data in an mbuf */
705 u_int32_t m_mhlen; /* length of data in a header mbuf */
709 * mbuf class statistics.
852 struct mbuf;
870 extern void m_freem(struct mbuf *);
872 extern void m_adj(struct mbuf *, int);
873 extern void m_cat(struct mbuf *, struct mbuf *);
874 extern void m_copydata(struct mbuf *, int, int, void *);
875 extern struct mbuf *m_copym(struct mbuf *, int, int, int);
876 extern struct mbuf *m_get(int, int);
877 extern struct mbuf *m_gethdr(int, int);
878 extern struct mbuf *m_getpacket(void);
879 extern struct mbuf *m_getpackets(int, int, int);
880 extern struct mbuf *m_mclget(struct mbuf *, int);
881 extern void *m_mtod(struct mbuf *);
882 extern struct mbuf *m_prepend_2(struct mbuf *, int, int);
883 extern struct mbuf *m_pullup(struct mbuf *, int);
884 extern struct mbuf *m_split(struct mbuf *, int, int);
889 * i386 or x86_64), this macro checks whether the data pointer of an mbuf
900 panic_plain("\n%s: mbuf %p data ptr %p is not " \
907 panic_plain("\n%s: mbuf %p data ptr %p is not " \
990 __private_extern__ union mbigcluster *mbutl; /* start VA of mbuf pool */
991 __private_extern__ union mbigcluster *embutl; /* end VA of mbuf pool */
1006 __private_extern__ struct mbuf *m_clattach(struct mbuf *, int, caddr_t,
1010 __private_extern__ struct mbuf *m_mbigget(struct mbuf *, int);
1013 __private_extern__ struct mbuf *m_m16kget(struct mbuf *, int);
1015 __private_extern__ struct mbuf *m_free(struct mbuf *);
1016 __private_extern__ struct mbuf *m_getclr(int, int);
1017 __private_extern__ struct mbuf *m_getptr(struct mbuf *, int, int *);
1018 __private_extern__ unsigned int m_length(struct mbuf *);
1019 __private_extern__ unsigned int m_length2(struct mbuf *, struct mbuf **);
1020 __private_extern__ unsigned int m_fixhdr(struct mbuf *);
1021 __private_extern__ struct mbuf *m_defrag(struct mbuf *, int);
1022 __private_extern__ struct mbuf *m_defrag_offset(struct mbuf *, u_int32_t, int);
1023 __private_extern__ struct mbuf *m_prepend(struct mbuf *, int, int);
1024 __private_extern__ struct mbuf *m_copyup(struct mbuf *, int, int);
1025 __private_extern__ struct mbuf *m_retry(int, int);
1026 __private_extern__ struct mbuf *m_retryhdr(int, int);
1027 __private_extern__ int m_freem_list(struct mbuf *);
1028 __private_extern__ int m_append(struct mbuf *, int, caddr_t);
1029 __private_extern__ struct mbuf *m_last(struct mbuf *);
1030 __private_extern__ struct mbuf *m_devget(char *, int, int, struct ifnet *,
1032 __private_extern__ struct mbuf *m_pulldown(struct mbuf *, int, int, int *);
1034 __private_extern__ struct mbuf *m_getcl(int, int, int);
1036 __private_extern__ int m_mclhasreference(struct mbuf *);
1037 __private_extern__ void m_copy_pkthdr(struct mbuf *, struct mbuf *);
1038 __private_extern__ void m_copy_pftag(struct mbuf *, struct mbuf *);
1040 __private_extern__ struct mbuf *m_dtom(void *);
1044 __private_extern__ int m_trailingspace(struct mbuf *);
1045 __private_extern__ int m_leadingspace(struct mbuf *);
1047 __private_extern__ struct mbuf *m_normalize(struct mbuf *m);
1048 __private_extern__ void m_mchtype(struct mbuf *m, int t);
1049 __private_extern__ void m_mcheck(struct mbuf *);
1051 __private_extern__ void m_copyback(struct mbuf *, int, int, const void *);
1052 __private_extern__ struct mbuf *m_copyback_cow(struct mbuf *, int, int,
1054 __private_extern__ int m_makewritable(struct mbuf **, int, int, int);
1055 __private_extern__ struct mbuf *m_dup(struct mbuf *m, int how);
1056 __private_extern__ struct mbuf *m_copym_with_hdrs(struct mbuf *, int, int, int,
1057 struct mbuf **, int *);
1058 __private_extern__ struct mbuf *m_getpackethdrs(int, int);
1059 __private_extern__ struct mbuf *m_getpacket_how(int);
1060 __private_extern__ struct mbuf *m_getpackets_internal(unsigned int *, int,
1062 __private_extern__ struct mbuf *m_allocpacket_internal(unsigned int *, size_t,
1111 struct mbuf *);
1113 __private_extern__ void m_tag_prepend(struct mbuf *, struct m_tag *);
1114 __private_extern__ void m_tag_unlink(struct mbuf *, struct m_tag *);
1115 __private_extern__ void m_tag_delete(struct mbuf *, struct m_tag *);
1116 __private_extern__ void m_tag_delete_chain(struct mbuf *, struct m_tag *);
1117 __private_extern__ struct m_tag *m_tag_locate(struct mbuf *, u_int32_t,
1120 __private_extern__ int m_tag_copy_chain(struct mbuf *, struct mbuf *, int);
1121 __private_extern__ void m_tag_init(struct mbuf *);
1122 __private_extern__ struct m_tag *m_tag_first(struct mbuf *);
1123 __private_extern__ struct m_tag *m_tag_next(struct mbuf *, struct m_tag *);
1132 __private_extern__ void m_service_class_init(struct mbuf *);
1133 __private_extern__ int m_set_service_class(struct mbuf *, mbuf_svc_class_t);
1134 __private_extern__ mbuf_svc_class_t m_get_service_class(struct mbuf *);
1137 __private_extern__ int m_set_traffic_class(struct mbuf *, mbuf_traffic_class_t);
1138 __private_extern__ mbuf_traffic_class_t m_get_traffic_class(struct mbuf *);