From patchwork Sun Jan 25 14:30:45 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stijn Tintel X-Patchwork-Id: 432513 X-Patchwork-Delegate: nbd@openwrt.org Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from arrakis.dune.hu (arrakis.dune.hu [78.24.191.176]) (using TLSv1.1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 550611401D0 for ; Mon, 26 Jan 2015 01:32:18 +1100 (AEDT) Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP id 3A52428BE56; Sun, 25 Jan 2015 15:29:10 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on arrakis.dune.hu X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00 autolearn=unavailable version=3.3.2 Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP id F3A8228BE0D for ; Sun, 25 Jan 2015 15:28:35 +0100 (CET) X-policyd-weight: using cached result; rate: -7.6 Received: from mail.tintel.eu (mail.tintel.eu [62.213.201.86]) by arrakis.dune.hu (Postfix) with ESMTPS for ; Sun, 25 Jan 2015 15:28:35 +0100 (CET) Received: from localhost (localhost [IPv6:::1]) by mail.tintel.eu (Postfix) with ESMTP id 63F5D2A3477 for ; Sun, 25 Jan 2015 15:30:52 +0100 (CET) Received: from mail.tintel.eu ([IPv6:::1]) by localhost (mail.tintel.eu [IPv6:::1]) (amavisd-new, port 10032) with ESMTP id 16DqRhrjOnyh for ; Sun, 25 Jan 2015 15:30:52 +0100 (CET) Received: from localhost (localhost [IPv6:::1]) by mail.tintel.eu (Postfix) with ESMTP id E2A732A3473 for ; Sun, 25 Jan 2015 15:30:51 +0100 (CET) X-Virus-Scanned: amavisd-new at mail.tintel.eu Received: from mail.tintel.eu ([IPv6:::1]) by localhost (mail.tintel.eu [IPv6:::1]) (amavisd-new, port 10026) with ESMTP id r6Vv62PmOUj2 for ; Sun, 25 Jan 2015 15:30:51 +0100 (CET) Received: from taz.st-esk.be.tintel.eu (unknown [IPv6:2a02:1811:80:50:12bf:48ff:fed5:44b8]) by mail.tintel.eu (Postfix) with SMTP id B65DA2A3477 for ; Sun, 25 Jan 2015 15:30:50 +0100 (CET) Received: by taz.st-esk.be.tintel.eu (sSMTP sendmail emulation); Sun, 25 Jan 2015 15:30:52 +0100 From: Stijn Tintel To: openwrt-devel@lists.openwrt.org Date: Sun, 25 Jan 2015 15:30:45 +0100 Message-Id: <1422196245-2289-4-git-send-email-stijn@linux-ipv6.be> X-Mailer: git-send-email 2.0.5 In-Reply-To: <1422196245-2289-1-git-send-email-stijn@linux-ipv6.be> References: <1422196245-2289-1-git-send-email-stijn@linux-ipv6.be> Subject: [OpenWrt-Devel] [RFC PATCH 3/3] hostapd: add 802.11r support X-BeenThere: openwrt-devel@lists.openwrt.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: OpenWrt Development List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: openwrt-devel-bounces@lists.openwrt.org Sender: "openwrt-devel" Signed-off-by: Stijn Tintel --- package/network/services/hostapd/files/hostapd.sh | 29 ++++++++++++++++++ package/network/services/hostapd/files/netifd.sh | 37 ++++++++++++++++++++++- 2 files changed, 65 insertions(+), 1 deletion(-) diff --git a/package/network/services/hostapd/files/hostapd.sh b/package/network/services/hostapd/files/hostapd.sh index a4b38d7..7aec7ad 100644 --- a/package/network/services/hostapd/files/hostapd.sh +++ b/package/network/services/hostapd/files/hostapd.sh @@ -219,6 +219,35 @@ hostapd_set_bss_options() { then config_get nasid "$vif" nasid [ -n "$nasid" ] && append "$var" "nas_identifier=$nasid" "$N" + + config_get_bool ieee80211r "$vif" ieee80211r 0 + if [ "$ieee80211r" -gt 0 ] + then + config_get mobility_domain "$vif" mobility_domain "4f57" + config_get r0_key_lifetime "$vif" r0_key_lifetime "10000" + config_get r1_key_holder "$vif" r1_key_holder "00004f577274" + config_get reassociation_deadline "$vif" reassociation_deadline "1000" + config_get r0kh "$vif" r0kh + config_get r1kh "$vif" r1kh + config_get_bool pmk_r1_push "$vif" pmk_r1_push 0 + + append "$var" "mobility_domain=$mobility_domain" "$N" + append "$var" "r0_key_lifetime=$r0_key_lifetime" "$N" + append "$var" "r1_key_holder=$r1_key_holder" "$N" + append "$var" "reassociation_deadline=$reassociation_deadline" "$N" + append "$var" "pmk_r1_push=$pmk_r1_push" "$N" + + for kh in $r0kh; do + "$var" "r0kh=${kh//,/ }" "$N" + done + for kh in $r1kh; do + "$var" "r1kh=${kh//,/ }" "$N" + done + + [ "$wpa_key_mgmt" != "${wpa_key_mgmt/EAP/}" ] && append wpa_key_mgmt "FT-EAP" + [ "$wpa_key_mgmt" != "${wpa_key_mgmt/PSK/}" ] && append wpa_key_mgmt "FT-PSK" + fi + [ -n "wpa_key_mgmt" ] && append "$var" "wpa_key_mgmt=$wpa_key_mgmt" fi diff --git a/package/network/services/hostapd/files/netifd.sh b/package/network/services/hostapd/files/netifd.sh index 666823b..525cc39 100644 --- a/package/network/services/hostapd/files/netifd.sh +++ b/package/network/services/hostapd/files/netifd.sh @@ -148,6 +148,11 @@ hostapd_common_add_bss_config() { config_add_boolean wps_pushbutton wps_label ext_registrar wps_pbc_in_m1 config_add_string wps_device_type wps_device_name wps_manufacturer wps_pin + config_add_boolean ieee80211r pmk_r1_push + config_add_int r0_key_lifetime reassociation_deadline + config_add_string mobility_domain r1_key_holder + config_add_array r0kh r1kh + config_add_int ieee80211w_max_timeout ieee80211w_retry_timeout config_add_string macfilter 'macfile:file' @@ -337,8 +342,38 @@ hostapd_set_bss_options() { } if [ "$wpa" -ge "1" ]; then - json_get_vars nasid + json_get_vars nasid ieee80211r [ -n "$nasid" ] && append bss_conf "nas_identifier=$nasid" "$N" + + if [ "$ieee80211r" -gt "0" ]; then + json_get_vars mobility_domain r0_key_lifetime r1_key_holder \ + reassociation_deadline pmk_r1_push + json_get_values r0kh r0kh + json_get_values r1kh r1kh + + set_default mobility_domain "4f57" + set_default r0_key_lifetime 10000 + set_default r1_key_holder "00004f577274" + set_default reassociation_deadline 1000 + set_default pmk_r1_push 0 + + append bss_conf "mobility_domain=$mobility_domain" "$N" + append bss_conf "r0_key_lifetime=$r0_key_lifetime" "$N" + append bss_conf "r1_key_holder=$r1_key_holder" "$N" + append bss_conf "reassociation_deadline=$reassociation_deadline" "$N" + append bss_conf "pmk_r1_push=$pmk_r1_push" "$N" + + for kh in $r0kh; do + append bss_conf "r0kh=${kh//,/ }" "$N" + done + for kh in $r1kh; do + append bss_conf "r1kh=${kh//,/ }" "$N" + done + + [ "$wpa_key_mgmt" != "${wpa_key_mgmt/EAP/}" ] && append wpa_key_mgmt "FT-EAP" + [ "$wpa_key_mgmt" != "${wpa_key_mgmt/PSK/}" ] && append wpa_key_mgmt "FT-PSK" + fi + [ -n "$wpa_key_mgmt" ] && append bss_conf "wpa_key_mgmt=$wpa_key_mgmt" "$N" fi