svn commit: r195144 - projects/mesh11s/sys/net80211
Rui Paulo
rpaulo at FreeBSD.org
Sun Jun 28 17:22:07 UTC 2009
Author: rpaulo
Date: Sun Jun 28 17:22:07 2009
New Revision: 195144
URL: http://svn.freebsd.org/changeset/base/195144
Log:
Limit mesh_generateid() to 4 iterations and drop a peer link if we can't
generate random values.
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 Sun Jun 28 17:15:17 2009 (r195143)
+++ projects/mesh11s/sys/net80211/ieee80211_mesh.c Sun Jun 28 17:22:07 2009 (r195144)
@@ -304,13 +304,14 @@ mesh_checkid(void *arg, struct ieee80211
static uint32_t
mesh_generateid(struct ieee80211vap *vap)
{
+ int maxiter = 4;
uint16_t r;
- /* XXX max iterations? */
do {
get_random_bytes(&r, 2);
ieee80211_iterate_nodes(&vap->iv_ic->ic_sta, mesh_checkid, &r);
- } while (r == 0);
+ maxiter--;
+ } while (r == 0 && maxiter > 0);
return r;
}
@@ -734,6 +735,8 @@ mesh_recv_mgmt(struct ieee80211_node *ni
union ieee80211_send_action_args sargs;
ni->ni_mlpid = mesh_generateid(vap);
+ if (ni->ni_mlpid == 0)
+ return;
mesh_linkchange(ni, IEEE80211_NODE_MESH_OPENSNT);
sargs.arg[0] = ni->ni_mlpid;
ieee80211_send_action(ni,
@@ -988,6 +991,8 @@ mesh_recv_action(struct ieee80211_node *
IEEE80211_NODE_MESH_OPENRCV);
ni->ni_mllid = meshpeer->peer_llinkid;
ni->ni_mlpid = mesh_generateid(vap);
+ if (ni->ni_mlpid == 0)
+ return;
sargs.arg[0] = ni->ni_mlpid;
/* Announce we're open too... */
ieee80211_send_action(ni,
More information about the svn-src-projects
mailing list