Re-commit w/fix:

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 time, make sure that ipv4 specific code (aka all of the above)
is only run in the ipv4 case.
This commit is contained in:
Mike Silbersack 2002-06-14 03:08:05 +00:00
parent 70d2b17029
commit eb5afeba22
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=98204
3 changed files with 18 additions and 3 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

@ -1116,15 +1116,29 @@ syncache_respond(sc, m)
ip = mtod(m, struct ip *);
ip->ip_v = IPVERSION;
ip->ip_hl = sizeof(struct ip) >> 2;
ip->ip_tos = 0;
ip->ip_len = tlen;
ip->ip_id = 0;
ip->ip_off = 0;
ip->ip_ttl = ip_defttl;
ip->ip_sum = 0;
ip->ip_p = IPPROTO_TCP;
ip->ip_src = sc->sc_inc.inc_laddr;
ip->ip_dst = sc->sc_inc.inc_faddr;
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 = (struct tcphdr *)(ip + 1);
}

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;