#!/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