[PATCH v5 2/4] Reconfigure fff-wireless for keyxchangev2
Tim Niemeyer
tim at tn-x.org
Fr Sep 15 23:26:07 CEST 2017
Hi
Scheint auf den ersten Blick zu passen.
Unten noch ein paar optionale Anmerkungen.
Am Freitag, den 15.09.2017, 19:12 +0200 schrieb Christian Dresel:
> Need more parameters in wifiAddAP to add hidden AP
> Need new function wifiAddSta to add a station and download hoodfile
>
> Signed-off-by: Christian Dresel <fff at chrisi01.de>
>
> Update in v5:
> - wXSta to wXsta
> ---
> .../files/etc/uci-defaults/60-fff-wireless | 43 ---------------------
> .../fff-wireless/files/lib/functions/fff/wireless | 44 +++++++++++++++++++---
> 2 files changed, 39 insertions(+), 48 deletions(-)
> delete mode 100644 src/packages/fff/fff-wireless/files/etc/uci-defaults/60-fff-wireless
>
> diff --git a/src/packages/fff/fff-wireless/files/etc/uci-defaults/60-fff-wireless b/src/packages/fff/fff-wireless/files/etc/uci-defaults/60-fff-wireless
> deleted file mode 100644
> index 8e207a4..0000000
> --- a/src/packages/fff/fff-wireless/files/etc/uci-defaults/60-fff-wireless
> +++ /dev/null
> @@ -1,43 +0,0 @@
> -#!/bin/sh
> -# Copyright 2016 Tim Niemeyer
> -# License GPLv3
> -
> -. /lib/functions/fff/wireless
> -
> -. /etc/community.cfg
> -
> -if ! wifiDelAll; then
> - echo "Can't delete current wifi setup"
> - exit 1
> -fi
> -
> -for phy in $(iw phy | awk '/^Wiphy/{ print $2 }'); do
> - if iw phy "$phy" info | grep -q -m1 "2... MHz"; then
> - echo "$phy is 2.4 GHz"
> - radio=$(wifiAddPhy "$phy" "$BATMAN_CHANNEL")
> - if [ -z "$radio" ]; then
> - echo "Can't create radio for $phy"
> - exit 1
> - fi
> - fi
> - if iw phy "$phy" info | grep -q -m1 "5... MHz"; then
> - echo "$phy is 5 GHz"
> - radio=$(wifiAddPhy "$phy" "$BATMAN_CHANNEL_5GHZ")
> - if [ -z "$radio" ]; then
> - echo "Can't create radio for $phy"
> - exit 1
> - fi
> - fi
> -
> - if ! wifiAddAP "$radio" "$ESSID_AP"; then
> - echo "Can't add AP interface on $radio."
> - exit 1
> - fi
> -
> - if ! wifiAddAdHocMesh "$radio" "$ESSID_MESH" "$BSSID_MESH"; then
> - echo "Can't add AdHocMesh interface on $radio."
> - exit 1
> - fi
> -done
> -
> -# vim: set noexpandtab:tabstop=4
> diff --git a/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless b/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless
> index 59c8ce2..63312cd 100644
> --- a/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless
> +++ b/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless
> @@ -85,28 +85,32 @@ wifiAddAdHocMesh() {
> }
>
> wifiAddAP() {
> - if [ $# -ne "2" ]
> + if [ $# -ne "5" ]
> then
> - echo "Usage: wifiAddAP <radio> <essid>"
> + echo "Usage: wifiAddAP <radio> <essid> <network> <iface> <hidden>"
Die Parameter könnten fehleranfällig sein, wenn z.B. als network mesh
und hidden auf 1 steht. Ich würde den Anwendern dieser Funktion lieber
weniger Freiräume geben.
Man könnte die Funktion mit zwei weiteren Funktionen ergänzen.
wifiAppClientAP() {
local radio=$1
local essid=$2
wifiAddAP "$radio" "$essid" "mesh" "ap" "0"
}
wifiAppConfigAP() {
local radio=$1
local essid=$2
wifiAddAP "$radio" "$essid" "configap" "configap" "1"
}
Für diesen Fall, sollte man die wifiAddAP für externe verstecken, z.B.
das geht in bash/ash wohl nicht, aber man könnte die Funktion mit einem
Unterstrich beginnen lassen: "_wifiAddAP".
Alternativ könnte man auch einen Type Parameter einführen:
wifiAddAP() {
local radio=$1
local essid=$2
local type=$3
local network
local inface
local hidden
if [ "$type" = "client" ]; then
network="mesh"
...
else if ... type = "config" ...
...
fi
}
> return 1
> fi
>
> local radio=$1
> local essid=$2
> + local network=$3
> + local inface=$4
> + local hidden=$5
>
> local channel=$(uci get "wireless.${radio}.channel")
> - local iface="w2ap"
> + local iface="w2'${inface}'"
> if [ "$channel" -gt "14" ]; then
> - iface="w5ap"
> + iface="w5'${inface}'"
> fi
> uci batch <<-__EOF__
> set wireless.${iface}='wifi-iface'
> set wireless.${iface}.device='${radio}'
> - set wireless.${iface}.network='mesh'
> + set wireless.${iface}.network='${network}'
> set wireless.${iface}.ifname='${iface}'
> set wireless.${iface}.mode='ap'
> set wireless.${iface}.ssid='${essid}'
> set wireless.${iface}.encryption='none'
> + set wireless.${iface}.hidden='${hidden}'
>
> commit wireless
> __EOF__
> @@ -114,4 +118,34 @@ wifiAddAP() {
> echo "${iface}"
> }
>
> +wifiAddSta() {
> + if [ $# -ne "3" ]
> + then
> + echo "Usage: wifiAddSta <radio> <essid> <network>"
> + return 1
> + fi
> +
> + local radio=$1
> + local essid=$2
> + local network=$3
> +
> + local channel=$(uci get "wireless.${radio}.channel")
> + local iface="w2sta"
> + if [ "$channel" -gt "14" ]; then
> + iface="w5sta"
> + fi
> + uci batch <<-__EOF__
> + set wireless.${iface}='wifi-iface'
> + set wireless.${iface}.device='${radio}'
> + set wireless.${iface}.network='${network}'
> + set wireless.${iface}.ifname='${iface}'
> + set wireless.${iface}.mode='sta'
> + set wireless.${iface}.ssid='${essid}'
> +
> + commit wireless
> + __EOF__
> +
> + echo "${iface}"
> +}
> +
> # vim: set noexpandtab:tabstop=4
> --
> 2.1.4
>
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : signature.asc
Dateityp : application/pgp-signature
Dateigröße : 473 bytes
Beschreibung: This is a digitally signed message part
URL : <http://lists.freifunk.net/pipermail/franken-dev-freifunk.net/attachments/20170915/ea0164cd/attachment.sig>
Mehr Informationen über die Mailingliste franken-dev