Subject: Re: CVS commit: syssrc/sys/net
To: Atsushi Onoe <onoe@sm.sony.co.jp>
From: Darren Reed <darrenr@reed.wattle.id.au>
List: tech-net
Date: 09/29/2002 17:51:40
In some email I received from Atsushi Onoe, sie wrote:
> > Would there be any sense in defining a macro to be used to
> > initialise any 'fake mbuf', so we can centralise exactly
> > what needs to happen to them?
>
> In order to do it, we should specify 'fake mbuf' and assign a mbuf type
> for it. It would be:
> - the contents is volatile and cannot be refered after returning
> the function.
> - the data buffer is read only,
> # Should it be whole mbuf including mbuf header is read only?
> - cannot be freed
If it is "static struct mbuf ...", then you can return the mbuf. The only
thing, in the above list that I would hold true is the last - you cannot
free them. This means you can't safely use things like m_pullup(), etc.
> After thinking these tricks,
They're not tricks, just restrictions...
> I'd rather prefer adding new API to bpf,
> such as,
> void bpf_mtap2(caddr_t bpf, caddr_t hdr, int hdrlen, struct mbuf *m);
> # sorry that I don't have ability in naming.
I'm not sure I like this idea. Or maybe I do. There is no explicit
kernel-only interface for BPF tap, at present, so maybe this could be
it?
> Is there any place other than bpf where 'fake mbuf' is used?
You might use them in userland programs if you want to build test code
for kernel stuff. I can imagine there might be times you want to use
"fake mbufs".
Darren