Subject: Re: icmp patches
To: None <christos@zoulas.com>
From: YAMAMOTO Takashi <yamt@mwd.biglobe.ne.jp>
List: tech-net
Date: 07/10/2005 01:13:00
> I ported the icmp patches from OpenBSD that fix the problems described in:
> 
>         http://www.gont.com.ar/drafts/icmp-attacks-against-tcp.html
> 
> Please let me know what you think.

why optional?

> +		if (SEQ_LT(seq, tp->snd_una) || SEQ_GEQ(seq, tp->snd_max))
> +			return NULL;

is this PRC_MSGSIZE-specific?

> @@ -232,6 +233,32 @@
>  		splx(s);
>  		return;
>  	}
> +#ifdef STRICT_ICMP
> +	if ((tp->t_flags & TF_PMTUD_PEND) && tp->t_inpcb &&
> +	    SEQ_GEQ(tp->t_pmtud_th_seq, tp->snd_una) &&
> +	    SEQ_LT(tp->t_pmtud_th_seq, (int)(tp->snd_una + tp->t_ourmss))) {
> +		extern struct sockaddr_in icmpsrc;
> +		struct icmp icmp;

it's in tcp_delack(), while openbsd does this in tcp_timer_rexmt().
is it intended?

YAMAMOTO Takashi