layer2interface: let netifd and vlanconf handle tagged and untagged vlans

This commit is contained in:
Sukru Senli 2017-12-24 16:31:55 +01:00
parent dd22d60889
commit 60dae510cc
3 changed files with 33 additions and 90 deletions

View file

@ -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
}

View file

@ -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() {

View file

@ -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