1 /* 2 * Copyright 2022, Haiku, Inc. All rights reserved. 3 * Distributed under the terms of the MIT License. 4 */ 5 #ifndef _OBSD_COMPAT_SYS_MBUF_H_ 6 #define _OBSD_COMPAT_SYS_MBUF_H_ 7 8 #include <sys/systm.h> 9 10 /* FreeBSD KASSERT */ 11 #undef KASSERT 12 #define KASSERT KASSERT_FREEBSD 13 14 #include_next <sys/mbuf.h> 15 16 /* back to OpenBSD KASSERT */ 17 #undef KASSERT 18 #define KASSERT KASSERT_OPENBSD 19 20 #include <sys/mutex.h> 21 22 23 #define ph_cookie PH_loc.ptr 24 25 #define M_DATABUF(m) M_START(m) 26 #define M_READONLY(m) (!M_WRITABLE(m)) 27 28 #define MAXMCLBYTES MJUM16BYTES 29 30 #define M_IPV4_CSUM_OUT CSUM_IP 31 #define M_TCP_CSUM_OUT CSUM_IP_TCP 32 #define M_UDP_CSUM_OUT CSUM_IP_UDP 33 #define M_IPV4_CSUM_IN_OK (CSUM_IP_CHECKED | CSUM_IP_VALID) 34 #define M_TCP_CSUM_IN_OK (CSUM_DATA_VALID | CSUM_PSEUDO_HDR) 35 #define M_UDP_CSUM_IN_OK (CSUM_DATA_VALID | CSUM_PSEUDO_HDR) 36 37 38 static struct mbuf* 39 MCLGETL(struct mbuf* m, int how, int size) 40 { 41 if (m == NULL) 42 return m_get2(size, how, MT_DATA, M_PKTHDR); 43 44 m_cljget(m, how, size); 45 return m; 46 } 47 48 static int 49 m_dup_pkthdr_openbsd(struct mbuf* to, const struct mbuf* from, int how) 50 { 51 return !m_dup_pkthdr(to, from, how); 52 } 53 #define m_dup_pkthdr m_dup_pkthdr_openbsd 54 55 static int 56 m_tag_copy_chain_openbsd(struct mbuf* to, const struct mbuf* from, int how) 57 { 58 return !m_tag_copy_chain(to, from, how); 59 } 60 #define m_tag_copy_chain m_tag_copy_chain_openbsd 61 62 63 /* FreeBSD methods not compatible with their OpenBSD counterparts */ 64 #define m_defrag(mbuf, how) __m_defrag_unimplemented() 65 66 67 #include "mbuf-obsd.h" 68 69 70 #endif /* _OBSD_COMPAT_SYS_MBUF_H_ */ 71