[PATCH] fff-hoods/fff-wireless: Don't delete WiFi devices

mail at adrianschmutzler.de mail at adrianschmutzler.de
Sa Nov 4 14:32:38 CET 2017


Hallo Tim,

siehe unten.

> -----Original Message-----
> From: Tim Niemeyer [mailto:tim at tn-x.org]
> Sent: Samstag, 4. November 2017 14:26
> To: Adrian Schmutzler <freifunk at adrianschmutzler.de>; franken-
> dev at freifunk.net
> Subject: Re: [PATCH] fff-hoods/fff-wireless: Don't delete WiFi devices
> 
> Hi
> 
> Am Donnerstag, den 02.11.2017, 14:31 +0100 schrieb Adrian Schmutzler:
> > We only want to remove WiFi interfaces, not devices during
> > reconfiguration. This still allows for complete reconfiguration, but
> > does not remove device attributes like a disabled 5 GHz or similar.
> >
> > Semi-tested: Tested via command-line, but separate from configurehood.
> >
> > Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
> > ---
> >  src/packages/fff/fff-hoods/files/usr/sbin/configurehood   |  4 ++--
> >  .../fff/fff-wireless/files/lib/functions/fff/wireless     | 15
> > +++++++++++++++
> >  2 files changed, 17 insertions(+), 2 deletions(-)
> >
> > diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> > b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> > index 8437c33..b1b674e 100755
> > --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> > +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> > @@ -78,7 +78,7 @@ else
> >  		rm -f "$sectorcopy" # always delete: no broadcast for isolated
> > device
> >  		rm -f "$sectortmp"
> >
> > -		if ! wifiDelAll; then
> > +		if ! wifiDelIface; then
> >  			echo "Can't delete current wifi setup"
> >  			exit 1
> >  		fi
> > @@ -178,7 +178,7 @@ if [ -s "$hoodfile" ]; then
> >  		uci -q set "system. at system[0].hood=$hood"
> >  		uci -q commit system
> >
> > -		if ! wifiDelAll; then
> > +		if ! wifiDelIface; then
> 
> Nach den wifiDelIface wird ja jeweils wifiAddPhy aufgerufen. Für mich sieht
> es so aus, als ob das erstmal kein Konflikt ist, obgleich "AddPhy" so klingt, als
> ob er dann ein zweites Phy anlegt.

set wireless.${radio}='wifi-device' steht in AddPhy

Das legt den block an WENN er nicht besteht.
WENN er besteht, ändert es nur den typ des blocks auf 'wifi-device'.
In unserem fall passiert also nichts, außer dass die Parameter im Block geupdatet werden (durch die darauf folgenden Code-Zeilen!), was wir ja wollen. Die Parameter die nicht geupdatet werden, bleiben aber bestehen (z.b. disabled=1)

> 
> Auf jeden Fall werden die Phy-Daten dadurch eh wieder auf die Hood-
> Werte gesetzt. Man könnte höchstens Settings hinzufügen, also sowas wie
> disabled = 1. Ein Kanal kann nicht festgesetzt werden.

Der wifiAddPhy ändert die Werte. Alles was im wifiAddPhy nicht gesetzt wird, bleibt bestehen (beim wifi-device, die ifaces sind komplett weg).

Der Kanal würde also durch wifiAddPhy IMMER überschrieben auf das, was wir wollen.
"disabled" wird aber in der wifiAddPhy nicht behandelt, also bleibt es so, wie es vorher war.

Grüße

Adrian

> 
> Stimmt das soweit?
> 
> Tim
> 
> >  			echo "Can't delete current wifi setup"
> >  			exit 1
> >  		fi
> > 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 b1ff5a9..5b63397 100644
> > --- a/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless
> > +++ b/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless
> > @@ -14,6 +14,21 @@ wifiDelAll() {
> >  	return 0
> >  }
> >
> > +wifiDelIface() {
> > +	if [ $# -ne "0" ]
> > +	then
> > +		echo "Usage: wifiDelIface"
> > +		return 1
> > +	fi
> > +
> > +	grep 'config wifi-iface' /etc/config/wireless | sed -n -e
> > "s/.*'\([^']*\)'.*/\1/p" | while read -r line ; do
> > +		uci -q delete "wireless.$line"
> > +	done
> > +	uci -q commit wireless
> > +
> > +	return 0
> > +}
> > +
> >  wifiAddPhy() {
> >  	if [ $# -ne "2" ]
> >  	then
> > --
> > 2.7.4
> >



Mehr Informationen über die Mailingliste franken-dev