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
This commit is contained in:
Mike Silbersack 2002-06-14 02:36:34 +00:00
parent 6689fb2bbc
commit 21c3b2fc69
3 changed files with 20 additions and 1 deletions

View File

@ -83,7 +83,7 @@
extern struct mbuf *m_copypack();
#endif
static int path_mtu_discovery = 1;
int path_mtu_discovery = 1;
SYSCTL_INT(_net_inet_tcp, OID_AUTO, path_mtu_discovery, CTLFLAG_RW,
&path_mtu_discovery, 1, "Enable Path MTU Discovery");

View File

@ -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;

View File

@ -432,6 +432,7 @@ extern struct tcpstat tcpstat; /* tcp statistics */
extern int tcp_mssdflt; /* XXX */
extern int tcp_delack_enabled;
extern int tcp_do_newreno;
extern int path_mtu_discovery;
extern int ss_fltsz;
extern int ss_fltsz_local;