[PATCH] configurenetwork: Rearrangement/redesign of central commands

mail at adrianschmutzler.de mail at adrianschmutzler.de
Di Jan 2 20:05:15 CET 2018


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...

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



Mehr Informationen über die Mailingliste franken-dev