Subject: m_aux_*
To: Guenther Grau <Guenther.Grau@marconicomms.com>
From: None <itojun@iijlab.net>
List: tech-net
Date: 03/02/2000 22:34:55
>>take caution if you use it for keeping some data item for long period
>>of time - use extra caution on M_PREPEND() or m_adj(), as they may result
>>in loss of m->m_pkthdr.aux pointer (and mbuf leak).
>What does this mean: take caution if you use it for a long
>period? What is a long period? What happens if I someone
>doesn't follow this advice?
>And in which case does use of m_adj/M_PREPEND
>result in loss of said pointer?
sorry it wasn't clear enough, it just mean that I did not make
extensive test to pass mbuf chain (with aux pointer filled in)
through multiple protocol handlers.
For example, suppose you wrote a code to:
- attach mbuf to aux pointer in ip_input
- let the mbuf go through IPsec header processing, and
(this is "long period")
- grab the aux pointer in tcp_input
IPsec protocol handler may contribute to lossage of aux pointer.
I think I took cautoin on m_copy and several other occasions so that
there will be no lossage of aux pointer. howeer, I did not made
extensive tests myself, there can be loss of the pointer, and
may result in mbuf memory leak.
currently, ipsec is using m->m_pkthdr.aux. however, it does not
travel that long path. I made tests for ipsec code and there was
no memory leak.
itojun