summaryrefslogtreecommitdiffstats
path: root/sys/net80211/ieee80211_mesh.c
diff options
context:
space:
mode:
authormonthadar <monthadar@FreeBSD.org>2012-05-01 16:14:18 +0000
committermonthadar <monthadar@FreeBSD.org>2012-05-01 16:14:18 +0000
commit973bb2517d3400b57af72d6e6a3c6b603751829a (patch)
treeceb9e922b4f5f49f32194fa170b8f672d4677ede /sys/net80211/ieee80211_mesh.c
parent72d34b4c264e31156d8cd6ff27265e0c4fc978ae (diff)
downloadFreeBSD-src-973bb2517d3400b57af72d6e6a3c6b603751829a.zip
FreeBSD-src-973bb2517d3400b57af72d6e6a3c6b603751829a.tar.gz
Net80211s update: Mesh Gate Announcement and removal of Portal Announcement.
* Renamed IEEE80211_ELEMID_MESHPANN to IEEE80211_ELEMID_MESHGANN according to amendment; * Added IEEE80211_IOC_MESH_GATE that controls whether Mesh Gate Announcement is activated or not; * Renamed all flags from Portal to Gate in HWMP frames; * Removed IEEE80211_ACTION_MESHPANN enum cause its part of the Mesh Action category now as per amendment; * Renamed IEEE80211_MESHFLAGS_PORTAL to IEEE80211_MESHFLAGS_GATE in ieee80211_mesh_state flags; * Modified ieee80211_hwmp.c/ieee80211_mesh.c to use new GATE flags; Approved by: adrian
Diffstat (limited to 'sys/net80211/ieee80211_mesh.c')
-rw-r--r--sys/net80211/ieee80211_mesh.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/sys/net80211/ieee80211_mesh.c b/sys/net80211/ieee80211_mesh.c
index 3cc0d3e..eaa6dcd 100644
--- a/sys/net80211/ieee80211_mesh.c
+++ b/sys/net80211/ieee80211_mesh.c
@@ -1262,7 +1262,7 @@ mesh_recv_group_data(struct ieee80211vap *vap, struct mbuf *m,
* This happens by delivering the packet, and a bridge
* will sent it on another port member.
*/
- if (ms->ms_flags & IEEE80211_MESHFLAGS_PORTAL &&
+ if (ms->ms_flags & IEEE80211_MESHFLAGS_GATE &&
ms->ms_flags & IEEE80211_MESHFLAGS_FWD)
IEEE80211_NOTE_MAC(vap, IEEE80211_MSG_MESH,
MC01(mc)->mc_addr4, "%s",
@@ -2768,8 +2768,8 @@ ieee80211_add_meshconf(uint8_t *frm, struct ieee80211vap *vap)
/* NB: set the number of neighbors before the rest */
*frm = (ms->ms_neighbors > IEEE80211_MESH_MAX_NEIGHBORS ?
IEEE80211_MESH_MAX_NEIGHBORS : ms->ms_neighbors) << 1;
- if (ms->ms_flags & IEEE80211_MESHFLAGS_PORTAL)
- *frm |= IEEE80211_MESHCONF_FORM_MP;
+ if (ms->ms_flags & IEEE80211_MESHFLAGS_GATE)
+ *frm |= IEEE80211_MESHCONF_FORM_GATE;
frm += 1;
caps = 0;
if (ms->ms_flags & IEEE80211_MESHFLAGS_AP)
@@ -2961,6 +2961,9 @@ mesh_ioctl_get80211(struct ieee80211vap *vap, struct ieee80211req *ireq)
case IEEE80211_IOC_MESH_FWRD:
ireq->i_val = (ms->ms_flags & IEEE80211_MESHFLAGS_FWD) != 0;
break;
+ case IEEE80211_IOC_MESH_GATE:
+ ireq->i_val = (ms->ms_flags & IEEE80211_MESHFLAGS_GATE) != 0;
+ break;
case IEEE80211_IOC_MESH_TTL:
ireq->i_val = ms->ms_ttl;
break;
@@ -3076,6 +3079,12 @@ mesh_ioctl_set80211(struct ieee80211vap *vap, struct ieee80211req *ireq)
else
ms->ms_flags &= ~IEEE80211_MESHFLAGS_FWD;
break;
+ case IEEE80211_IOC_MESH_GATE:
+ if (ireq->i_val)
+ ms->ms_flags |= IEEE80211_MESHFLAGS_GATE;
+ else
+ ms->ms_flags &= ~IEEE80211_MESHFLAGS_GATE;
+ break;
case IEEE80211_IOC_MESH_TTL:
ms->ms_ttl = (uint8_t) ireq->i_val;
break;
OpenPOWER on IntegriCloud