[PATCH] configurenetwork: Rearrangement/redesign of central commands

Christian Dresel fff at chrisi01.de
Di Jan 2 20:17:33 CET 2018


hi

On 02.01.2018 20:05, mail at adrianschmutzler.de wrote:
> Tested successfully on WR841N v12.
> On ONEPORT (AC Mesh), bat0 is not coming up and thus br-mesh is missing...
> 
> Open issues:
> ...
> - Why is bat0 not coming up on AC Mesh? Help please...

das ist mir gestern auch passiert. Ich hab nur unseren aktuellen Master
hergenommen und LEDE auf 17.01.4
(444add156f2a6d92fc15005c5ade2208a978966c) hochgezogen, sowie den
Routingfeed auf 78049b46ac7cfbb14e8f05bc5150f518f827c0ec.

Auch hier war nur eth0 und lo offen aber kein bat0, kein br-mesh o.ä.
Ich hab nach langen suchen den Fehler nicht gefunden, wieder den
aktuellen Master gebaut und dann lief es wieder. Warum das passiert,
keine Ahnung. Es scheinen auch alle Kernelmodule zu fehlen (lsmod) ein
wunder das er überhaupt geht ;)

Bei mir ebenfalls der AC Mesh.

mfg

Christian

> 
> Grüße
> 
> Adrian
> 
>> -----Original Message-----
>> From: franken-dev [mailto:franken-dev-bounces at freifunk.net] On Behalf
>> Of Adrian Schmutzler
>> Sent: Dienstag, 2. Januar 2018 20:02
>> To: franken-dev at freifunk.net
>> Subject: [PATCH] configurenetwork: Rearrangement/redesign of central
>> commands
>>
>> This patch rearranges the commands in configurenetwork. The main goal is
> to
>> avoid code duplications and make reading easier. Some "bugs" were
>> addressed on the way:
>> - Previously, ONEPORT devices went through both major blocks,
>>   resulting e.g. in useless eth0.X interfaces being set up (and
>>   perhaps lots of other strange things). Now, the routines for
>>   ONEPORT and normal devices are separated.
>> - Updating the /etc/sysctl.conf has been combined to a single
>>   block based on variables set earlier
>> - WANDEV is reset to WANDEV.2 were applicable to reduce number of
>>   ifs
>> - "uci del uci set" has been changed to "uci del"
>> - Spaces have been changed to Tabs were changes were done
>> - Arguments have been quoted in various places
>> - Double brackets have been replaced by single brackets
>> - ETHMODE if has been changed to use BATMAN as default (elseif
>>   changed to else)
>> - Use ETHMESHMAC for ONEPORT, introduce ETHMESHDEV
>>
>> Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
>>
>> ---
>>
>> This requires the patches to be applied BEFOREHAND:
>> fff-network: Introduce function to set MAC on device
>> fff-network: Replace ETH0MAC by replacement based on ROUTERMAC
>>
>> Open issues:
>> - Line 84/89: eth0 MAC address is deleted (!). Why is this done
>>   only in uci and is it desirable to have a device without MAC?
>> ---
>>  .../fff-network/files/usr/sbin/configurenetwork    | 155
> ++++++++++---------
>> --
>>  1 file changed, 70 insertions(+), 85 deletions(-)
>>
>> diff --git a/src/packages/fff/fff-network/files/usr/sbin/configurenetwork
>> b/src/packages/fff/fff-network/files/usr/sbin/configurenetwork
>> index 0fbff10..ded9485 100755
>> --- a/src/packages/fff/fff-network/files/usr/sbin/configurenetwork
>> +++ b/src/packages/fff/fff-network/files/usr/sbin/configurenetwork
>> @@ -71,96 +71,81 @@ if [ -n "$LAN1PORT" ] ; then
>>      setupPorts "$LAN1PORT" "${LAN1MODE}"
>>  fi
>>
>> -if ! uci -q get network.$SWITCHDEV > /dev/null || [ "$FORCEPARSE" = '1' ]
> ;
>> then
>> -
>> -    SWITCHHW=$(swconfig list | awk '{ print $4 }')
>> -
>> -    uci set network.$SWITCHDEV=switch
>> -    uci set network.$SWITCHDEV.name=$SWITCHHW
>> -    uci set network.$SWITCHDEV.enable=1
>> -    uci set network.$SWITCHDEV.reset=1
>> -    uci set network.$SWITCHDEV.enable_vlan=1
>> -
>> -    uci set network.${SWITCHDEV}_1=switch_vlan
>> -    uci set network.${SWITCHDEV}_1.device=$SWITCHHW
>> -    uci set network.${SWITCHDEV}_1.vlan=1
>> -    uci set network.${SWITCHDEV}_1.ports="$CLIENT_PORTS"
>> -
>> -    echo "# Allow IPv6 RAs on WAN Port" >> /etc/sysctl.conf
>> -
>> -    if [[ "$WANDEV" = "$SWITCHDEV" ]] || ! [[ -z "$WAN_PORTS" ]]; then
>> -        uci set network.${SWITCHDEV}_2=switch_vlan
>> -        uci set network.${SWITCHDEV}_2.device=$SWITCHHW
>> -        uci set network.${SWITCHDEV}_2.vlan=2
>> -        uci set network.${SWITCHDEV}_2.ports="$WAN_PORTS"
>> -
>> -        echo "net.ipv6.conf.$WANDEV.2.accept_ra_defrtr = 1" >>
>> /etc/sysctl.conf
>> -        echo "net.ipv6.conf.$WANDEV.2.accept_ra_pinfo = 1" >>
>> /etc/sysctl.conf
>> -        echo "net.ipv6.conf.$WANDEV.2.autoconf = 1" >> /etc/sysctl.conf
>> -        echo "net.ipv6.conf.$WANDEV.2.accept_ra_rtr_pref = 1" >>
>> /etc/sysctl.conf
>> -    else
>> -        echo "net.ipv6.conf.$WANDEV.accept_ra_defrtr = 1" >>
> /etc/sysctl.conf
>> -        echo "net.ipv6.conf.$WANDEV.accept_ra_pinfo = 1" >>
> /etc/sysctl.conf
>> -        echo "net.ipv6.conf.$WANDEV.autoconf = 1" >> /etc/sysctl.conf
>> -        echo "net.ipv6.conf.$WANDEV.accept_ra_rtr_pref = 1" >>
>> /etc/sysctl.conf
>> -    fi
>> -
>> -    uci set network.${SWITCHDEV}_3=switch_vlan
>> -    uci set network.${SWITCHDEV}_3.device=$SWITCHHW
>> -    uci set network.${SWITCHDEV}_3.vlan=3
>> -    uci set network.${SWITCHDEV}_3.ports="$BATMAN_PORTS"
>> -
>> -    uci set network.mesh.ifname="$SWITCHDEV.1 bat0"
>> -
>> -    uci set network.ethmesh.ifname="$SWITCHDEV.3"
>> -
>> -    if [[ "$WANDEV" = "$SWITCHDEV" ]]; then
>> -        uci set network.wan.ifname=$WANDEV.2
>> -    else
>> -        uci set network.wan.ifname=$WANDEV
>> -    fi
>> -
>> -    uci commit network
>> +if [ "$ONE_PORT" = "YES" ] ; then
>> +	if ! uci -q get "network.$SWITCHDEV.ifname" || [ "$FORCEPARSE" =
>> '1' ] ; then
>> +		uci set "network.$SWITCHDEV=interface"
>> +		uci set "network.$SWITCHDEV.ifname=$SWITCHDEV"
>> +		wanon="0"
>> +		if [ "$ETHMODE" = "WAN" ]; then
>> +			wanon="1"
>> +			uci set network.mesh.ifname="bat0"
>> +			uci set network.wan.ifname="$WANDEV"
>> +			uci del network.ethmesh.ifname
>> +			uci del network.eth0.macaddr
>> +		elif [ "$ETHMODE" = "CLIENT" ] ; then
>> +			uci set network.mesh.ifname="bat0 $SWITCHDEV"
>> +			uci set network.wan.ifname="eth1" #eth1 because it
>> is default in config file
>> +			uci del network.ethmesh.ifname
>> +			uci del network.eth0.macaddr
>> +		else # default=BATMAN
>> +			uci set network.mesh.ifname="bat0"
>> +			uci set network.wan.ifname="eth1" #eth1 because it
>> is default in config file
>> +			uci set network.ethmesh.ifname="$SWITCHDEV"
>> +			ETHMESHMAC="$(macFlipLocalBit "$ROUTERMAC")"
>> +			ETHMESHDEV="$SWITCHDEV"
>> +		fi
>> +		uci -q commit network
>> +	fi
>> +else
>> +	if ! uci -q get "network.$SWITCHDEV" > /dev/null || [ "$FORCEPARSE"
>> = '1' ] ; then
>> +		SWITCHHW="$(swconfig list | awk '{ print $4 }')"
>> +
>> +		uci set "network.$SWITCHDEV=switch"
>> +		uci set "network.$SWITCHDEV.name=$SWITCHHW"
>> +		uci set "network.$SWITCHDEV.enable=1"
>> +		uci set "network.$SWITCHDEV.reset=1"
>> +		uci set "network.$SWITCHDEV.enable_vlan=1"
>> +
>> +		uci set "network.${SWITCHDEV}_1=switch_vlan"
>> +		uci set "network.${SWITCHDEV}_1.device=$SWITCHHW"
>> +		uci set "network.${SWITCHDEV}_1.vlan=1"
>> +		uci set "network.${SWITCHDEV}_1.ports=$CLIENT_PORTS"
>> +
>> +		echo "# Allow IPv6 RAs on WAN Port" >> /etc/sysctl.conf
>> +
>> +		wanon="1"
>> +		if [ "$WANDEV" = "$SWITCHDEV" ] || [ -n "$WAN_PORTS" ];
>> then
>> +			WANDEV="${SWITCHDEV}.2"
>> +			uci set "network.${SWITCHDEV}_2=switch_vlan"
>> +			uci set
>> "network.${SWITCHDEV}_2.device=$SWITCHHW"
>> +			uci set "network.${SWITCHDEV}_2.vlan=2"
>> +			uci set
>> "network.${SWITCHDEV}_2.ports=$WAN_PORTS"
>> +		fi
>> +
>> +		ETHMESHDEV="$SWITCHDEV.3"
>> +		uci set "network.${SWITCHDEV}_3=switch_vlan"
>> +		uci set "network.${SWITCHDEV}_3.device=$SWITCHHW"
>> +		uci set "network.${SWITCHDEV}_3.vlan=3"
>> +		uci set "network.${SWITCHDEV}_3.ports=$BATMAN_PORTS"
>> +
>> +		uci set network.mesh.ifname="$SWITCHDEV.1 bat0"
>> +		uci set network.wan.ifname="$WANDEV"
>> +		uci set network.ethmesh.ifname="$ETHMESHDEV"
>> +
>> +		uci -q commit network
>> +	fi
>>  fi
>> -
>> -if [ "$ONE_PORT" = "YES" ] && ( ! uci -q get network.$SWITCHDEV.ifname ||
>> [ "$FORCEPARSE" = '1' ] ) ; then
>> -    uci set network.$SWITCHDEV=interface
>> -    uci set network.$SWITCHDEV.ifname=$SWITCHDEV
>> -    if [ "$ETHMODE" = "WAN" ]; then
>> -        echo "net.ipv6.conf.$WANDEV.accept_ra_defrtr = 1" >>
> /etc/sysctl.conf
>> -        echo "net.ipv6.conf.$WANDEV.accept_ra_pinfo = 1" >>
> /etc/sysctl.conf
>> -        echo "net.ipv6.conf.$WANDEV.autoconf = 1" >> /etc/sysctl.conf
>> -        echo "net.ipv6.conf.$WANDEV.accept_ra_rtr_pref = 1" >>
>> /etc/sysctl.conf
>> -        uci set network.mesh.ifname="bat0"
>> -        uci set network.wan.ifname="$WANDEV"
>> -        uci del uci set network.ethmesh.ifname
>> -        uci del network.eth0.macaddr
>> -    elif [ "$ETHMODE" = "CLIENT" ] ; then
>> -        echo "net.ipv6.conf.$WANDEV.accept_ra_defrtr = 0" >>
> /etc/sysctl.conf
>> -        echo "net.ipv6.conf.$WANDEV.accept_ra_pinfo = 0" >>
> /etc/sysctl.conf
>> -        echo "net.ipv6.conf.$WANDEV.autoconf = 0" >> /etc/sysctl.conf
>> -        echo "net.ipv6.conf.$WANDEV.accept_ra_rtr_pref = 0" >>
>> /etc/sysctl.conf
>> -        uci set network.mesh.ifname="bat0 $SWITCHDEV"
>> -        uci set network.wan.ifname="eth1" #eth1 because it is default in
> config
>> file
>> -        uci del network.ethmesh.ifname
>> -        uci del network.eth0.macaddr
>> -    elif [ "$ETHMODE" = "BATMAN" ] ; then
>> -        echo "net.ipv6.conf.$WANDEV.accept_ra_defrtr = 0" >>
> /etc/sysctl.conf
>> -        echo "net.ipv6.conf.$WANDEV.accept_ra_pinfo = 0" >>
> /etc/sysctl.conf
>> -        echo "net.ipv6.conf.$WANDEV.autoconf = 0" >> /etc/sysctl.conf
>> -        echo "net.ipv6.conf.$WANDEV.accept_ra_rtr_pref = 0" >>
>> /etc/sysctl.conf
>> -        uci set network.mesh.ifname="bat0"
>> -        uci set network.wan.ifname="eth1" #eth1 because it is default in
> config
>> file
>> -        uci set network.ethmesh.ifname="$SWITCHDEV"
>> -        fixMac "$(macFlipLocalBit "$ROUTERMAC")" "eth0" "eth0" "1"
>> -    fi
>> -    uci commit network
>> +if [ -n "$wanon" ]; then
>> +	echo "net.ipv6.conf.$WANDEV.accept_ra_defrtr = $wanon" >>
>> /etc/sysctl.conf
>> +	echo "net.ipv6.conf.$WANDEV.accept_ra_pinfo = $wanon" >>
>> /etc/sysctl.conf
>> +	echo "net.ipv6.conf.$WANDEV.autoconf = $wanon" >>
>> /etc/sysctl.conf
>> +	echo "net.ipv6.conf.$WANDEV.accept_ra_rtr_pref = $wanon" >>
>> +/etc/sysctl.conf
>>  fi
>>
>>  /etc/init.d/network restart
>>
>> -if [ -n "$ETHMESHMAC" ]; then
>> -    fixMac "$ETHMESHMAC" "${SWITCHDEV}.3" "ethmesh"
>> +if [ -n "$ETHMESHMAC" ] && [ -n "$ETHMESHDEV" ]; then
>> +    fixMac "$ETHMESHMAC" "$ETHMESHDEV" "ethmesh"
>>  fi
>>
>>  if [ -n "$ROUTERMAC" ]; then
>> --
>> 2.7.4
>>
>> --
>> franken-dev mailing list
>> franken-dev at freifunk.net
>> http://lists.freifunk.net/mailman/listinfo/franken-dev-freifunk.net
> 

-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 833 bytes
Beschreibung: OpenPGP digital signature
URL         : <http://lists.freifunk.net/pipermail/franken-dev-freifunk.net/attachments/20180102/495d063f/attachment.sig>


Mehr Informationen über die Mailingliste franken-dev