Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 26 Jun 2009 11:04:43 +0000 (UTC)
From:      Rui Paulo <rpaulo@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r195047 - projects/mesh11s/sys/net80211
Message-ID:  <200906261104.n5QB4hqT084440@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: rpaulo
Date: Fri Jun 26 11:04:43 2009
New Revision: 195047
URL: http://svn.freebsd.org/changeset/base/195047

Log:
  Fixed a bug caused by incorrect parsion of peer link action frames.
  
  Sponsored by:	The FreeBSD Foundation

Modified:
  projects/mesh11s/sys/net80211/ieee80211_mesh.c

Modified: projects/mesh11s/sys/net80211/ieee80211_mesh.c
==============================================================================
--- projects/mesh11s/sys/net80211/ieee80211_mesh.c	Fri Jun 26 10:23:17 2009	(r195046)
+++ projects/mesh11s/sys/net80211/ieee80211_mesh.c	Fri Jun 26 11:04:43 2009	(r195047)
@@ -873,10 +873,19 @@ mesh_recv_action(struct ieee80211_node *
 				meshpeer = (struct ieee80211_meshpeer_ie *) frm;
 				meshpeer->peer_llinkid =
 				    LE_READ_2(&meshpeer->peer_llinkid);
-				meshpeer->peer_linkid =
-				    LE_READ_2(&meshpeer->peer_linkid);
-				meshpeer->peer_rcode =
-				    LE_READ_2(&meshpeer->peer_rcode);
+				/* NB: peer link ID is opt on these frames */
+				if (meshpeer->peer_subtype ==
+				    IEEE80211_MESH_PEER_LINK_CLOSE &&
+				    meshpeer->peer_len == 5) {
+					meshpeer->peer_rcode =
+					    LE_READ_2(&meshpeer->peer_linkid);
+					meshpeer->peer_linkid = 0;
+				} else {
+					meshpeer->peer_linkid =
+					    LE_READ_2(&meshpeer->peer_linkid);
+					meshpeer->peer_rcode =
+					    LE_READ_2(&meshpeer->peer_rcode);
+				}
 				break;
 			}
 			frm += frm[1] + 2;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200906261104.n5QB4hqT084440>