mbuf.h revision 54912
16059Samurai/* 26059Samurai * Written by Toshiharu OHNO (tony-o@iij.ad.jp) 36059Samurai * 46059Samurai * Copyright (C) 1993, Internet Initiative Japan, Inc. All rights reserverd. 56059Samurai * 66059Samurai * Redistribution and use in source and binary forms are permitted 76059Samurai * provided that the above copyright notice and this paragraph are 86059Samurai * duplicated in all such forms and that any documentation, 96059Samurai * advertising materials, and other materials related to such 106059Samurai * distribution and use acknowledge that the software was developed 116059Samurai * by the Internet Initiative Japan. The name of the 126059Samurai * IIJ may not be used to endorse or promote products derived 136059Samurai * from this software without specific prior written permission. 146059Samurai * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR 156059Samurai * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED 166059Samurai * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. 176059Samurai * 1850479Speter * $FreeBSD: head/usr.sbin/ppp/mbuf.h 54912 1999-12-20 20:29:47Z brian $ 196059Samurai * 206059Samurai * TODO: 216059Samurai */ 226059Samurai 236059Samuraistruct mbuf { 2454912Sbrian size_t m_size; /* size allocated (excluding header) */ 2554912Sbrian short m_offset; /* offset from header end to start position */ 2654912Sbrian size_t m_len; /* available byte count in buffer */ 2754912Sbrian short m_type; /* MB_* below */ 2854912Sbrian struct mbuf *m_next; /* link to next mbuf */ 2954912Sbrian struct mbuf *m_nextpkt; /* link to next packet */ 3038472Sbrian /* buffer space is malloc()d directly after the header */ 316059Samurai}; 326059Samurai 336059Samuraistruct mqueue { 346059Samurai struct mbuf *top; 356059Samurai struct mbuf *last; 3654912Sbrian size_t len; 376059Samurai}; 386059Samurai 3946828Sbrian#define MBUF_CTOP(bp) \ 4054912Sbrian ((bp) ? (u_char *)((bp)+1) + (bp)->m_offset : NULL) 416059Samurai 4246828Sbrian#define CONST_MBUF_CTOP(bp) \ 4354912Sbrian ((bp) ? (const u_char *)((bp)+1) + (bp)->m_offset : NULL) 4446828Sbrian 4547695Sbrian#define MB_IPIN 0 4647695Sbrian#define MB_IPOUT 1 4750059Sbrian#define MB_NATIN 2 4850059Sbrian#define MB_NATOUT 3 4947695Sbrian#define MB_MPIN 4 5047695Sbrian#define MB_MPOUT 5 5147695Sbrian#define MB_VJIN 6 5247695Sbrian#define MB_VJOUT 7 5347695Sbrian#define MB_ICOMPDIN 8 5447695Sbrian#define MB_ICOMPDOUT 9 5547695Sbrian#define MB_COMPDIN 10 5647695Sbrian#define MB_COMPDOUT 11 5747695Sbrian#define MB_LQRIN 12 5847695Sbrian#define MB_LQROUT 13 5947695Sbrian#define MB_ECHOIN 14 6047695Sbrian#define MB_ECHOOUT 15 6147695Sbrian#define MB_PROTOIN 16 6247695Sbrian#define MB_PROTOOUT 17 6347695Sbrian#define MB_ACFIN 18 6447695Sbrian#define MB_ACFOUT 19 6547695Sbrian#define MB_SYNCIN 20 6647695Sbrian#define MB_SYNCOUT 21 6747695Sbrian#define MB_HDLCIN 22 6847695Sbrian#define MB_HDLCOUT 23 6947695Sbrian#define MB_ASYNCIN 24 7047695Sbrian#define MB_ASYNCOUT 25 7147695Sbrian#define MB_CBCPIN 26 7247695Sbrian#define MB_CBCPOUT 27 7347695Sbrian#define MB_CHAPIN 28 7447695Sbrian#define MB_CHAPOUT 29 7547695Sbrian#define MB_PAPIN 30 7647695Sbrian#define MB_PAPOUT 31 7747695Sbrian#define MB_CCPIN 32 7847695Sbrian#define MB_CCPOUT 33 7947695Sbrian#define MB_IPCPIN 34 8047695Sbrian#define MB_IPCPOUT 35 8147695Sbrian#define MB_LCPIN 36 8247695Sbrian#define MB_LCPOUT 37 8347695Sbrian#define MB_UNKNOWN 38 8447695Sbrian#define MB_MAX MB_UNKNOWN 856059Samurai 8636285Sbrianstruct cmdargs; 8736285Sbrian 8854912Sbrianextern int m_length(struct mbuf *); 8954912Sbrianextern struct mbuf *m_get(size_t, int); 9054912Sbrianextern struct mbuf *m_free(struct mbuf *); 9154912Sbrianextern void m_freem(struct mbuf *); 9246686Sbrianextern void mbuf_Write(struct mbuf *, const void *, size_t); 9346686Sbrianextern struct mbuf *mbuf_Read(struct mbuf *, void *, size_t); 9446686Sbrianextern size_t mbuf_View(struct mbuf *, void *, size_t); 9554912Sbrianextern struct mbuf *m_prepend(struct mbuf *, const void *, size_t, size_t); 9654912Sbrianextern struct mbuf *m_adj(struct mbuf *, ssize_t); 9754912Sbrianextern struct mbuf *m_pullup(struct mbuf *); 9854912Sbrianextern void m_settype(struct mbuf *, int); 9954912Sbrian 10036285Sbrianextern int mbuf_Show(struct cmdargs const *); 10154912Sbrian 10254912Sbrianextern void m_enqueue(struct mqueue *, struct mbuf *); 10354912Sbrianextern struct mbuf *m_dequeue(struct mqueue *); 104