diff --git a/netmode/files/etc/init.d/netmode b/netmode/files/etc/init.d/netmode index b66b8c81d..d09f29a74 100755 --- a/netmode/files/etc/init.d/netmode +++ b/netmode/files/etc/init.d/netmode @@ -157,13 +157,13 @@ start_service() { done fi - # Execute netmode generic post-mode-switch scripts - libnetmode_exec "post" - cleanup_env_vars "${mode}" - # Save mode as last mode echo "$mode" > $MODEDIR/.last_mode _log "Switching to Mode [${mode}] done, last mode updated" + + # Execute netmode generic post-mode-switch scripts + libnetmode_exec "post" + cleanup_env_vars "${mode}" } service_triggers() diff --git a/netmode/files/etc/netmodes/bridged/scripts/10-bridged b/netmode/files/etc/netmodes/bridged/scripts/10-bridged index c6f43b026..c06085abd 100644 --- a/netmode/files/etc/netmodes/bridged/scripts/10-bridged +++ b/netmode/files/etc/netmodes/bridged/scripts/10-bridged @@ -61,8 +61,8 @@ l2_network_config() { uci -q set network.lan6.device='@lan' uci -q set network.lan6.reqprefix='no' - uci -q set network.wan.disabled='1' - uci -q set network.wan6.disabled='1' + uci -q delete network.wan + uci -q delete network.wan6 uci -q delete network.br_lan.ports uci -q set network.br_lan.bridge_empty='1' @@ -116,12 +116,3 @@ l2_network_config() { l2_network_config l2_mcast_config - -# If device is already boot-up, assume netmode changed during runtime -if [ -f /var/run/boot_complete ]; then - /etc/init.d/odhcpd stop 2>/dev/null - for config in network dhcp ssdpd cwmp gateway firewall mcast; do - ubus call uci commit "{\"config\":\"$config\"}" - sleep 1 - done -fi diff --git a/netmode/files/etc/netmodes/routed-dhcp/scripts/10-routed-dhcp b/netmode/files/etc/netmodes/routed-dhcp/scripts/10-routed-dhcp index 839dd48d3..000c3cac5 100644 --- a/netmode/files/etc/netmodes/routed-dhcp/scripts/10-routed-dhcp +++ b/netmode/files/etc/netmodes/routed-dhcp/scripts/10-routed-dhcp @@ -43,24 +43,28 @@ l3_network_config() { uci -q delete network.wan.netmask uci -q set network.wan6=interface - uci -q set network.wan6.proto='dhcpv6' + uci -q set network.wan6.proto="dhcpv6" uci -q delete network.wan6.disabled - if [ -n "$wandev" ] && echo "$NETMODE_vlanid" | grep -Eq '^[0-9]+$' && [ "$NETMODE_vlanid" -ge 1 ]; then - uci -q set network.vlan_${NETMODE_vlanid}=device - uci -q set network.vlan_${NETMODE_vlanid}.type="8021q" - uci -q set network.vlan_${NETMODE_vlanid}.name="$wandev.$NETMODE_vlanid" - uci -q set network.vlan_${NETMODE_vlanid}.ifname="$wandev" - uci -q set network.vlan_${NETMODE_vlanid}.vid=$NETMODE_vlanid + # Delete all VLAN sections; new ones will be created in next function if required + for vlandev_sec in $(uci show network | grep "type=.*8021q" | cut -d'.' -f1,2); do + uci -q delete $vlandev_sec + done - wandev="$wandev.$NETMODE_vlanid" + if [ -n "$wandev" ] && echo "$NETMODE_vlanid" | grep -Eq '^[0-9]+$' && [ "$NETMODE_vlanid" -ge 1 ]; then + vlandev="$wandev.$NETMODE_vlanid" + vlandev_sec=$(echo $vlandev | tr '.' '_') + uci -q set network.${vlandev_sec}=device + uci -q set network.${vlandev_sec}.type="8021q" + uci -q set network.${vlandev_sec}.name="$vlandev" + uci -q set network.${vlandev_sec}.ifname="$wandev" + uci -q set network.${vlandev_sec}.vid=$NETMODE_vlanid + + wandev="$vlandev" fi uci -q set network.wan.device="$wandev" - - uci -q set network.wan6=interface uci -q set network.wan6.device="$wandev" - uci -q set network.wan6.proto="dhcpv6" uci -q set network.WAN.mtu="$NETMODE_mtu" @@ -122,12 +126,3 @@ l3_network_config() { l3_network_config l3_mcast_config - -# If device is already boot-up, assume netmode changed during runtime -if [ -f /var/run/boot_complete ]; then - /etc/init.d/odhcpd restart 2>/dev/null - for config in network dhcp ssdpd cwmp gateway firewall mcast; do - ubus call uci commit "{\"config\":\"$config\"}" - sleep 1 - done -fi diff --git a/netmode/files/etc/netmodes/routed-pppoe/scripts/10-routed-pppoe b/netmode/files/etc/netmodes/routed-pppoe/scripts/10-routed-pppoe index a8b3255e3..747b17ee6 100644 --- a/netmode/files/etc/netmodes/routed-pppoe/scripts/10-routed-pppoe +++ b/netmode/files/etc/netmodes/routed-pppoe/scripts/10-routed-pppoe @@ -42,22 +42,27 @@ l3_network_pppoe_config() { uci -q delete network.wan.gateway uci -q delete network.wan.netmask - uci -q set network.wan6.disabled='1' + uci -q delete network.wan6 + + # Delete all VLAN sections; new ones will be created in next function if required + for vlandev_sec in $(uci show network | grep "type=.*8021q" | cut -d'.' -f1,2); do + uci -q delete $vlandev_sec + done if [ -n "$wandev" ] && echo "$NETMODE_vlanid" | grep -Eq '^[0-9]+$' && [ "$NETMODE_vlanid" -ge 1 ]; then - uci -q set network.vlan_${NETMODE_vlanid}=device - uci -q set network.vlan_${NETMODE_vlanid}.type="8021q" - uci -q set network.vlan_${NETMODE_vlanid}.name="$wandev.$NETMODE_vlanid" - uci -q set network.vlan_${NETMODE_vlanid}.ifname="$wandev" - uci -q set network.vlan_${NETMODE_vlanid}.vid=$NETMODE_vlanid + vlandev="$wandev.$NETMODE_vlanid" + vlandev_sec=$(echo $vlandev | tr '.' '_') + uci -q set network.${vlandev_sec}=device + uci -q set network.${vlandev_sec}.type="8021q" + uci -q set network.${vlandev_sec}.name="$vlandev" + uci -q set network.${vlandev_sec}.ifname="$wandev" + uci -q set network.${vlandev_sec}.vid=$NETMODE_vlanid - wandev="$wandev.$NETMODE_vlanid" + wandev="$vlandev" fi uci -q set network.wan.device="$wandev" - uci -q delete network.wan6 - uci -q set network.WAN.mtu="$NETMODE_mtu" uci -q delete network.wan.dns @@ -118,12 +123,3 @@ l3_network_pppoe_config() { l3_network_pppoe_config l3_mcast_config - -# If device is already boot-up, assume netmode changed during runtime -if [ -f /var/run/boot_complete ]; then - /etc/init.d/odhcpd restart 2>/dev/null - for config in network dhcp ssdpd cwmp gateway firewall mcast; do - ubus call uci commit "{\"config\":\"$config\"}" - sleep 1 - done -fi diff --git a/netmode/files/etc/netmodes/routed-static/scripts/10-routed-static b/netmode/files/etc/netmodes/routed-static/scripts/10-routed-static index 7c1099fec..ece0738c7 100644 --- a/netmode/files/etc/netmodes/routed-static/scripts/10-routed-static +++ b/netmode/files/etc/netmodes/routed-static/scripts/10-routed-static @@ -43,22 +43,27 @@ l3_network_config() { uci -q delete network.wan.username uci -q delete network.wan.password - uci -q set network.wan6.disabled='1' + uci -q delete network.wan6 + + # Delete all VLAN sections; new ones will be created in next function if required + for vlandev_sec in $(uci show network | grep "type=.*8021q" | cut -d'.' -f1,2); do + uci -q delete $vlandev_sec + done if [ -n "$wandev" ] && echo "$NETMODE_vlanid" | grep -Eq '^[0-9]+$' && [ "$NETMODE_vlanid" -ge 1 ]; then - uci -q set network.vlan_${NETMODE_vlanid}=device - uci -q set network.vlan_${NETMODE_vlanid}.type="8021q" - uci -q set network.vlan_${NETMODE_vlanid}.name="$wandev.$NETMODE_vlanid" - uci -q set network.vlan_${NETMODE_vlanid}.ifname="$wandev" - uci -q set network.vlan_${NETMODE_vlanid}.vid=$NETMODE_vlanid + vlandev="$wandev.$NETMODE_vlanid" + vlandev_sec=$(echo $vlandev | tr '.' '_') + uci -q set network.${vlandev_sec}=device + uci -q set network.${vlandev_sec}.type="8021q" + uci -q set network.${vlandev_sec}.name="$vlandev" + uci -q set network.${vlandev_sec}.ifname="$wandev" + uci -q set network.${vlandev_sec}.vid=$NETMODE_vlanid - wandev="$wandev.$NETMODE_vlanid" + wandev="$vlandev" fi uci -q set network.wan.device="$wandev" - uci -q delete network.wan6 - uci -q set network.WAN.mtu="$NETMODE_mtu" uci -q delete network.wan.dns @@ -119,12 +124,3 @@ l3_network_config() { l3_network_config l3_mcast_config - -# If device is already boot-up, assume netmode changed during runtime -if [ -f /var/run/boot_complete ]; then - /etc/init.d/odhcpd restart 2>/dev/null - for config in network dhcp ssdpd cwmp gateway firewall mcast; do - ubus call uci commit "{\"config\":\"$config\"}" - sleep 1 - done -fi diff --git a/netmode/files/lib/netmode/post/datamodel_init.sh b/netmode/files/lib/netmode/post/datamodel_init.sh index 8640b59ff..8d4eed744 100644 --- a/netmode/files/lib/netmode/post/datamodel_init.sh +++ b/netmode/files/lib/netmode/post/datamodel_init.sh @@ -1,11 +1,7 @@ #!/bin/sh -# This script is to restart related datamodel microservices -# when wan mode changes - - if [ ! -f /var/run/boot_complete ]; then - return 0 + exit 0 fi if [ -f /etc/bbfdm/dmmap/PPP ]; then @@ -20,4 +16,6 @@ if [ -f /etc/bbfdm/dmmap/Ethernet ]; then rm -f /etc/bbfdm/dmmap/Ethernet fi -reboot & +sleep 5 + +reboot -f