diff options
author | silby <silby@FreeBSD.org> | 2002-06-14 02:36:34 +0000 |
---|---|---|
committer | silby <silby@FreeBSD.org> | 2002-06-14 02:36:34 +0000 |
commit | acb0745bfa68988b8d0cde904671fa3ec632f361 (patch) | |
tree | 81478ca710ba7576d2156faab17630cfd30302b1 /sys/netinet/tcp_syncache.c | |
parent | b7f83f53f9f626f04e3bc752801604713555442e (diff) | |
download | FreeBSD-src-acb0745bfa68988b8d0cde904671fa3ec632f361.zip FreeBSD-src-acb0745bfa68988b8d0cde904671fa3ec632f361.tar.gz |
Ensure that the syn cache's syn-ack packets contain the same
ip_tos, ip_ttl, and DF bits as all other tcp packets.
PR: 39141
MFC after: 2 weeks
Diffstat (limited to 'sys/netinet/tcp_syncache.c')
-rw-r--r-- | sys/netinet/tcp_syncache.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/sys/netinet/tcp_syncache.c b/sys/netinet/tcp_syncache.c index 40defbe..e4c467e 100644 --- a/sys/netinet/tcp_syncache.c +++ b/sys/netinet/tcp_syncache.c @@ -1128,6 +1128,24 @@ syncache_respond(sc, m) th = (struct tcphdr *)(ip + 1); } + + ip->ip_ttl = sc->sc_tp->t_inpcb->inp_ip_ttl; /* XXX */ + ip->ip_tos = sc->sc_tp->t_inpcb->inp_ip_tos; /* XXX */ + + /* + * See if we should do MTU discovery. We do it only if the following + * are true: + * 1) we have a valid route to the destination + * 2) the MTU is not locked (if it is, then discovery has been + * disabled) + */ + if (path_mtu_discovery + && (rt != NULL) + && rt->rt_flags & RTF_UP + && !(rt->rt_rmx.rmx_locks & RTV_MTU)) { + ip->ip_off |= IP_DF; + } + th->th_sport = sc->sc_inc.inc_lport; th->th_dport = sc->sc_inc.inc_fport; |