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

Rui Paulo rpaulo at FreeBSD.org
Wed Jul 8 11:22:06 UTC 2009


Author: rpaulo
Date: Wed Jul  8 11:22:04 2009
New Revision: 195446
URL: http://svn.freebsd.org/changeset/base/195446

Log:
  First try at stablizing mesh api/abi.
  
  Sponsored by:	The FreeBSD Foundation

Modified:
  projects/mesh11s/sys/net80211/ieee80211_mesh.c
  projects/mesh11s/sys/net80211/ieee80211_mesh.h

Modified: projects/mesh11s/sys/net80211/ieee80211_mesh.c
==============================================================================
--- projects/mesh11s/sys/net80211/ieee80211_mesh.c	Wed Jul  8 11:21:07 2009	(r195445)
+++ projects/mesh11s/sys/net80211/ieee80211_mesh.c	Wed Jul  8 11:22:04 2009	(r195446)
@@ -2383,6 +2383,7 @@ mesh_ioctl_get80211(struct ieee80211vap 
 	struct ieee80211_mesh_state *ms = vap->iv_mesh;
 	uint8_t tmpmeshid[IEEE80211_NWID_LEN];
 	struct ieee80211_mesh_route *rt;
+	struct ieee80211ireq_mesh_route *imr;
 	size_t len, off;
 	uint8_t *p;
 	int error;
@@ -2412,10 +2413,10 @@ mesh_ioctl_get80211(struct ieee80211vap 
 			len = 0;
 			MESH_RT_LOCK(ms);
 			TAILQ_FOREACH(rt, &ms->ms_routes, rt_next) {
-				len += sizeof(*rt);
+				len += sizeof(*imr);
 			}
 			MESH_RT_UNLOCK(ms);
-			if (len > ireq->i_len || ireq->i_len < sizeof(*rt)) {
+			if (len > ireq->i_len || ireq->i_len < sizeof(*imr)) {
 				ireq->i_len = len;
 				return ENOMEM;
 			}
@@ -2428,8 +2429,15 @@ mesh_ioctl_get80211(struct ieee80211vap 
 			TAILQ_FOREACH(rt, &ms->ms_routes, rt_next) {
 				if (off >= len)
 					break;
-				memcpy(p + off, rt, sizeof(*rt));
-				off += sizeof(*rt);
+				irt = (struct ieee80211req_mesh_route *)(p + off);
+				IEEE80211_ADDR_COPY(imr->imr_dest,
+				    rt->rt_dest);
+				IEEE80211_ADDR_COPY(imr->imr_nexthop,
+				    rt->rt_nexthop);
+				imr->imr_metric = rt->rt_metric;
+				imr->imr_nhops = rt->rt_nhops;
+				imr->imr_lifetime = rt->rt_lifetime;
+				off += sizeof(*imr);
 			}
 			MESH_RT_UNLOCK(ms);
 			error = copyout(p, (uint8_t *)ireq->i_data,

Modified: projects/mesh11s/sys/net80211/ieee80211_mesh.h
==============================================================================
--- projects/mesh11s/sys/net80211/ieee80211_mesh.h	Wed Jul  8 11:21:07 2009	(r195445)
+++ projects/mesh11s/sys/net80211/ieee80211_mesh.h	Wed Jul  8 11:22:04 2009	(r195446)
@@ -372,7 +372,11 @@ struct ieee80211_meshcntl_ae11 {
 } __packed;
 
 struct ieee80211req_mesh_routes {
-/* XXX TBD */	
+	uint8_t			imr_dest[IEEE80211_ADDR_LEN];
+	uint8_t			imr_nexthop[IEEE80211_ADDR_LEN];
+	uint32_t		imr_metric;
+	uint16_t		imr_nhops;
+	uint32_t		imr_lifetime;
 };
 
 #ifdef _KERNEL


More information about the svn-src-projects mailing list