Rework network configuration #209
|
@ -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)
|
||||
fbl marked this conversation as resolved
Outdated
|
||||
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
|
|
@ -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
|
||||
|
@ -105,109 +104,6 @@ elif [ "$TWO_PORT" = "YES" ]; then
|
|||
|
||||
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
|
||||
|
||||
/etc/init.d/network restart
|
||||
|
||||
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
|
||||
|
||||
ifconfig $SWITCHDEV.3 down
|
||||
ifconfig $SWITCHDEV.3 hw ether $ETHMESHMAC
|
||||
ifconfig $SWITCHDEV.3 up
|
||||
/etc/init.d/network restart
|
||||
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
|
||||
|
||||
ifconfig br-client down
|
||||
ifconfig br-client hw ether $ROUTERMAC
|
||||
ifconfig br-client up
|
||||
/etc/init.d/network restart
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -n "$ETH0MAC" ]; then
|
||||
|
@ -216,44 +112,6 @@ if [ -n "$ETH0MAC" ]; then
|
|||
NEW_MACADDR=$(cat "/sys/class/net/${ETH0MAC}/address")
|
||||
uci set network.$ETH0DEV.macaddr=$NEW_MACADDR
|
||||
uci commit network
|
||||
ifconfig $ETH0DEV down
|
||||
ifconfig $ETH0DEV hw ether $NEW_MACADDR
|
||||
ifconfig $ETH0DEV up
|
||||
/etc/init.d/network restart
|
||||
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
|
||||
|
||||
for ip in $(ip -6 addr show br-client | awk '/fdff/{ print $2 }'); do
|
||||
ip -6 addr del $ip dev br-client
|
||||
done
|
||||
|
||||
prefix="fdff::/64"
|
||||
# Set $prefix::MAC as IP
|
||||
addr=$(owipcalc "$prefix" add "::$(ipMacSuffix "$ROUTERMAC")")
|
||||
ip -6 addr add $addr dev br-client
|
||||
|
||||
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)
|
||||
ip -6 addr add $addr dev br-client
|
||||
uci -q add_list network.client.ip6addr=$addr
|
||||
|
||||
# Set $prefix::link-local as IP
|
||||
addr=$(owipcalc "$prefix" add "::$(ipEUISuffix "$ROUTERMAC")")
|
||||
ip -6 addr add $addr dev br-client
|
||||
uci -q add_list network.client.ip6addr=$addr
|
||||
|
||||
uci -q commit network
|
||||
|
||||
[ -s /etc/init.d/fff-uradvd ] && /etc/init.d/fff-uradvd restart
|
||||
fi
|
||||
reload_config
|
||||
|
|
|
@ -11,10 +11,16 @@ URADVD_BIN=/usr/sbin/uradvd
|
|||
|
||||
service_triggers()
|
||||
{
|
||||
procd_add_reload_trigger "fff-uradvd"
|
||||
procd_add_reload_trigger "fff-uradvd" "network"
|
||||
}
|
||||
|
||||
start_service() {
|
||||
procd_open_instance
|
||||
procd_set_param command "$URADVD_BIN" -i br-client -p $(uci get network.globals.ula_prefix)
|
||||
}
|
||||
|
||||
reload_service()
|
||||
{
|
||||
stop
|
||||
start
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Hi Fabian,
der Block kommt doch mit fff-batman-adv rein. Sollte nicht default sein. Oder moechtest du den auch in der l3 haben?
Robert
Ich möchte die l3 config langfristig komplett unabhängig von dieser Basiskonfiguration machen. Kurzfristig würde ich diesen Umstand einfach - wie bisher - hinnehmen.
So ist es halt doppelt. Einmal hier und im package fff-batman-adv.
Ah, an mir ist total vorbei gegangen, was du eigentlich meinst. Das war vorher ja auch nicht da und gehört hier entsprechend auch überhaupt nicht hin.
Ich hab da einen relativ alten Patch von mir wiederverwertet, möglicherweise ist da was übrig geblieben.
Würde ich entsprechend entfernen, gut aufgepasst!