From owner-svn-src-projects@FreeBSD.ORG Tue Apr 21 11:44:41 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4863F106564A; Tue, 21 Apr 2009 11:44:41 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 371808FC0A; Tue, 21 Apr 2009 11:44:41 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n3LBifuK085493; Tue, 21 Apr 2009 11:44:41 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n3LBifFv085492; Tue, 21 Apr 2009 11:44:41 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <200904211144.n3LBifFv085492@svn.freebsd.org> From: Rui Paulo Date: Tue, 21 Apr 2009 11:44:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r191355 - projects/mesh11s/sbin/ifconfig X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Apr 2009 11:44:41 -0000 Author: rpaulo Date: Tue Apr 21 11:44:40 2009 New Revision: 191355 URL: http://svn.freebsd.org/changeset/base/191355 Log: Implement meshid command and print the mesh id if the vap is a mesh point. 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 Tue Apr 21 11:42:28 2009 (r191354) +++ projects/mesh11s/sbin/ifconfig/ifieee80211.c Tue Apr 21 11:44:40 2009 (r191355) @@ -571,6 +571,20 @@ set80211ssid(const char *val, int d, int } static void +set80211meshid(const char *val, int d, int s, const struct afswtch *rafp) +{ + int len; + u_int8_t data[IEEE80211_NWID_LEN]; + + memset(data, 0, sizeof(data)); + len = sizeof(data); + if (get_string(val, NULL, data, &len) == NULL) + exit(1); + + set80211(s, IEEE80211_IOC_MESHID, 0, len, data); +} + +static void set80211stationname(const char *val, int d, int s, const struct afswtch *rafp) { int len; @@ -3954,13 +3968,13 @@ printrate(const char *tag, int v, int de } static int -getssid(int s, int ix, void *data, size_t len, int *plen) +getid(int s, int ix, void *data, size_t len, int *plen, int mesh) { struct ieee80211req ireq; (void) memset(&ireq, 0, sizeof(ireq)); (void) strncpy(ireq.i_name, name, sizeof(ireq.i_name)); - ireq.i_type = IEEE80211_IOC_SSID; + ireq.i_type = (!mesh) ? IEEE80211_IOC_SSID : IEEE80211_IOC_MESHID; ireq.i_val = ix; ireq.i_data = data; ireq.i_len = len; @@ -3981,7 +3995,7 @@ ieee80211_status(int s) const struct ieee80211_roamparam *rp; const struct ieee80211_txparam *tp; - if (getssid(s, -1, data, sizeof(data), &len) < 0) { + if (getid(s, -1, data, sizeof(data), &len, 0) < 0) { /* If we can't get the SSID, this isn't an 802.11 device. */ return; } @@ -3996,18 +4010,24 @@ ieee80211_status(int s) gothtconf = 0; gotregdomain = 0; - if (get80211val(s, IEEE80211_IOC_NUMSSIDS, &num) < 0) - num = 0; - printf("\tssid "); - if (num > 1) { - for (i = 0; i < num; i++) { - if (getssid(s, i, data, sizeof(data), &len) >= 0 && len > 0) { - printf(" %d:", i + 1); - print_string(data, len); - } - } - } else + if (opmode == IEEE80211_M_MBSS) { + printf("\tmeshid "); + getid(s, i, data, sizeof(data), &len, 1); print_string(data, len); + } else { + if (get80211val(s, IEEE80211_IOC_NUMSSIDS, &num) < 0) + num = 0; + printf("\tssid "); + if (num > 1) { + for (i = 0; i < num; i++) { + if (getid(s, i, data, sizeof(data), &len, 0) >= 0 && len > 0) { + printf(" %d:", i + 1); + print_string(data, len); + } + } + } else + print_string(data, len); + } c = getcurchan(s); if (c->ic_freq != IEEE80211_CHAN_ANY) { @@ -4812,6 +4832,7 @@ set80211clone_wdslegacy(const char *val, static struct cmd ieee80211_cmds[] = { DEF_CMD_ARG("ssid", set80211ssid), DEF_CMD_ARG("nwid", set80211ssid), + DEF_CMD_ARG("meshid", set80211meshid), DEF_CMD_ARG("stationname", set80211stationname), DEF_CMD_ARG("station", set80211stationname), /* BSD/OS */ DEF_CMD_ARG("channel", set80211channel),