svn commit: r195467 - projects/mesh11s/sbin/ifconfig

Rui Paulo rpaulo at FreeBSD.org
Wed Jul 8 16:25:48 UTC 2009


Author: rpaulo
Date: Wed Jul  8 16:25:47 2009
New Revision: 195467
URL: http://svn.freebsd.org/changeset/base/195467

Log:
  Use list sta instead of list mesh to display the neighbors.
  Use list mesh to display the routing table.
  
  Sponsored by:	The FreeBSD Foundation

Modified:
  projects/mesh11s/sbin/ifconfig/ifieee80211.c

Modified: projects/mesh11s/sbin/ifconfig/ifieee80211.c
==============================================================================
--- projects/mesh11s/sbin/ifconfig/ifieee80211.c	Wed Jul  8 16:10:40 2009	(r195466)
+++ projects/mesh11s/sbin/ifconfig/ifieee80211.c	Wed Jul  8 16:25:47 2009	(r195467)
@@ -163,6 +163,7 @@ static void print_channels(int, const st
     int allchans, int verbose);
 static void regdomain_makechannels(struct ieee80211_regdomain_req *,
     const struct ieee80211_devcaps_req *);
+static const char *mesh_linkstate_string(uint8_t state);
 
 static struct ieee80211req_chaninfo *chaninfo;
 static struct ieee80211_regdomain regdomain;
@@ -3322,18 +3323,32 @@ list_stations(int s)
 
 	getchaninfo(s);
 
-	printf("%-17.17s %4s %4s %4s %4s %4s %6s %6s %4s %-7s\n"
-		, "ADDR"
-		, "AID"
-		, "CHAN"
-		, "RATE"
-		, "RSSI"
-		, "IDLE"
-		, "TXSEQ"
-		, "RXSEQ"
-		, "CAPS"
-		, "FLAG"
-	);
+	if (opmode == IEEE80211_M_MBSS)
+		printf("%-17.17s %4s %5s %5s %7s %4s %4s %4s %6s %6s\n"
+			, "ADDR"
+			, "CHAN"
+			, "LOCAL"
+			, "PEER"
+			, "STATE"
+			, "RATE"
+			, "RSSI"
+			, "IDLE"
+			, "TXSEQ"
+			, "RXSEQ"
+		);
+	else 
+		printf("%-17.17s %4s %4s %4s %4s %4s %6s %6s %4s %-7s\n"
+			, "ADDR"
+			, "AID"
+			, "CHAN"
+			, "RATE"
+			, "RSSI"
+			, "IDLE"
+			, "TXSEQ"
+			, "RXSEQ"
+			, "CAPS"
+			, "FLAG"
+		);
 	cp = (const uint8_t *) u.req.info;
 	do {
 		const struct ieee80211req_sta_info *si;
@@ -3341,18 +3356,36 @@ list_stations(int s)
 		si = (const struct ieee80211req_sta_info *) cp;
 		if (si->isi_len < sizeof(*si))
 			break;
-		printf("%s %4u %4d %3dM %4.1f %4d %6d %6d %-4.4s %-7.7s"
-			, ether_ntoa((const struct ether_addr*) si->isi_macaddr)
-			, IEEE80211_AID(si->isi_associd)
-			, ieee80211_mhz2ieee(si->isi_freq, si->isi_flags)
-			, si->isi_txmbps/2
-			, si->isi_rssi/2.
-			, si->isi_inact
-			, gettxseq(si)
-			, getrxseq(si)
-			, getcaps(si->isi_capinfo)
-			, getflags(si->isi_state)
-		);
+		if (opmode == IEEE80211_M_MBSS)
+			printf("%s %4d %5x %5x %7.7s %3dM %4.1f %4d %6d %6d"
+				, ether_ntoa((const struct ether_addr*)
+				    si->isi_macaddr)
+				, ieee80211_mhz2ieee(si->isi_freq,
+				    si->isi_flags)
+				, si->isi_localid
+				, si->isi_peerid
+				, mesh_linkstate_string(si->isi_peerstate)
+				, si->isi_txmbps/2
+				, si->isi_rssi/2.
+				, si->isi_inact
+				, gettxseq(si)
+				, getrxseq(si)
+			);
+		else 
+			printf("%s %4u %4d %3dM %4.1f %4d %6d %6d %-4.4s %-7.7s"
+				, ether_ntoa((const struct ether_addr*)
+				    si->isi_macaddr)
+				, IEEE80211_AID(si->isi_associd)
+				, ieee80211_mhz2ieee(si->isi_freq,
+				    si->isi_flags)
+				, si->isi_txmbps/2
+				, si->isi_rssi/2.
+				, si->isi_inact
+				, gettxseq(si)
+				, getrxseq(si)
+				, getcaps(si->isi_capinfo)
+				, getflags(si->isi_state)
+			);
 		printies(cp + si->isi_ie_off, si->isi_ie_len, 24);
 		printmimo(&si->isi_mimo);
 		printf("\n");
@@ -3382,64 +3415,6 @@ mesh_linkstate_string(uint8_t state)
 #undef N
 }
 
