layer2interface: merge layer2_interface ethernet and vlan in layer2

This commit is contained in:
Sukru Senli 2017-12-26 12:05:28 +01:00
parent ac21f3c757
commit e39081a494
2 changed files with 45 additions and 65 deletions

View file

@ -3,7 +3,7 @@
. /lib/functions.sh
include /lib/network
START=22
START=19
USE_PROCD=1
DEVICE_ADDED=0
@ -20,7 +20,7 @@ get_current_status() {
fi
}
untagged_vlan_exists() {
device_config_exists() {
ubus call uci get '{"config":"network","type":"device"}' | grep -w name | grep -qw "$1" && return 0
return 1
}
@ -33,7 +33,7 @@ configure_ethernet_iface() {
config_get ifname $1 ifname
[ -n "$ifname" -a -n "$name" ] || return
untagged_vlan_exists "$ifname" && return
device_config_exists "$ifname" && return
uci -q set network.$name=device
uci -q set network.$name.type=untagged
@ -43,19 +43,44 @@ configure_ethernet_iface() {
DEVICE_ADDED=1
}
configure_vlan_iface() {
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
[ -n "$ifname" -a -n "$name" ] || return
device_config_exists "$ifname" && return
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="$ifname"
DEVICE_ADDED=1
}
start_service() {
config_load layer2_interface_ethernet
config_foreach configure_ethernet_iface ethernet_interface
config_load layer2_interface_vlan
config_foreach configure_vlan_iface vlan_interface
[ $DEVICE_ADDED -eq 1 ] && ubus call uci commit '{"config":"network"}'
}
boot() {
local baseifname wanport portnum
local baseifname port unit
config_load layer2_interface_ethernet
config_get baseifname Wan baseifname
config_get ifname Wan ifname
[ -n "$baseifname" ] || baseifname="$(db -q get hw.board.ethernetWanPort)"
@ -67,29 +92,32 @@ boot() {
ethctl $baseifname phy-power up
fi
fi
for interf in `db get hw.board.ethernetPortOrder`; do ethswctl -c wan -i $interf -o disable ; done
wanport=$(db get hw.board.ethernetWanPort)
unit=$(echo $(get_port_number $wanport) | cut -d ' ' -f 1)
port=$(echo $(get_port_number $wanport) | cut -d ' ' -f 2)
for interf in $(db get hw.board.ethernetPortOrder); do
ethswctl -c wan -i $interf -o disable
done
unit=$(echo $(get_port_number $baseifname) | cut -d ' ' -f 1)
port=$(echo $(get_port_number $baseifname) | cut -d ' ' -f 2)
ethswctl -c pause -n $unit -p $port -v 1
ethswctl -c hw-switching -o enable
if [ $baseifname ]; then
if [ -n "$baseifname" ]; then
ethswctl -c wan -i $baseifname -o enable
fi
if [ "`db get hw.board.tm`" == "1" ]; then
for interf in `db get hw.board.ethernetPortOrder`; do
tmctl porttminit --devtype ETH --if $interf --flag 1 || \
echo "ERROR: porttminit $interf failed!" > /dev/kmsg
if [ "$(db get hw.board.tm)" == "1" ]; then
for interf in $(db get hw.board.ethernetPortOrder); do
tmctl porttminit --devtype ETH --if $interf --flag 1 || echo "ERROR: porttminit $interf failed!" > /dev/kmsg
done
fi
[ -n "$ifname" ] && echo '1' > /proc/sys/net/ipv6/conf/$baseifname/disable_ipv6
[ -n $baseifname ] && ifconfig $baseifname up
start
}
service_triggers() {
procd_add_reload_trigger layer2_interface_ethernet
procd_add_reload_trigger layer2_interface_ethernet layer2_interface_vlan
}

View file

@ -1,48 +0,0 @@
#!/bin/sh /etc/rc.common
. /lib/functions.sh
START=22
USE_PROCD=1
DEVICE_ADDED=0
vlan_exists() {
ubus call uci get '{"config":"network","type":"device"}' | grep -w name | grep -qw "$1" && return 0
return 1
}
vlan_inf_conf() {
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
[ -n "$ifname" -a -n "$name" ] || return
vlan_exists "$ifname" && return
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="$ifname"
DEVICE_ADDED=1
}
start_service() {
config_load layer2_interface_vlan
config_foreach vlan_inf_conf vlan_interface
[ $DEVICE_ADDED -eq 1 ] && ubus call uci commit '{"config":"network"}'
}
service_triggers() {
procd_add_reload_trigger layer2_interface_vlan
}