From 60dae510ccbfac54b80464714e9e82a87d2aeae8 Mon Sep 17 00:00:00 2001 From: Sukru Senli Date: Sun, 24 Dec 2017 16:31:55 +0100 Subject: [PATCH] layer2interface: let netifd and vlanconf handle tagged and untagged vlans --- .../etc/init.d/layer2_interface_ethernet | 62 ------------------- .../broadcom/etc/init.d/layer2_interface_vlan | 36 ++++------- .../uci-defaults/20-layer2-config-generate | 25 ++++++-- 3 files changed, 33 insertions(+), 90 deletions(-) diff --git a/layer2interface/broadcom/etc/init.d/layer2_interface_ethernet b/layer2interface/broadcom/etc/init.d/layer2_interface_ethernet index 2993802ba..4023a963e 100755 --- a/layer2interface/broadcom/etc/init.d/layer2_interface_ethernet +++ b/layer2interface/broadcom/etc/init.d/layer2_interface_ethernet @@ -18,46 +18,6 @@ get_current_status() { fi } -removeethernet() { - config_get baseifname $1 baseifname - config_get ifname $1 ifname - - ifname="${ifname:-$baseifname.1}" - - vlanctl --if-delete $ifname - config_load layer2_interface_vlan - #kill all vlans related to this interface - config_foreach removevlan vlan_interface -} - -removevlan() { - local baseifname - local ifname - local wan=`uci -q get layer2_interface_ethernet.Wan.baseifname` - - config_get baseifname $1 baseifname - config_get ifname $1 ifname - - ifname="${ifname:-$baseifname.1}" - - if [ "$wan" == "$baseifname" ]; then - echo "vlanctl --if-delete $ifname" - vlanctl --if-delete $ifname - fi -} - -addethernet() { - config_get baseifname $1 baseifname - config_get ifname $1 ifname - config_get bridge $1 bridge - config_get mac2 $1 mac2 - - ifname="${ifname:-$baseifname.1}" - - brcm_virtual_interface_rules "$baseifname" "$ifname" "$bridge" "$mac2" - -} - boot() { local baseifname wanport portnum config_load layer2_interface_ethernet @@ -94,26 +54,4 @@ boot() { [ -n $baseifname ] && ifconfig $baseifname up } -start_service() { - local baseifname - echo "Setting up Ethernet WAN" - config_load layer2_interface_ethernet - config_foreach addethernet ethernet_interface -} - -stop_service() { - local ifname - config_load layer2_interface_ethernet - config_foreach removeethernet ethernet_interface -} - -reload_service() { - stop - start -} - -service_triggers() { - procd_add_reload_trigger layer2_interface_ethernet -} - diff --git a/layer2interface/broadcom/etc/init.d/layer2_interface_vlan b/layer2interface/broadcom/etc/init.d/layer2_interface_vlan index 6689ec55f..15f28c1c3 100755 --- a/layer2interface/broadcom/etc/init.d/layer2_interface_vlan +++ b/layer2interface/broadcom/etc/init.d/layer2_interface_vlan @@ -1,47 +1,35 @@ #!/bin/sh /etc/rc.common . /lib/functions.sh -include /lib/network START=22 USE_PROCD=1 vlan_inf_conf() { - local baseifname - local vlan8021p - local vlan8021q - local routed + local name baseifname ifname + local vlan8021p vlan8021q + + config_get name $1 name config_get baseifname $1 baseifname config_get ifname $1 ifname config_get vlan8021p $1 vlan8021p config_get vlan8021q $1 vlan8021q - config_get bridge $1 bridge - ifname="${ifname:-$baseifname.$vlan8021q}" + [ -n "$name" ] || return - addbrcmvlan "$baseifname" "$vlan8021p" "$vlan8021q" "$bridge" "$ifname" + uci -q set network.$name=device + uci -q set network.$name.type=8021q + uci -q set network.$name.priority=$vlan8021p + uci -q set network.$name.vid="$vlan8021q" + uci -q set network.$name.ifname="$baseifname" + uci -q set network.$name.name="$baseifname.$vlan8021q" } -boot() { - echo "VLAN does not run at boot" -} start_service() { - local vdslstatus - echo "Starting VLAN" - config_load layer2_interface_vlan config_foreach vlan_inf_conf vlan_interface -} - -stop_service() { - echo "Stopping VLAN" - removeall_vlandevices -} - -reload_service() { - stop - start + ubus call uci commit '{"config":"network"}' } service_triggers() { diff --git a/layer2interface/broadcom/etc/uci-defaults/20-layer2-config-generate b/layer2interface/broadcom/etc/uci-defaults/20-layer2-config-generate index 8781884b4..48310d352 100644 --- a/layer2interface/broadcom/etc/uci-defaults/20-layer2-config-generate +++ b/layer2interface/broadcom/etc/uci-defaults/20-layer2-config-generate @@ -113,15 +113,32 @@ EOF populate_network_config_ifnames() { uci -q get network.lan.ifname >/dev/null || uci -q set network.lan.ifname="$LANPORTS" -# uci -q get network.wan.ifname >/dev/null || uci -q set network.wan.ifname="$WANPORTS" - uci -q get network.wan.ifname >/dev/null || uci -q set network.wan.ifname="$(db -q get hw.board.ethernetWanPort)" - uci commit network + + [ "$hasEthWan" == "0" ] && { + uci -q commit network + return + } + + WANPORT="$(db -q get hw.board.ethernetWanPort)" + WANIFACE="${WANPORT}.1" + + uci -q get network.ethwan >/dev/null || { + uci -q set network.ethwan=device + uci -q set network.ethwan.type=8021q + uci -q set network.ethwan.untagged=1 + uci -q set network.ethwan.ifname="$WANPORT" + uci -q set network.ethwan.name="$WANIFACE" + } + + uci -q get network.wan.ifname || uci -q set network.wan.ifname="$WANIFACE" + + uci -q commit network } #populate_layer2_interface #populate_layer2_interface_vdsl #populate_layer2_interface_adsl -#populate_layer2_interface_ethernet +populate_layer2_interface_ethernet populate_network_config_ifnames sync