#!/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 -w "$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 }