mirror of
https://dev.iopsys.eu/feed/iopsys.git
synced 2026-03-14 21:10:11 +01:00
layer2interface: merge layer2_interface ethernet and vlan in layer2
This commit is contained in:
parent
ac21f3c757
commit
e39081a494
2 changed files with 45 additions and 65 deletions
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
@ -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
|
||||
}
|
||||
|
||||
Loading…
Add table
Reference in a new issue