mbuf.h revision 68596
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 68596 2000-11-11 01:31:32Z 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 8668596Sbrian#define M_MAXLEN (4352 - sizeof(struct mbuf)) /* > HDLCSIZE */ 8754913Sbrian 8836285Sbrianstruct cmdargs; 8936285Sbrian 9054912Sbrianextern int m_length(struct mbuf *); 9154912Sbrianextern struct mbuf *m_get(size_t, int); 9254912Sbrianextern struct mbuf *m_free(struct mbuf *); 9354912Sbrianextern void m_freem(struct mbuf *); 9446686Sbrianextern void mbuf_Write(struct mbuf *, const void *, size_t); 9546686Sbrianextern struct mbuf *mbuf_Read(struct mbuf *, void *, size_t); 9646686Sbrianextern size_t mbuf_View(struct mbuf *, void *, size_t); 9754912Sbrianextern struct mbuf *m_prepend(struct mbuf *, const void *, size_t, size_t); 9854912Sbrianextern struct mbuf *m_adj(struct mbuf *, ssize_t); 9954912Sbrianextern struct mbuf *m_pullup(struct mbuf *); 10054912Sbrianextern void m_settype(struct mbuf *, int); 10155353Sbrianextern struct mbuf *m_append(struct mbuf *, const void *, size_t); 10254912Sbrian 10336285Sbrianextern int mbuf_Show(struct cmdargs const *); 10454912Sbrian 10554912Sbrianextern void m_enqueue(struct mqueue *, struct mbuf *); 10654912Sbrianextern struct mbuf *m_dequeue(struct mqueue *); 107