From owner-freebsd-net@FreeBSD.ORG Wed Feb 16 19:52:45 2011 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 47AB2106564A for ; Wed, 16 Feb 2011 19:52:45 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-gy0-f182.google.com (mail-gy0-f182.google.com [209.85.160.182]) by mx1.freebsd.org (Postfix) with ESMTP id F2F0A8FC19 for ; Wed, 16 Feb 2011 19:52:44 +0000 (UTC) Received: by gyc15 with SMTP id 15so794226gyc.13 for ; Wed, 16 Feb 2011 11:52:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=nvXVR0vA6t/4uTGu0qB2lzn85NAGOxSwQGv74d1znKA=; b=DL5OU8Yl+4/SMlvK/GqKkzXl1yjwHpt4/eTIMdS8GUzcx56Z2tzNYsMhpv7nspiOos joAaNvWPe7+SyQZsf/E1h3YtoGfXmbZtKTVk7L7Cnwgvih+PFzJsH1oWoTjngjwCeY/L 7sUjFJTIkv4D4EHMuMvkZNgktWIortU6sf9D8= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=HTit0sZ80rdIqRyo0AvjWm9co3ioh5L579s/cOBUbA/rfIjLaXQtzd4yRJGHlS/J/c 4hNjVu/F6E5nj4Kpw9Xhz35F3CbohCDfuxbSXLaydIsWsz2h2BCGcSvbQBJxuOZuqIpt 0GSUrLDi+itje02QUedt3a5bOm+fP8+VQpH88= MIME-Version: 1.0 Received: by 10.151.108.14 with SMTP id k14mr1263836ybm.145.1297885963961; Wed, 16 Feb 2011 11:52:43 -0800 (PST) Sender: adrian.chadd@gmail.com Received: by 10.150.95.13 with HTTP; Wed, 16 Feb 2011 11:52:43 -0800 (PST) In-Reply-To: References: Date: Wed, 16 Feb 2011 14:52:43 -0500 X-Google-Sender-Auth: STVNr2X5Eo_gXU2eHITtZh6YREE Message-ID: From: Adrian Chadd To: Monthadar Al Jaberi Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: freebsd-net@freebsd.org Subject: Re: [ieee80211_hwmp][panic] hwmp_recv_prep(...) X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Feb 2011 19:52:45 -0000 Besides being a potential DoS vector (and thus panicing on anything like that =3D=3D bad idea), what legitimate-but-broken circumstances could cause a node to hear its own announcement? Adrian On 15 February 2011 07:00, Monthadar Al Jaberi wrote: > Hej, > > I found that a panic can be generated when having a couple of > ieee80211s nodes in a line topology with one of them being a ROOT > node. A ping from ROOT in a newly started nodes causes a panic: > panic: ieee80211_mesh_rt_add: adding self to the routing table > KDB: enter: panic > [ thread pid 0 tid 100030 ] > Stopped at =A0 =A0 =A0kdb_enter+0x50: lui =A0 =A0 at,0x804e > db> > > This is because we receive a copy of our own generated > IEEE80211_ELEMID_MESHPREP packet from our neighbor node. > I added check code in the begining of hwmp_recv_prep(...) similar to > the check code found in hwmp_recv_preq(...). Here is a diff output: > > --- freebsd/head/sys/net80211/ieee80211_hwmp.c =A02010-11-03 > 09:29:25.023610380 +0000 > +++ src/head-current/sys/net80211/ieee80211_hwmp.c =A0 =A0 =A02011-02-15 > 10:06:02.526163874 +0000 > @@ -28,7 +28,7 @@ > =A0*/ > =A0#include > =A0#ifdef __FreeBSD__ > -__FBSDID("$FreeBSD$"); > +__FBSDID("$FreeBSD: src/sys/net80211/ieee80211_hwmp.c,v 1.4.2.7.2.1 > 2010/12/21 17:09:25 kensmith Exp $"); > =A0#endif > > =A0/* > @@ -951,6 +951,12 @@ > =A0 =A0 =A0 =A0if (ni =3D=3D vap->iv_bss || > =A0 =A0 =A0 =A0 =A0 =A0ni->ni_mlstate !=3D IEEE80211_NODE_MESH_ESTABLISHE= D) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0return; > + =A0 =A0 =A0 /* > + =A0 =A0 =A0 =A0* Ignore PREPs from us. Could happen because someone for= ward it > + =A0 =A0 =A0 =A0* back to us. > + =A0 =A0 =A0 =A0*/ > + =A0 =A0 =A0 if (IEEE80211_ADDR_EQ(vap->iv_myaddr, prep->prep_targetaddr= )) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 return; > =A0 =A0 =A0 =A0if (!IEEE80211_ADDR_EQ(vap->iv_myaddr, prep->prep_origaddr= ) && > =A0 =A0 =A0 =A0 =A0 =A0!(ms->ms_flags & IEEE80211_MESHFLAGS_FWD)) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0return; > > -- > //Monthadar Al Jaberi > _______________________________________________ > freebsd-net@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-net > To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org" >