mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-03-09 15:40:03 +00:00
Convert luci-app-macvlan to client side rendering
This commit is contained in:
parent
7953a89337
commit
c8be607e09
9 changed files with 60 additions and 115 deletions
0
luci-app-macvlan/root/etc/config/macvlan
Normal file
0
luci-app-macvlan/root/etc/config/macvlan
Normal file
161
luci-app-macvlan/root/etc/init.d/macvlan
Executable file
161
luci-app-macvlan/root/etc/init.d/macvlan
Executable file
|
@ -0,0 +1,161 @@
|
|||
#!/bin/sh /etc/rc.common
|
||||
|
||||
START=4
|
||||
USE_PROCD=1
|
||||
|
||||
_setup_macaddr() {
|
||||
uci -q get "network.$1_dev.macaddr" >/dev/null && return
|
||||
uci -q set "network.$1_dev.macaddr=$2"
|
||||
}
|
||||
|
||||
_save_macaddr() {
|
||||
local _ifname
|
||||
local _macaddr
|
||||
uci -q get "network.$1_dev.ifname" >/dev/null && {
|
||||
_ifname=$(uci -q get "network.$1.ifname")
|
||||
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
|
||||
}
|
||||
[ -z "$(uci -q get network.$1.macaddr)" ] && {
|
||||
_ifname=$(uci -q get "network.$1.ifname")
|
||||
[ -n "$_ifname" ] && {
|
||||
_macaddr=$(ip link show dev $_ifname 2>/dev/null | grep link | awk '{print $2}')
|
||||
[ -n "$_macaddr" ] && {
|
||||
uci -q set network.$1.macaddr=$_macaddr
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_create_interface() {
|
||||
local _masterifname
|
||||
config_get _ifname "$1" name
|
||||
# Convert from old config without name defined
|
||||
[ -z "$_ifname" ] && {
|
||||
uci batch <<-EOF
|
||||
set macvlan.$1.name=$1
|
||||
commit macvlan
|
||||
EOF
|
||||
_ifname=$1
|
||||
}
|
||||
config_get _masterifname "$1" ifname
|
||||
uci batch <<-EOF
|
||||
set network.$_ifname=interface
|
||||
set network.$_ifname.type=macvlan
|
||||
set network.$_ifname.proto=static
|
||||
set network.$_ifname.masterintf=$_masterifname
|
||||
EOF
|
||||
}
|
||||
|
||||
# Configuration by interface
|
||||
_setup_interface() {
|
||||
local _ifname
|
||||
config_get _ifname "$1" ifname
|
||||
#[ -z "$_ifname" ] && config_get _ifname "$1" ifname
|
||||
# do not create macvlan for vlan
|
||||
#case "$_ifname" in
|
||||
# eth*.*) return ;;
|
||||
#esac
|
||||
local _type
|
||||
config_get _type "$1" type
|
||||
|
||||
[ "$_type" = "macvlan" ] && [ "$(uci -q get macvlan.$1)" = "" ] && {
|
||||
uci -q batch <<-EOF
|
||||
delete network.$1
|
||||
delete network.$1_dev
|
||||
commit network
|
||||
EOF
|
||||
return
|
||||
}
|
||||
|
||||
[ "$(echo $1 | grep _dev)" != "" ] && {
|
||||
local _intfdev=$(sed 's/_dev//' $1)
|
||||
uci -q get "network.$_intfdev.ifname" >/dev/null || {
|
||||
logger -t "macvlan" "Remove network.$1"
|
||||
uci -q batch <<-EOF
|
||||
delete network.$1
|
||||
commit network
|
||||
delete macvlan.$1
|
||||
commit macvlan
|
||||
EOF
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
#_type="$(uci -q get network.$1.type)
|
||||
if [ "$(uci -q get macvlan.$1)" != "" ]; then
|
||||
_type="macvlan"
|
||||
fi
|
||||
|
||||
uci -q get "network.$1_dev.ifname" >/dev/null && {
|
||||
uci -q set network.$1_dev.mtu=$(uci -q get network.$1.mtu)
|
||||
[ -n "$(uci -q get macvlan.$1.ifname)" ] && uci -q set network.$1_dev.ifname=$(uci -q get macvlan.$1.ifname)
|
||||
[ -z "$(uci -q get network.$1.masterintf)" ] && uci -q set network.$1.masterintf=$(uci -q get network.$1_dev.ifname)
|
||||
[ -n "$(uci -q get network.$1.masterintf)" ] && uci -q set network.$1_dev.ifname=$(uci -q get network.$1.masterintf)
|
||||
[ -z "$(uci -q get network.$1.macaddr)" ] && uci -q set network.$1_dev.macaddr=$(uci -q get network.$1.macaddr)
|
||||
[ "$_type" = "macvlan" ] || {
|
||||
logger -t "macvlan" "Remove network.$1_dev"
|
||||
uci -q batch <<-EOF
|
||||
delete network.$1_dev
|
||||
set network.$1.ifname=$(uci -q get network.$1.masterintf)
|
||||
delete network.$1.masterintf
|
||||
EOF
|
||||
}
|
||||
[ "$_type" = "macvlan" ] && {
|
||||
local interface
|
||||
config_get _interface "$1" interface
|
||||
[ -n "$_interface" ] && {
|
||||
logger -t "macvlan" "Remove network.$1_dev"
|
||||
uci -q batch <<-EOF
|
||||
delete network.$1
|
||||
set network.$1_dev.ifname=$_interface
|
||||
EOF
|
||||
}
|
||||
}
|
||||
uci -q commit network
|
||||
return 0
|
||||
}
|
||||
|
||||
[ "$_type" = "macvlan" ] || return 0
|
||||
[ -z "$_ifname" ] && _ifname=$(uci -q get macvlan.$1.ifname)
|
||||
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
|
||||
set network.$1.ifname=$1
|
||||
set network.$1.masterintf=$_ifname
|
||||
set network.$1.type=macvlan
|
||||
set network.$1.defaultroute=0
|
||||
EOF
|
||||
|
||||
_macaddr=$(uci -q get "network.$1.macaddr")
|
||||
_setup_macaddr "$1" "${_macaddr:-auto$(date +%s)}"
|
||||
uci -q set network.$1_dev.mtu=$(uci -q get network.$1.mtu)
|
||||
uci -q commit network
|
||||
}
|
||||
|
||||
start_service() {
|
||||
. /lib/functions.sh
|
||||
config_load macvlan
|
||||
config_foreach _create_interface macvlan
|
||||
config_load network
|
||||
config_foreach _setup_interface interface
|
||||
config_foreach _save_macaddr interface
|
||||
uci -q commit network
|
||||
}
|
||||
|
||||
reload_service() {
|
||||
start
|
||||
}
|
||||
|
||||
service_triggers() {
|
||||
procd_add_reload_trigger network macvlan
|
||||
}
|
11
luci-app-macvlan/root/etc/uci-defaults/40_luci-app-macvlan
Normal file
11
luci-app-macvlan/root/etc/uci-defaults/40_luci-app-macvlan
Normal file
|
@ -0,0 +1,11 @@
|
|||
#!/bin/sh
|
||||
|
||||
uci -q batch <<-EOF >/dev/null
|
||||
delete ucitrack.@macvlan[-1]
|
||||
add ucitrack macvlan
|
||||
set ucitrack.@macvlan[-1].init=macvlan
|
||||
commit ucitrack
|
||||
EOF
|
||||
|
||||
rm -f /tmp/luci-indexcache
|
||||
exit 0
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"admin/network/macvlan": {
|
||||
"title": "Macvlan",
|
||||
"order": 60,
|
||||
"action": {
|
||||
"type": "view",
|
||||
"path": "network/macvlan"
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue