From owner-svn-src-projects@FreeBSD.ORG Sun Jun 21 17:17:46 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 CDF9E1065670; Sun, 21 Jun 2009 17:17:46 +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 A21858FC15; Sun, 21 Jun 2009 17:17:46 +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 n5LHHkVH013410; Sun, 21 Jun 2009 17:17:46 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5LHHkst013408; Sun, 21 Jun 2009 17:17:46 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <200906211717.n5LHHkst013408@svn.freebsd.org> From: Rui Paulo Date: Sun, 21 Jun 2009 17:17:46 +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: r194597 - 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: Sun, 21 Jun 2009 17:17:47 -0000 Author: rpaulo Date: Sun Jun 21 17:17:46 2009 New Revision: 194597 URL: http://svn.freebsd.org/changeset/base/194597 Log: Implement hwmp:add, hwmp:del and hwmp:flush commands. 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 Sun Jun 21 17:06:05 2009 (r194596) +++ projects/mesh11s/sbin/ifconfig/ifieee80211.c Sun Jun 21 17:17:46 2009 (r194597) @@ -1280,6 +1280,44 @@ DECL_CMD_FUNC(set80211maccmd, val, d) } static void +set80211hwmpmac(int s, int req, const char *val) +{ + char *temp; + struct sockaddr_dl sdl; + + temp = malloc(strlen(val) + 2); /* ':' and '\0' */ + if (temp == NULL) + errx(1, "malloc failed"); + temp[0] = ':'; + strcpy(temp + 1, val); + sdl.sdl_len = sizeof(sdl); + link_addr(temp, &sdl); + free(temp); + if (sdl.sdl_alen != IEEE80211_ADDR_LEN) + errx(1, "malformed link-level address"); + set80211(s, IEEE80211_IOC_HWMP_CMD, req, + IEEE80211_ADDR_LEN, LLADDR(&sdl)); +} + +static +DECL_CMD_FUNC(set80211addhwmp, val, d) +{ + set80211hwmpmac(s, IEEE80211_HWMP_CMD_ADD, val); +} + +static +DECL_CMD_FUNC(set80211delhwmp, val, d) +{ + set80211hwmpmac(s, IEEE80211_HWMP_CMD_DELETE, val); +} + +static +DECL_CMD_FUNC(set80211hwmpcmd, val, d) +{ + set80211(s, IEEE80211_IOC_HWMP_CMD, d, 0, NULL); +} + +static void set80211pureg(const char *val, int d, int s, const struct afswtch *rafp) { set80211(s, IEEE80211_IOC_PUREG, d, 0, NULL); @@ -3302,7 +3340,6 @@ list_mesh(int s) struct ieee80211req_sta_req req; uint8_t buf[24*1024]; } u; - enum ieee80211_opmode opmode = get80211opmode(s); const uint8_t *cp; int len; @@ -3903,7 +3940,8 @@ list_hwmp(int s) (void) memset(&ireq, 0, sizeof(ireq)); (void) strncpy(ireq.i_name, name, sizeof(ireq.i_name)); - ireq.i_type = IEEE80211_IOC_HWMP_TABLE; + ireq.i_type = IEEE80211_IOC_HWMP_CMD; + ireq.i_val = IEEE80211_HWMP_CMD_LIST; ireq.i_data = &routes; ireq.i_len = sizeof(routes); if (ioctl(s, SIOCG80211, &ireq) < 0) @@ -5059,6 +5097,9 @@ static struct cmd ieee80211_cmds[] = { DEF_CMD_ARG("mac:add", set80211addmac), DEF_CMD_ARG("mac:del", set80211delmac), DEF_CMD_ARG("mac:kick", set80211kickmac), + DEF_CMD("hwmp:flush", IEEE80211_HWMP_CMD_FLUSH, set80211hwmpcmd), + DEF_CMD_ARG("hwmp:add", set80211addhwmp), + DEF_CMD_ARG("hwmp:del", set80211delhwmp), DEF_CMD("pureg", 1, set80211pureg), DEF_CMD("-pureg", 0, set80211pureg), DEF_CMD("ff", 1, set80211fastframes),