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>