diff options
author | monthadar <monthadar@FreeBSD.org> | 2012-05-01 16:00:31 +0000 |
---|---|---|
committer | monthadar <monthadar@FreeBSD.org> | 2012-05-01 16:00:31 +0000 |
commit | 01443cbc253e17eeadf6a1f879f0ad02ae79203f (patch) | |
tree | 0a416b15967fb5e09bc4931f213ca4216c4cd5f6 /sys/net80211/ieee80211_mesh.c | |
parent | c2bc330cbba4560b85974b6849d90b5e67559a84 (diff) | |
download | FreeBSD-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.c | 14 |
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)); |