#!/bin/sh /etc/rc.common START=15 USE_PROCD=1 _setup_macaddr() { uci -q get "network.$1_dev.macaddr" >/dev/null && return uci -q set "network.$1_dev.macaddr=$2" } # Configuration by interface _setup_interface() { # do not create macvlan for vlan local _ifname config_get _ifname "$1" ifname case "$_ifname" in eth*.*) return ;; esac local _type config_get _type "$1" type uci -q get "network.$1_dev.ifname" >/dev/null && { [ "$_type" = "macvlan" ] || { uci -q batch <<-EOF delete network.$1_dev commit network EOF } return 0 } [ "$_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 set network.$1.ifname=$1 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.type=macvlan" # legacy uci -q commit network } start_service() { . /lib/functions.sh config_load network config_foreach _setup_interface interface } reload_service() { start } service_triggers() { procd_add_reload_trigger network }