Date: Fri, 18 Jan 2002 22:10:01 -0500 From: Bosko Milekic <bmilekic@technokratis.com> To: Skye Poier <skye@ffwd.cx> Cc: hackers@FreeBSD.ORG Subject: Re: mbuf chains Message-ID: <20020118221001.A61874@technokratis.com> In-Reply-To: <20020118164617.L99893@ffwd.cx>; from skye@ffwd.cx on Fri, Jan 18, 2002 at 04:46:18PM -0800 References: <20020118164617.L99893@ffwd.cx>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Jan 18, 2002 at 04:46:18PM -0800, Skye Poier wrote: > What are the rules around mbuf chain construction? > (I've read man mbuf, doesnt go into much detail) > > In particular, I'm assuming: > - all mbufs must be same type > - the head mbuf must have M_PKTHDR set > - the head mbuf.m_pkthdr.len must be the len of the entire chain > Anything to add? Take a look at the mchain interface for a nice way to deal with mbufs in certain cases: src/sys/kern/subr_mchain.c The `rules' you state are good advice but are not _technically_ obligatory in the most general case. In other words, it is "technically" up to the implementor to decide on how to chain mbufs and what their meaning is. > My confusion is around splitting/concatenating - > > When splitting an mbuf chain, the two resultant chains must be as above > (heads have M_PKTHDR and mbuf.m_pkthdr.len set) right? > > When concatenating chains, what do you do with the M_PKTHDR that is now > in the middle of the chain? m_cat doesn't seem very sophisticated in > this regard. And of course update head mbuf.m_pkthdr.len Again, it all depends on what you're doing. Typically a packet consists of a chain with a head mbuf that is M_PKTHDR and contains the additional information. You don't normally do what you wrote, but again, it depends on the implementation, ultimately. > Thanks > Skye -- Bosko Milekic bmilekic@FreeBSD.org To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020118221001.A61874>