svn commit: r195047 - projects/mesh11s/sys/net80211

Rui Paulo rpaulo at FreeBSD.org
Fri Jun 26 11:04:44 UTC 2009


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;


More information about the svn-src-projects mailing list