From owner-p4-projects@FreeBSD.ORG Tue Dec 4 05:32:37 2007 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D3BC316A420; Tue, 4 Dec 2007 05:32:36 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7D1B316A417 for ; Tue, 4 Dec 2007 05:32:36 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 79B7813C45A for ; Tue, 4 Dec 2007 05:32:36 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id lB45WaRe059505 for ; Tue, 4 Dec 2007 05:32:36 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id lB45Wa8w059500 for perforce@freebsd.org; Tue, 4 Dec 2007 05:32:36 GMT (envelope-from sam@freebsd.org) Date: Tue, 4 Dec 2007 05:32:36 GMT Message-Id: <200712040532.lB45Wa8w059500@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Cc: Subject: PERFORCE change 130142 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 04 Dec 2007 05:32:37 -0000 http://perforce.freebsd.org/chv.cgi?CH=130142 Change 130142 by sam@sam_ebb on 2007/12/04 05:32:26 sync w/ vap code Affected files ... .. //depot/projects/vap/usr.sbin/wpa/wpa_supplicant/driver_freebsd.c#3 edit Differences ... ==== //depot/projects/vap/usr.sbin/wpa/wpa_supplicant/driver_freebsd.c#3 (text+ko) ==== @@ -32,8 +32,6 @@ #include #include -#include -#include #include struct wpa_driver_bsd_data { @@ -192,7 +190,21 @@ wpa_driver_bsd_set_wpa_ie(struct wpa_driver_bsd_data *drv, const char *wpa_ie, size_t wpa_ie_len) { - return set80211var(drv, IEEE80211_IOC_OPTIE, wpa_ie, wpa_ie_len); + struct ieee80211req ireq; + + memset(&ireq, 0, sizeof(ireq)); + strncpy(ireq.i_name, drv->ifname, IFNAMSIZ); + ireq.i_type = IEEE80211_IOC_APPIE; + ireq.i_val = IEEE80211_APPIE_WPA; + ireq.i_len = wpa_ie_len; + ireq.i_data = (void *) wpa_ie; + if (ioctl(drv->sock, SIOCS80211, &ireq) < 0) { + fprintf(stderr, + "ioctl[IEEE80211_IOC_APPIE:IEEE80211_APPIE_WPA]: %s\n", + strerror(errno)); + return -1; + } + return 0; } static int @@ -441,18 +453,27 @@ wpa_driver_bsd_scan(void *priv, const u8 *ssid, size_t ssid_len) { struct wpa_driver_bsd_data *drv = priv; + struct ieee80211_scan_req sr; int flags; + /* XXX not true but easiest to perpetuate the myth */ /* NB: interface must be marked UP to do a scan */ if (getifflags(drv, &flags) != 0 || setifflags(drv, flags | IFF_UP) != 0) return -1; - /* set desired ssid before scan */ - if (wpa_driver_bsd_set_ssid(drv, ssid, ssid_len) < 0) - return -1; + memset(&sr, 0, sizeof(sr)); + sr.sr_flags = IEEE80211_IOC_SCAN_ACTIVE + | IEEE80211_IOC_SCAN_ONCE + | IEEE80211_IOC_SCAN_NOPICK + ; + sr.sr_duration = IEEE80211_IOC_SCAN_FOREVER; + sr.sr_nssid = 1; + /* XXX ssid_len must be <= IEEE80211_NWID_LEN */ + memcpy(sr.sr_ssid[0].ssid, ssid, ssid_len); + sr.sr_ssid[0].len = ssid_len; /* NB: net80211 delivers a scan complete event so no need to poll */ - return set80211param(drv, IEEE80211_IOC_SCAN_REQ, 0); + return set80211var(drv, IEEE80211_IOC_SCAN_REQ, &sr, sizeof(sr)); } #include