tech-net archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: question about mbuf intialization

On Sep 18, 2013, at 4:43 PM, Iain Hibbert <> wrote:

> On Wed, 18 Sep 2013, Beverly Schwartz wrote:
>> On Sep 18, 2013, at 12:16 PM, Matt Thomas <> 
>> wrote:
>>> On Sep 18, 2013, at 8:33 AM, Beverly Schwartz <> 
>>> wrote:
>>>> Any reason why we can't add
>>>>    m->m_len = 0;
>>>> to m_get, and
>>>>    m->m_pkthdr.len = 0;
>>>> to m_gethdr?
>>> Why not m->m_len = MLEN or MHLEN and m->m_pkthdr.len = MHLEN?
>>> That way you know how much space is left.
>> m_len and m_pkthdr.len report on the data that is there, not on how much
>> space exists.  At initialiation, there is no data, so should be
>> initialized to 0.
> Weeell, it sometimes is the space rather than the data. for example,
> m_copyback() will copy data into the space that is there and then possibly
> extend the chain. if you give it a mbuf with zero data lengths, and ask to
> copy more data? it just adds another mbuf which contains all the data..

When m_copyback extends the chain, it sets m_len in the new mbuf's to the 
amount of data in the mbuf.  m_len is *only* used to indicate how much data is 
within the mbuf itself.  m_pkthdr.len is also adjusted by m_copyback if it has 
to add to the chain.


Home | Main Index | Thread Index | Old Index