mbuf.h revision 54913
1171831Skan/* 2171831Skan * Written by Toshiharu OHNO (tony-o@iij.ad.jp) 3171831Skan * 4171831Skan * Copyright (C) 1993, Internet Initiative Japan, Inc. All rights reserverd. 5169695Skan * 6169695Skan * Redistribution and use in source and binary forms are permitted 7169695Skan * provided that the above copyright notice and this paragraph are 8169695Skan * duplicated in all such forms and that any documentation, 9169695Skan * advertising materials, and other materials related to such 10169695Skan * distribution and use acknowledge that the software was developed 11169695Skan * by the Internet Initiative Japan. The name of the 12169695Skan * IIJ may not be used to endorse or promote products derived 13169695Skan * from this software without specific prior written permission. 14169695Skan * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR 15169695Skan * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED 16169695Skan * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. 17169695Skan * 18169695Skan * $FreeBSD: head/usr.sbin/ppp/mbuf.h 54913 1999-12-20 20:29:51Z brian $ 19169695Skan * 20169695Skan * TODO: 21169695Skan */ 22169695Skan 23169695Skanstruct mbuf { 24169695Skan size_t m_size; /* size allocated (excluding header) */ 25169695Skan short m_offset; /* offset from header end to start position */ 26169695Skan size_t m_len; /* available byte count in buffer */ 27169695Skan short m_type; /* MB_* below */ 28169695Skan struct mbuf *m_next; /* link to next mbuf */ 29169695Skan struct mbuf *m_nextpkt; /* link to next packet */ 30169695Skan /* buffer space is malloc()d directly after the header */ 31169695Skan}; 32169695Skan 33169695Skanstruct mqueue { 34169695Skan struct mbuf *top; 35169695Skan struct mbuf *last; 36169695Skan size_t len; 37169695Skan}; 38169695Skan 39169695Skan#define MBUF_CTOP(bp) \ 40169695Skan ((bp) ? (u_char *)((bp)+1) + (bp)->m_offset : NULL) 41169695Skan 42169695Skan#define CONST_MBUF_CTOP(bp) \ 43169695Skan ((bp) ? (const u_char *)((bp)+1) + (bp)->m_offset : NULL) 44169695Skan 45169695Skan#define MB_IPIN 0 46169695Skan#define MB_IPOUT 1 47169695Skan#define MB_NATIN 2 48169695Skan#define MB_NATOUT 3 49169695Skan#define MB_MPIN 4 50169695Skan#define MB_MPOUT 5 51169695Skan#define MB_VJIN 6 52169695Skan#define MB_VJOUT 7 53169695Skan#define MB_ICOMPDIN 8 54169695Skan#define MB_ICOMPDOUT 9 55169695Skan#define MB_COMPDIN 10 56169695Skan#define MB_COMPDOUT 11 57169695Skan#define MB_LQRIN 12 58169695Skan#define MB_LQROUT 13 59169695Skan#define MB_ECHOIN 14 60169695Skan#define MB_ECHOOUT 15 61169695Skan#define MB_PROTOIN 16 62169695Skan#define MB_PROTOOUT 17 63169695Skan#define MB_ACFIN 18 64169695Skan#define MB_ACFOUT 19 65169695Skan#define MB_SYNCIN 20 66169695Skan#define MB_SYNCOUT 21 67169695Skan#define MB_HDLCIN 22 68169695Skan#define MB_HDLCOUT 23 69169695Skan#define MB_ASYNCIN 24 70169695Skan#define MB_ASYNCOUT 25 71169695Skan#define MB_CBCPIN 26 72169695Skan#define MB_CBCPOUT 27 73169695Skan#define MB_CHAPIN 28 74169695Skan#define MB_CHAPOUT 29 75169695Skan#define MB_PAPIN 30 76169695Skan#define MB_PAPOUT 31 77169695Skan#define MB_CCPIN 32 78169695Skan#define MB_CCPOUT 33 79169695Skan#define MB_IPCPIN 34 80169695Skan#define MB_IPCPOUT 35 81169695Skan#define MB_LCPIN 36 82169695Skan#define MB_LCPOUT 37 83169695Skan#define MB_UNKNOWN 38 84169695Skan#define MB_MAX MB_UNKNOWN 85169695Skan 86169695Skan#define M_MAXLEN (2048 - sizeof(struct mbuf)) 87169695Skan 88169695Skanstruct cmdargs; 89169695Skan 90169695Skanextern int m_length(struct mbuf *); 91169695Skanextern struct mbuf *m_get(size_t, int); 92169695Skanextern struct mbuf *m_free(struct mbuf *); 93169695Skanextern void m_freem(struct mbuf *); 94169695Skanextern void mbuf_Write(struct mbuf *, const void *, size_t); 95169695Skanextern struct mbuf *mbuf_Read(struct mbuf *, void *, size_t); 96169695Skanextern size_t mbuf_View(struct mbuf *, void *, size_t); 97169695Skanextern struct mbuf *m_prepend(struct mbuf *, const void *, size_t, size_t); 98169695Skanextern struct mbuf *m_adj(struct mbuf *, ssize_t); 99169695Skanextern struct mbuf *m_pullup(struct mbuf *); 100169695Skanextern void m_settype(struct mbuf *, int); 101169695Skan 102169695Skanextern int mbuf_Show(struct cmdargs const *); 103169695Skan 104169695Skanextern void m_enqueue(struct mqueue *, struct mbuf *); 105169695Skanextern struct mbuf *m_dequeue(struct mqueue *); 106169695Skan