Date: Wed, 5 Sep 2001 13:59:58 -0700 (PDT) From: Julian Elischer <julian@elischer.org> To: "Ramasubramanian Ramamoorthy (EXT-NRC/Boston)" <EXT-Ramamoorthy.Ramasubramanian@nokia.com> Cc: freebsd-net@freebsd.org Subject: RE: Reg. mbuf structure Message-ID: <Pine.BSF.4.21.0109051348570.24154-100000@InterJet.elischer.org> In-Reply-To: <B9CFA6CE8FFDD211A1FB0008C7894E4604559011@bseis01nok>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 5 Sep 2001, Ramasubramanian Ramamoorthy (EXT-NRC/Boston) wrote:
> Hi,
> I had mailed regarding extracting the same data from the skbuff
> structure in Linux and the mbuf structure in BSD. I am calculating the
> checksum in two machines, one running BSD and the other running Red Hat.
> I need to calculate the checksum at both the machines, for which I
> should be extracting the same data from these structures and send that
> to the algorithm, which calculates the checksum.
>
> Can you tell me how we can confirm that we are extracting the same data
> from both these structures. It would be of great help, if anybody could
> help me in this regard soon.
>
Do you know how much data you are supposed to be extracting?
Do you have an IP header or something on the front you want to
ignore?
I assume this is a kernel module.
Here is a data extraction function from kern/uipc_mbuf.c
You can modify this function to checksum intead of copying..
or since this is always in the kernel, you could just call it.
/*
* Copy data from an mbuf chain starting "off" bytes from the beginning,
* continuing for "len" bytes, into the indicated buffer.
*/
void
m_copydata(m, off, len, cp)
register struct mbuf *m;
register int off;
register int len;
caddr_t cp;
{
register unsigned count;
while (off > 0) {
if (off < m->m_len)
break;
off -= m->m_len;
m = m->m_next;
}
while (len > 0) {
count = min(m->m_len - off, len);
bcopy(mtod(m, caddr_t) + off, cp, count);
len -= count;
cp += count;
off = 0;
m = m->m_next;
}
}
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0109051348570.24154-100000>
