sysctl -n -e "$1"
}
+map_sysctls() {
+ local cfg="$1"
+ local ifn="$2"
+
+ local fam
+ for fam in ipv4 ipv6; do
+ if [ -d /proc/sys/net/$fam ]; then
+ local key
+ for key in /proc/sys/net/$fam/*/$ifn/*; do
+ local val
+ config_get val "$cfg" "${fam}_${key##*/}"
+ [ -n "$val" ] && echo -n "$val" > "$key"
+ done
+ fi
+ done
+}
+
find_config() {
local iftype device iface ifaces ifn
for ifn in $interfaces; do
done
[ -n "$cfg" ] && {
- uci_set_state network "$cfg" dns "$add"
- uci_set_state network "$cfg" resolv_dns "$add"
+ uci_toggle_state network "$cfg" dns "$add"
+ uci_toggle_state network "$cfg" resolv_dns "$add"
}
}
ifconfig "$iface" down
ifconfig "$iface" hw ether "$vifmac" up
}
+
+ # Apply sysctl settings
+ map_sysctls "$config" "$iface"
}
# Setup VLAN interfaces
for dev in $(sort_list "$devices" "$iface"); do
append newdevs "$dev"
done
- uci_set_state network "$config" device "$newdevs"
+ uci_toggle_state network "$config" device "$newdevs"
$DEBUG ifconfig "$iface" 0.0.0.0
$DEBUG do_sysctl "net.ipv6.conf.$iface.disable_ipv6" 1
$DEBUG brctl addif "br-$config" "$iface"
local device
config_get device "$1" device
- uci_set_state network "$config" ifname "$ifname"
- uci_set_state network "$config" device "$device"
+ uci_toggle_state network "$config" ifname "$ifname"
+ uci_toggle_state network "$config" device "$device"
}
setup_interface_none() {
config_get bcast "$config" broadcast
config_get metric "$config" metric
+ case "$ip6addr" in
+ */*) ;;
+ *:*) ip6addr="$ip6addr/64" ;;
+ esac
+
[ -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" ${metric:+metric $metric} dev "$iface"