-static void
-list_peers(int s)
-{
-	union {
-		struct ieee80211req_sta_req req;
-		uint8_t buf[24*1024];
-	} u;
-	const uint8_t *cp;
-	int len;
-
-	/* broadcast address =>'s get all stations */
-	(void) memset(u.req.is_u.macaddr, 0xff, IEEE80211_ADDR_LEN);
-	if (get80211len(s, IEEE80211_IOC_STA_INFO, &u, sizeof(u), &len) < 0)
-		errx(1, "unable to get station information");
-	if (len < sizeof(struct ieee80211req_sta_info))
-		return;
-
-	getchaninfo(s);
-
-	printf("%-17.17s %4s %5s %5s %7s %4s %4s %4s %6s %6s\n"
-		, "ADDR"
-		, "CHAN"
-		, "LOCAL"
-		, "PEER"
-		, "STATE"
-		, "RATE"
-		, "RSSI"
-		, "IDLE"
-		, "TXSEQ"
-		, "RXSEQ"
-	);
-	cp = (const uint8_t *) u.req.info;
-	do {
-		const struct ieee80211req_sta_info *si;
-
-		si = (const struct ieee80211req_sta_info *) cp;
-		if (si->isi_len < sizeof(*si))
-			break;
-		printf("%s %4d %5x %5x %7.7s %3dM %4.1f %4d %6d %6d"
-			, ether_ntoa((const struct ether_addr*) si->isi_macaddr)
-			, ieee80211_mhz2ieee(si->isi_freq, si->isi_flags)
-			, si->isi_localid
-			, si->isi_peerid
-			, mesh_linkstate_string(si->isi_peerstate)
-			, si->isi_txmbps/2
-			, si->isi_rssi/2.
-			, si->isi_inact
-			, gettxseq(si)
-			, getrxseq(si)
-		);
-		if (verbose)
-			printies(cp + si->isi_ie_off, si->isi_ie_len, 24);
-		printmimo(&si->isi_mimo);
-		printf("\n");
-		cp += si->isi_len, len -= si->isi_len;
-	} while (len >= sizeof(struct ieee80211req_sta_info));
-}
-
 static const char *
 get_chaninfo(const struct ieee80211_channel *c, int precise,
 	char buf[], size_t bsize)
@@ -4002,23 +3977,15 @@ list_mesh(int s)
 		, "HOPS"
 		, "METRIC"
 		, "LIFETIME");
-#if 0
-		, "SEQ"
-		, "PREQID");
-#endif
 
 	for (i = 0; i < ireq.i_len / sizeof(*routes); i++) {
 		printf("%s ",
 		    ether_ntoa((const struct ether_addr *)routes[i].imr_dest));
-		printf("%s %4u   %4d   %6dn",
+		printf("%s %4u   %4d   %6d\n",
 			ether_ntoa((const struct ether_addr *)
 			    routes[i].imr_nexthop),
 			routes[i].imr_nhops, routes[i].imr_metric,
 			routes[i].imr_lifetime);
-#if 0
-		, routes[i].rt_seq,
-			routes[i].rt_preqid);
-#endif
 	}
 }
 
@@ -4055,8 +4022,6 @@ DECL_CMD_FUNC(set80211list, arg, d)
 		list_regdomain(s, 1);
 	else if (iseq(arg, "countries"))
 		list_countries();
-	else if (iseq(arg, "peers"))
-		list_peers(s);
 	else if (iseq(arg, "mesh"))
 		list_mesh(s);
 	else


More information about the svn-src-projects mailing list