mbuf.h revision 46828
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 * 1846828Sbrian * $Id: mbuf.h,v 1.16 1999/05/08 11:07:09 brian Exp $ 196059Samurai * 206059Samurai * TODO: 216059Samurai */ 226059Samurai 236059Samuraistruct mbuf { 2438472Sbrian short size; /* size allocated (excluding header) */ 2538472Sbrian short offset; /* offset from header end to start position */ 2628679Sbrian short cnt; /* available byte count in buffer */ 2738472Sbrian short type; /* MB_* below */ 2828679Sbrian struct mbuf *next; /* link to next mbuf */ 2928679Sbrian struct mbuf *pnext; /* 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; 366059Samurai int qlen; 376059Samurai}; 386059Samurai 3946828Sbrian#define MBUF_CTOP(bp) \ 4046828Sbrian ((bp) ? (u_char *)((bp)+1) + (bp)->offset : NULL) 416059Samurai 4246828Sbrian#define CONST_MBUF_CTOP(bp) \ 4346828Sbrian ((bp) ? (const u_char *)((bp)+1) + (bp)->offset : NULL) 4446828Sbrian 456059Samurai#define MB_ASYNC 1 466059Samurai#define MB_FSM 2 4738174Sbrian#define MB_CBCP 3 4838174Sbrian#define MB_HDLCOUT 4 4938174Sbrian#define MB_IPIN 5 5038174Sbrian#define MB_ECHO 6 5138174Sbrian#define MB_LQR 7 5246686Sbrian#define MB_VJCOMP 8 5346686Sbrian#define MB_IPQ 9 5446686Sbrian#define MB_MP 10 5536285Sbrian#define MB_MAX MB_MP 566059Samurai 5736285Sbrianstruct cmdargs; 5836285Sbrian 5936285Sbrianextern int mbuf_Length(struct mbuf *); 6036285Sbrianextern struct mbuf *mbuf_Alloc(int, int); 6136285Sbrianextern struct mbuf *mbuf_FreeSeg(struct mbuf *); 6236285Sbrianextern void mbuf_Free(struct mbuf *); 6346686Sbrianextern void mbuf_Write(struct mbuf *, const void *, size_t); 6446686Sbrianextern struct mbuf *mbuf_Read(struct mbuf *, void *, size_t); 6546686Sbrianextern size_t mbuf_View(struct mbuf *, void *, size_t); 6646686Sbrianextern struct mbuf *mbuf_Prepend(struct mbuf *, const void *, size_t, size_t); 6746686Sbrianextern struct mbuf *mbuf_Truncate(struct mbuf *, size_t); 6836285Sbrianextern void mbuf_Log(void); 6936285Sbrianextern int mbuf_Show(struct cmdargs const *); 7036285Sbrianextern void mbuf_Enqueue(struct mqueue *, struct mbuf *); 7136285Sbrianextern struct mbuf *mbuf_Dequeue(struct mqueue *); 7245103Sbrianextern struct mbuf *mbuf_Contiguous(struct mbuf *); 73