Date: Wed, 8 Jul 2009 16:25:47 +0000 (UTC) From: Rui Paulo <rpaulo@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r195467 - projects/mesh11s/sbin/ifconfig Message-ID: <200907081625.n68GPlwl056633@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200907081625.n68GPlwl056633>