diff --git a/src/packages/fff/fff-network/files/etc/uci-defaults/22-network-base b/src/packages/fff/fff-network/files/etc/uci-defaults/22-network-base new file mode 100644 index 00000000..92f14c91 --- /dev/null +++ b/src/packages/fff/fff-network/files/etc/uci-defaults/22-network-base @@ -0,0 +1,141 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-3.0-or-later + +. /lib/functions/system.sh +. /lib/functions/fff/network + +BOARD="$(uci get board.model.name)" +. /etc/network.$BOARD + +[ -n "$ROUTERMAC" ] || ROUTERMAC=$(get_mac_label) + +# Clear possibly existing network configuration +> /etc/config/network + +# Add basic network configuration +uci batch <<-__EOF__ + set network.loopback='interface' + set network.loopback.ifname='lo' + set network.loopback.proto='static' + set network.loopback.ipaddr='127.0.0.1' + set network.loopback.netmask='255.0.0.0' + + set network.client='interface' + set network.client.type='bridge' + set network.client.auto='1' + + set network.wan='interface' + set network.wan.proto='none' + set network.wan.ifname="$WANDEV" + + set network.wan4='interface' + set network.wan4.proto='dhcp' + set network.wan4.ifname='@wan' + + set network.wan6='interface' + set network.wan6.proto='dhcpv6' + set network.wan6.reqprefix='no' + set network.wan6.sourcefilter='0' + set network.wan6.ifname='@wan' + + set network.ethmesh='interface' + set network.ethmesh.proto='batadv_hardif' + set network.ethmesh.master='bat0' +__EOF__ + +SWITCHHW=$(swconfig list | awk '{ print $4 }') +if [ "$DSA" = "1" ]; then + uci batch <<-__EOF__ + set network.$SWITCHDEV=device + set network.$SWITCHDEV.name=$SWITCHDEV + set network.$SWITCHDEV.type=bridge + # temporary workaround for netifd bug present in OpenWrt 21.02.0 (FS#4104) + set network.$SWITCHDEV.bridge_empty='1' + + set network.${SWITCHDEV}_1=bridge-vlan + set network.${SWITCHDEV}_1.device=$SWITCHDEV + set network.${SWITCHDEV}_1.vlan=1 + set network.${SWITCHDEV}_1.ports="$CLIENT_PORTS" + + set network.${SWITCHDEV}_3=bridge-vlan + set network.${SWITCHDEV}_3.device=$SWITCHDEV + set network.${SWITCHDEV}_3.vlan=3 + set network.${SWITCHDEV}_3.ports="$BATMAN_PORTS" + __EOF__ + + if [ "$WANDEV" = "$SWITCHDEV" ] || ! [ -z "$WAN_PORTS" ]; then + uci batch <<-__EOF__ + set network.${SWITCHDEV}_2=bridge-vlan + set network.${SWITCHDEV}_2.device=$SWITCHDEV + set network.${SWITCHDEV}_2.vlan=2 + set network.${SWITCHDEV}_2.ports="$WAN_PORTS" + __EOF__ + fi +elif [ -n "$SWITCHHW" ]; then + uci batch <<-__EOF__ + set network.$SWITCHDEV=switch + set network.$SWITCHDEV.name=$SWITCHHW + set network.$SWITCHDEV.enable=1 + set network.$SWITCHDEV.reset=1 + set network.$SWITCHDEV.enable_vlan=1 + + set network.${SWITCHDEV}_1=switch_vlan + set network.${SWITCHDEV}_1.device=$SWITCHHW + set network.${SWITCHDEV}_1.vlan=1 + set network.${SWITCHDEV}_1.ports="$CLIENT_PORTS" + + set network.${SWITCHDEV}_3=switch_vlan + set network.${SWITCHDEV}_3.device=$SWITCHHW + set network.${SWITCHDEV}_3.vlan=3 + set network.${SWITCHDEV}_3.ports="$BATMAN_PORTS" + __EOF__ + + if [ "$WANDEV" = "$SWITCHDEV" ] || [ -n "$WAN_PORTS" ]; then + uci batch <<-__EOF__ + set network.${SWITCHDEV}_2=switch_vlan + set network.${SWITCHDEV}_2.device=$SWITCHHW + set network.${SWITCHDEV}_2.vlan=2 + set network.${SWITCHDEV}_2.ports="$WAN_PORTS" + __EOF__ + fi +fi + +if [ -n "$SWITCHHW" ] || [ "$DSA" = "1" ]; then + uci set network.client.ifname="$SWITCHDEV.1 bat0" + uci set network.ethmesh.ifname="$SWITCHDEV.3" + + if [ "$WANDEV" = "$SWITCHDEV" ]; then + uci set network.wan.ifname=$WANDEV.2 + fi +fi + +if [ -n "$ETHMESHMAC" ]; then + uci set network.ethmesh.macaddr=$ETHMESHMAC +fi + +if [ -n "$ROUTERMAC" ]; then + uci set network.client.macaddr=$ROUTERMAC +fi + + +prefix="fdff::/64" + +# Set $prefix::1 as IP +addr1=$(owipcalc "$prefix" add ::1) +# Set $prefix::MAC as IP +addr2=$(owipcalc "$prefix" add "::$(ipMacSuffix "$ROUTERMAC")") +# Set $prefix::EUI64 as IP +addr3=$(owipcalc "$prefix" add "::$(ipEUISuffix "$ROUTERMAC")") + +uci batch <<-__EOF__ + del network.globals + set network.globals=globals + set network.globals.ula_prefix=$prefix + add_list network.client.ip6addr=$addr1 + add_list network.client.ip6addr=$addr2 + add_list network.client.ip6addr=$addr3 + set network.client.proto=static +__EOF__ + + +uci -q commit network diff --git a/src/packages/fff/fff-network/files/usr/sbin/configurenetwork b/src/packages/fff/fff-network/files/usr/sbin/configurenetwork index 350f6cd7..12f66893 100755 --- a/src/packages/fff/fff-network/files/usr/sbin/configurenetwork +++ b/src/packages/fff/fff-network/files/usr/sbin/configurenetwork @@ -6,7 +6,6 @@ BOARD="$(uci get board.model.name)" . /etc/network.$BOARD -[ -n "$ROUTERMAC" ] || ROUTERMAC=$(get_mac_label) if [ -s /etc/network.config ] ; then . /etc/network.config @@ -103,97 +102,6 @@ elif [ "$TWO_PORT" = "YES" ]; then uci del network.$SWITCHDEV.macaddr fi - uci commit network - fi -else - if ! uci -q get network.$SWITCHDEV > /dev/null ; then - - if [ "$DSA" = "1" ]; then - uci set network.$SWITCHDEV=device - uci set network.$SWITCHDEV.name=$SWITCHDEV - uci set network.$SWITCHDEV.type=bridge - # temporary workaround for netifd bug present in OpenWrt 21.02.0 (FS#4104) - uci set network.$SWITCHDEV.bridge_empty='1' - - uci set network.${SWITCHDEV}_1=bridge-vlan - uci set network.${SWITCHDEV}_1.device=$SWITCHDEV - uci set network.${SWITCHDEV}_1.vlan=1 - uci set network.${SWITCHDEV}_1.ports="$CLIENT_PORTS" - - if [ "$WANDEV" = "$SWITCHDEV" ] || ! [ -z "$WAN_PORTS" ]; then - uci set network.${SWITCHDEV}_2=bridge-vlan - uci set network.${SWITCHDEV}_2.device=$SWITCHDEV - uci set network.${SWITCHDEV}_2.vlan=2 - uci set network.${SWITCHDEV}_2.ports="$WAN_PORTS" - fi - - uci set network.${SWITCHDEV}_3=bridge-vlan - uci set network.${SWITCHDEV}_3.device=$SWITCHDEV - uci set network.${SWITCHDEV}_3.vlan=3 - uci set network.${SWITCHDEV}_3.ports="$BATMAN_PORTS" - else - 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" - - if [ "$WANDEV" = "$SWITCHDEV" ] || [ -n "$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" - 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" - fi - - uci set network.client.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 - fi -fi - -if [ -n "$ETHMESHMAC" ]; then - if uci get network.ethmesh.macaddr - then - echo "MAC for ethmesh is set already" - else - echo "Fixing MAC on $SWITCHDEV.3 (ethmesh)" - sleep 10 - - uci set network.ethmesh.macaddr=$ETHMESHMAC - uci commit network - fi -fi - -if [ -n "$ROUTERMAC" ]; then - if uci get network.client.macaddr - then - echo "MAC for client is set already" - else - echo "Fixing MAC on br-client" - sleep 10 - - uci set network.client.macaddr=$ROUTERMAC uci commit network fi fi @@ -206,31 +114,4 @@ if [ -n "$ETH0MAC" ]; then uci commit network fi -if uci -q get "network.client.ip6addr" > /dev/null -then - echo "IPv6 for client is set already" -else - echo "Setting IPv6 addresses" - # Some time needed :( - sleep 5 - - prefix="fdff::/64" - # Set $prefix::MAC as IP - addr=$(owipcalc "$prefix" add "::$(ipMacSuffix "$ROUTERMAC")") - - uci -q set network.globals.ula_prefix=$prefix - uci -q add_list network.client.ip6addr=$addr - uci -q set network.client.proto=static - - # Set $prefix::1 as IP - addr=$(owipcalc "$prefix" add ::1) - uci -q add_list network.client.ip6addr=$addr - - # Set $prefix::link-local as IP - addr=$(owipcalc "$prefix" add "::$(ipEUISuffix "$ROUTERMAC")") - uci -q add_list network.client.ip6addr=$addr - - uci -q commit network -fi - reload_config