Fix total IP header length in forwarded TCP packets
When forwarding TCP packets, the internal tcpiphdr struct length was wrongly used inside the IP header. This commit changes the behaviour to what is used by tcp_output.c, using the correct full IP header + payload length. Signed-off-by: Sjors Gielen <sjors@sjorsgielen.nl> Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
This commit is contained in:
parent
7d8246960e
commit
2e30230aa9
@ -204,7 +204,7 @@ tcp_respond(struct tcpcb *tp, struct tcpiphdr *ti, struct mbuf *m,
|
||||
m->m_len -= sizeof(struct tcpiphdr) - sizeof(struct tcphdr)
|
||||
- sizeof(struct ip);
|
||||
ip = mtod(m, struct ip *);
|
||||
ip->ip_len = tlen;
|
||||
ip->ip_len = m->m_len;
|
||||
ip->ip_dst = tcpiph_save.ti_dst;
|
||||
ip->ip_src = tcpiph_save.ti_src;
|
||||
ip->ip_p = tcpiph_save.ti_pr;
|
||||
@ -224,7 +224,7 @@ tcp_respond(struct tcpcb *tp, struct tcpiphdr *ti, struct mbuf *m,
|
||||
m->m_len -= sizeof(struct tcpiphdr) - sizeof(struct tcphdr)
|
||||
- sizeof(struct ip6);
|
||||
ip6 = mtod(m, struct ip6 *);
|
||||
ip6->ip_pl = tlen;
|
||||
ip6->ip_pl = tcpiph_save.ti_len;
|
||||
ip6->ip_dst = tcpiph_save.ti_dst6;
|
||||
ip6->ip_src = tcpiph_save.ti_src6;
|
||||
ip6->ip_nh = tcpiph_save.ti_nh6;
|
||||
|
Loading…
Reference in New Issue
Block a user