diff --git a/src/packages/fff/fff-network/Makefile b/src/packages/fff/fff-network/Makefile index 057e3ccb..81b29cb1 100644 --- a/src/packages/fff/fff-network/Makefile +++ b/src/packages/fff/fff-network/Makefile @@ -1,7 +1,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=fff-network -PKG_RELEASE:=40 +PKG_RELEASE:=41 include $(INCLUDE_DIR)/package.mk diff --git a/src/packages/fff/fff-network/files/usr/sbin/configurenetwork b/src/packages/fff/fff-network/files/usr/sbin/configurenetwork index de737500..b1559758 100755 --- a/src/packages/fff/fff-network/files/usr/sbin/configurenetwork +++ b/src/packages/fff/fff-network/files/usr/sbin/configurenetwork @@ -4,23 +4,6 @@ . /lib/functions/system.sh . /lib/functions/fff/network -setupPorts() { - # Add a single port to the *_PORTS config - # Usage: setupPorts - - local port=$1 - local mode=$2 - - #default: BATMAN - if [ "$mode" = "WAN" ] ; then - WAN_PORTS="${WAN_PORTS} $port" - elif [ "$mode" = "CLIENT" ] ; then - CLIENT_PORTS="${CLIENT_PORTS} $port" - else - BATMAN_PORTS="${BATMAN_PORTS} $port" - fi -} - BOARD="$(uci get board.model.name)" . /etc/network.$BOARD [ -n "$ROUTERMAC" ] || ROUTERMAC=$(get_mac_label) @@ -37,10 +20,8 @@ else if [ "$ONE_PORT" = "YES" ] || [ -n "$ETHPORT" ] ; then echo "ETHMODE='$ETHMODE' # use BATMAN, CLIENT or WAN" >> /etc/network.config fi - if [ -n "$LAN0PORT" ] ; then + if [ -n "$TWO_PORT" ] ; then echo "LAN0MODE='$LAN0MODE' # use BATMAN, CLIENT or WAN" >> /etc/network.config - fi - if [ -n "$LAN1PORT" ] ; then echo "LAN1MODE='$LAN1MODE' # use BATMAN, CLIENT or WAN" >> /etc/network.config fi echo "FORCEPARSE='0' # Parse at: 0=first boot only, 1=every reboot, 2=next reboot (once)" >> /etc/network.config @@ -52,20 +33,84 @@ if [ "$FORCEPARSE" = '2' ] ; then FORCEPARSE='1' fi -if [ -n "$ETHPORT" ] ; then - #LAN@AR150: default: BATMAN - setupPorts "$ETHPORT" "${ETHMODE}" -fi -if [ -n "$LAN0PORT" ] ; then - #LAN0@two-port: default: BATMAN - setupPorts "$LAN0PORT" "${LAN0MODE}" -fi -if [ -n "$LAN1PORT" ] ; then - #LAN1@two-port: default: BATMAN - setupPorts "$LAN1PORT" "${LAN1MODE}" -fi +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 + if [ "$ETHMODE" = "WAN" ]; then + uci set network.client.ifname="bat0" + uci set network.wan.ifname="$WANDEV" + uci del network.ethmesh.ifname + uci del network.${SWITCHDEV}.macaddr + elif [ "$ETHMODE" = "CLIENT" ] ; then + uci set network.client.ifname="bat0 $SWITCHDEV" + uci set network.wan.ifname="eth2" #eth2 because it is default in config file + uci del network.ethmesh.ifname + uci del network.${SWITCHDEV}.macaddr + elif [ "$ETHMODE" = "BATMAN" ] ; then + uci set network.client.ifname="bat0" + uci set network.wan.ifname="eth2" #eth2 because it is default in config file + uci set network.ethmesh.ifname="$SWITCHDEV" + ETH0DEV="$SWITCHDEV" + ETH0MAC="w2ap" + fi + uci commit network + fi +elif [ "$TWO_PORT" = "YES" ]; then + if ! uci -q get network.$WANDEV.ifname || [ "$FORCEPARSE" = '1' ] ; then + uci set network.$WANDEV=interface + uci set network.$WANDEV.ifname="$WANDEV" + uci set network.$SWITCHDEV=interface + uci set network.$SWITCHDEV.ifname="$SWITCHDEV" + # Only one WAN possible, second port will be unset if both are WAN + if [ "$LAN0MODE" = "WAN" ]; then + if [ "$LAN1MODE" = "CLIENT" ]; then + uci set network.client.ifname="bat0 $SWITCHDEV"; else + uci set network.client.ifname=bat0; fi + # WAN + uci set network.wan.ifname="$WANDEV" + if [ "$LAN1MODE" = "BATMAN" ]; then + uci set network.ethmesh.ifname="$SWITCHDEV"; else + uci del network.ethmesh.ifname; fi + # Two client ports are possible + elif [ "$LAN0MODE" = "CLIENT" ]; then + if [ "$LAN1MODE" = "CLIENT" ]; then + uci set network.client.ifname="bat0 $WANDEV $SWITCHDEV"; else + uci set network.client.ifname="bat0 $WANDEV"; fi + if [ "$LAN1MODE" = "WAN" ]; then + uci set network.wan.ifname="$SWITCHDEV"; else + uci set network.wan.ifname=eth2; fi #eth2 because it is default in config file + if [ "$LAN1MODE" = "BATMAN" ]; then + uci set network.ethmesh.ifname="$SWITCHDEV"; else + uci del network.ethmesh.ifname; fi + # Only one BATMAN port possible, second port will be unset if both are BATMAN + elif [ "$LAN0MODE" = "BATMAN" ] ; then + if [ "$LAN1MODE" = "CLIENT" ]; then + uci set network.client.ifname="bat0 $SWITCHDEV"; else + uci set network.client.ifname=bat0; fi + if [ "$LAN1MODE" = "WAN" ]; then + uci set network.wan.ifname="$SWITCHDEV"; else + uci set network.wan.ifname=eth2; fi #eth2 because it is default in config file + # BATMAN + uci set network.ethmesh.ifname="$WANDEV" + fi + if [ "$LAN0MODE" = "BATMAN" ]; then + ETH0DEV="$WANDEV" # only needed for setting macaddr + ETH0MAC=w2ap + uci del network.$SWITCHDEV.macaddr + elif [ "$LAN1MODE" = "BATMAN" ]; then + # $WANDEV will win if both are set to BATMAN, as above + ETH0DEV="$SWITCHDEV" # only needed for setting macaddr + ETH0MAC=w2ap + uci del network.$WANDEV.macaddr + else + uci del network.$WANDEV.macaddr + uci del network.$SWITCHDEV.macaddr + fi -if [ "$ONE_PORT" != "YES" ]; then + uci commit network + fi +else if ! uci -q get network.$SWITCHDEV > /dev/null || [ "$FORCEPARSE" = '1' ] ; then SWITCHHW=$(swconfig list | awk '{ print $4 }') @@ -103,28 +148,6 @@ if [ "$ONE_PORT" != "YES" ]; then uci set network.wan.ifname=$WANDEV fi - uci commit network - fi -else - if ! uci -q get network.$SWITCHDEV.ifname || [ "$FORCEPARSE" = '1' ] ; then - uci set network.$SWITCHDEV=interface - uci set network.$SWITCHDEV.ifname=$SWITCHDEV - if [ "$ETHMODE" = "WAN" ]; then - uci set network.client.ifname="bat0" - uci set network.wan.ifname="$WANDEV" - uci del network.ethmesh.ifname - uci del network.${SWITCHDEV}.macaddr - elif [ "$ETHMODE" = "CLIENT" ] ; then - uci set network.client.ifname="bat0 $SWITCHDEV" - uci set network.wan.ifname="eth2" #eth2 because it is default in config file - uci del network.ethmesh.ifname - uci del network.${SWITCHDEV}.macaddr - elif [ "$ETHMODE" = "BATMAN" ] ; then - uci set network.client.ifname="bat0" - uci set network.wan.ifname="eth2" #eth2 because it is default in config file - uci set network.ethmesh.ifname="$SWITCHDEV" - ETH0MAC="w2ap" - fi uci commit network fi fi @@ -168,14 +191,14 @@ if [ -n "$ROUTERMAC" ]; then fi if [ -n "$ETH0MAC" ]; then - echo "Fixing MAC on $SWITCHDEV" + echo "Fixing MAC on $ETH0DEV" sleep 10 NEW_MACADDR=$(cat "/sys/class/net/${ETH0MAC}/address") - uci set network.${SWITCHDEV}.macaddr=$NEW_MACADDR + uci set network.$ETH0DEV.macaddr=$NEW_MACADDR uci commit network - ifconfig $SWITCHDEV down - ifconfig $SWITCHDEV hw ether $NEW_MACADDR - ifconfig $SWITCHDEV up + ifconfig $ETH0DEV down + ifconfig $ETH0DEV hw ether $NEW_MACADDR + ifconfig $ETH0DEV up /etc/init.d/network restart fi