summaryrefslogtreecommitdiffstats
path: root/sys/net80211/ieee80211_mesh.c
diff options
context:
space:
mode:
authormonthadar <monthadar@FreeBSD.org>2012-05-01 16:00:31 +0000
committermonthadar <monthadar@FreeBSD.org>2012-05-01 16:00:31 +0000
commit01443cbc253e17eeadf6a1f879f0ad02ae79203f (patch)
tree0a416b15967fb5e09bc4931f213ca4216c4cd5f6 /sys/net80211/ieee80211_mesh.c
parentc2bc330cbba4560b85974b6849d90b5e67559a84 (diff)
downloadFreeBSD-src-01443cbc253e17eeadf6a1f879f0ad02ae79203f.zip
FreeBSD-src-01443cbc253e17eeadf6a1f879f0ad02ae79203f.tar.gz
* MeshForwarding update mesh_recv_indiv_data_to_fwrd to silently discard
unknown meshDA instead of panic, which is allowed per amendment spec; Approved by: adrian
Diffstat (limited to 'sys/net80211/ieee80211_mesh.c')
-rw-r--r--sys/net80211/ieee80211_mesh.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/sys/net80211/ieee80211_mesh.c b/sys/net80211/ieee80211_mesh.c
index 036d01d..ff9abe1 100644
--- a/sys/net80211/ieee80211_mesh.c
+++ b/sys/net80211/ieee80211_mesh.c
@@ -1137,7 +1137,19 @@ mesh_recv_indiv_data_to_fwrd(struct ieee80211vap *vap, struct mbuf *m,
/* set lifetime of addr3 (meshDA) to initial value */
rt_meshda = ieee80211_mesh_rt_find(vap, qwh->i_addr3);
- KASSERT(rt_meshda != NULL, ("no route"));
+ if (rt_meshda == NULL) {
+ IEEE80211_NOTE_MAC(vap, IEEE80211_MSG_MESH, qwh->i_addr2,
+ "no route to meshDA(%6D)", qwh->i_addr3, ":");
+ /*
+ * [Optional] any of the following three actions:
+ * o silently discard [X]
+ * o trigger a path discovery [ ]
+ * o inform TA that meshDA is unknown. [ ]
+ */
+ /* XXX: stats */
+ return (-1);
+ }
+
ieee80211_mesh_rt_update(rt_meshda, ticks_to_msecs(
ms->ms_ppath->mpp_inact));
OpenPOWER on IntegriCloud