Subject: Re: tcp/udp vector h/w checksum
To: None <heas@shrubbery.net>
From: YAMAMOTO Takashi <yamt@mwd.biglobe.ne.jp>
List: tech-net
Date: 02/06/2005 19:34:44
hi,
> > > +#include <netinet/tcp.h>
> > > +#include <netinet/udp.h>
> >
> > why you need these includes? isn't m_pkthdr.csum_data enough?
>
> Aren't these necessary for struct tcphdr and udphdr?
i think all you need is offset of th_sum (or uh_sum),
which is stored in csum_data.
> > > + th = (struct tcphdr *) (mtod(m, caddr_t) +
> > > + hlen);
> > > + th->th_sum = in_cksum_phdr(ip->ip_src.s_addr,
> >
> > i don't think you can assume m->m_len is large enough.
>
> I thought that might not be a good assumption. so, I have to use
> m_copyback. Is that right?
yes. see in_delayed_cksum.
YAMAMOTO Takashi