Yes, I used this copydata function, to extract some data to calculate my checksum. But, how do I send the same extracted data which is contained in skbuff structure in the linux machine? I need to check that the packet what I am sending from the Linux machine to the BSD machine using the checksum that I am generating. I am able to extract data using m_copydata() in BSD. But, I need the same data in Linux for calculating the same checksum, as the algorithms are same at both ends. Thanks, Ram. -----Original Message----- From: ext Julian Elischer [mailto:[EMAIL PROTECTED]] Sent: Wednesday, September 05, 2001 5:00 PM To: Ramasubramanian Ramamoorthy (EXT-NRC/Boston) Cc: [EMAIL PROTECTED] Subject: RE: Reg. mbuf structure 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 [EMAIL PROTECTED] with "unsubscribe freebsd-net" in the body of the message
RE: Reg. mbuf structure
Ramasubramanian Ramamoorthy (EXT-NRC/Boston) Wed, 05 Sep 2001 13:04:57 -0700
- Re: Reg. mbuf structure Kris Kennaway
- Re: Reg. mbuf structure Julian Elischer
- RE: Reg. mbuf structure Ramasubramanian Ramamoorthy (EXT-NRC/Boston)
- RE: Reg. mbuf struct... Julian Elischer
- RE: Reg. mbuf structure Ramasubramanian Ramamoorthy (EXT-NRC/Boston)
- RE: Reg. mbuf struct... Julian Elischer