+
+ local ipaddr netmask ip6addr
+ config_get ipaddr "$config" ipaddr
+ config_get netmask "$config" netmask
+ config_get ip6addr "$config" ip6addr
+ [ -z "$ipaddr" -o -z "$netmask" ] && [ -z "$ip6addr" ] && return 1
+
+ local gateway ip6gw dns bcast
+ config_get gateway "$config" gateway
+ config_get ip6gw "$config" ip6gw
+ config_get dns "$config" dns
+ config_get bcast "$config" broadcast
+
+ [ -z "$ipaddr" ] || $DEBUG ifconfig "$iface" "$ipaddr" netmask "$netmask" broadcast "${bcast:-+}"
+ [ -z "$ip6addr" ] || $DEBUG ifconfig "$iface" add "$ip6addr"
+ [ -z "$gateway" ] || $DEBUG route add default gw "$gateway" dev "$iface"
+ [ -z "$ip6gw" ] || $DEBUG route -A inet6 add default gw "$ip6gw" dev "$iface"
+ [ -z "$dns" ] || {
+ for ns in $dns; do
+ grep "$ns" /tmp/resolv.conf.auto 2>/dev/null >/dev/null || {
+ echo "nameserver $ns" >> /tmp/resolv.conf.auto
+ }
+ done
+ }
+
+ config_get type "$config" TYPE
+ [ "$type" = "alias" ] && return 0
+
+ env -i ACTION="ifup" INTERFACE="$config" DEVICE="$iface" PROTO=static /sbin/hotplug-call "iface" &
+}
+
+setup_interface_alias() {
+ local config="$1"
+ local parent="$2"
+ local iface="$3"
+
+ local cfg
+ config_get cfg "$config" interface
+ [ "$parent" == "$cfg" ] || return 0
+
+ # alias counter
+ local ctr
+ config_get ctr "$parent" alias_count 0
+ ctr="$(($ctr + 1))"
+ config_set "$parent" alias_count "$ctr"
+
+ # alias list
+ local list
+ config_get list "$parent" aliases
+ append list "$config"
+ config_set "$parent" aliases "$list"
+
+ iface="$iface:$ctr"
+ set_interface_ifname "$config" "$iface"
+