1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter-feeds.git synced 2025-02-15 03:51:51 +00:00
openmptcprouter-feeds/luci-mod-admin-full/root/etc/init.d/macvlan

119 lines
3 KiB
Text
Raw Normal View History

2018-02-24 13:30:42 +00:00
#!/bin/sh /etc/rc.common
2018-01-23 14:36:03 +00:00
2018-09-05 20:58:12 +00:00
START=4
2018-02-24 13:30:42 +00:00
USE_PROCD=1
2018-01-23 14:36:03 +00:00
_setup_macaddr() {
uci -q get "network.$1_dev.macaddr" >/dev/null && return
uci -q set "network.$1_dev.macaddr=$2"
}
2018-09-05 20:58:12 +00:00
_save_macaddr() {
local _ifname
2018-09-06 15:14:01 +00:00
local _macaddr
2018-09-05 20:58:12 +00:00
uci -q get "network.$1_dev.ifname" >/dev/null && {
_ifname=$(uci -q get "network.$1.ifname")
2018-12-28 12:18:50 +00:00
if [ -n "$(uci -q get network.$1.macaddr)" ] && [ "$(uci -q get network.$1.macaddr)" != "$(uci -q get network.$1_dev.macaddr)" ]; then
uci -q set network.$1_dev.macaddr="$(uci -q get network.$1.macaddr)"
else
_macaddr=$(ip link show dev $_ifname 2>/dev/null | grep link | awk '{print $2}')
[ -n "$_macaddr" ] && {
uci -q set network.$1_dev.macaddr=$_macaddr
uci -q set network.$1.macaddr=$_macaddr
}
fi
2018-09-06 15:14:01 +00:00
}
[ -z "$(uci -q get network.$1.macaddr)" ] && {
_ifname=$(uci -q get "network.$1.ifname")
[ -n "$_ifname" ] && {
2018-09-07 13:39:51 +00:00
_macaddr=$(ip link show dev $_ifname 2>/dev/null | grep link | awk '{print $2}')
2018-09-06 15:14:01 +00:00
[ -n "$_macaddr" ] && {
uci -q set network.$1.macaddr=$_macaddr
}
}
2018-09-05 20:58:12 +00:00
}
}
2018-01-23 14:36:03 +00:00
# Configuration by interface
_setup_interface() {
local _ifname
config_get _ifname "$1" ifname
2018-12-04 15:55:29 +00:00
[ -z "$_ifname" ] && config_get _ifname "$1" ifname
2018-09-15 19:13:12 +00:00
# do not create macvlan for vlan
#case "$_ifname" in
# eth*.*) return ;;
#esac
2018-01-23 14:36:03 +00:00
2018-07-01 05:29:41 +00:00
[ "$(echo $1 | grep _dev)" != "" ] && {
2018-06-29 16:27:37 +00:00
local _intfdev=$(sed 's/_dev//' $1)
2018-12-28 12:18:50 +00:00
uci -q get "network.$_intfdev.ifname" >/dev/null || {
2018-06-29 16:27:37 +00:00
uci -q batch <<-EOF
delete network.$1
commit network
EOF
}
return
}
2018-01-23 14:36:03 +00:00
local _type
config_get _type "$1" type
2018-02-24 09:19:34 +00:00
uci -q get "network.$1_dev.ifname" >/dev/null && {
2018-08-13 20:45:44 +00:00
uci -q set network.$1_dev.mtu=$(uci -q get network.$1.mtu)
[ -z "$(uci -q get network.$1.masterintf)" ] && uci -q set network.$1.masterintf=$(uci -q get network.$1_dev.ifname)
2018-10-12 15:14:15 +00:00
[ -n "$(uci -q get network.$1.masterintf)" ] && uci -q set network.$1_dev.ifname=$(uci -q get network.$1.masterintf)
2018-09-05 20:58:12 +00:00
[ -z "$(uci -q get network.$1.macaddr)" ] && uci -q set network.$1_dev.macaddr=$(uci -q get network.$1.macaddr)
2018-02-24 09:19:34 +00:00
[ "$_type" = "macvlan" ] || {
uci -q batch <<-EOF
delete network.$1_dev
EOF
}
2018-06-27 17:57:08 +00:00
[ "$_type" = "macvlan" ] && {
2018-12-04 15:55:29 +00:00
local interface
2018-06-27 17:57:08 +00:00
config_get _interface "$1" interface
[ -n "$_interface" ] && {
uci -q batch <<-EOF
delete network.$1.interface
set network.$1_dev.ifname=$_interface
EOF
}
}
uci -q commit network
2018-02-24 09:19:34 +00:00
return 0
}
2018-01-23 14:36:03 +00:00
[ "$_type" = "macvlan" ] || return 0
uci -q batch <<-EOF
set network.$1_dev=device
set network.$1_dev.name=$1
set network.$1_dev.type=macvlan
set network.$1_dev.ifname=$_ifname
2018-01-23 14:36:03 +00:00
set network.$1.ifname=$1
set network.$1.masterintf=$_ifname
set network.$1.type=macvlan
2018-01-23 14:36:03 +00:00
set network.$1.defaultroute=0
EOF
_macaddr=$(uci -q get "network.$1.macaddr")
_setup_macaddr "$1" "${_macaddr:-auto$(date +%s)}"
2018-08-13 20:45:44 +00:00
uci -q set network.$1_dev.mtu=$(uci -q get network.$1.mtu)
2018-02-23 12:53:33 +00:00
uci -q commit network
2018-01-23 14:36:03 +00:00
}
2018-02-24 13:30:42 +00:00
start_service() {
. /lib/functions.sh
config_load network
config_foreach _setup_interface interface
2018-09-05 20:58:12 +00:00
config_foreach _save_macaddr interface
uci -q commit network
2018-02-24 13:30:42 +00:00
}
reload_service() {
start
}
service_triggers() {
procd_add_reload_trigger network
}