aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJo-Philipp Wich <jow@openwrt.org>2011-02-11 00:39:11 +0000
committerJo-Philipp Wich <jow@openwrt.org>2011-02-11 00:39:11 +0000
commit875ff445925ff10df5bf7c491c007de661248003 (patch)
treec116d9d00d1efc4e120937f8310ba31888861998
parent4e34fc521c3711c736c16c385f232fcd28408fc3 (diff)
downloadupstream-875ff445925ff10df5bf7c491c007de661248003.tar.gz
upstream-875ff445925ff10df5bf7c491c007de661248003.tar.bz2
upstream-875ff445925ff10df5bf7c491c007de661248003.zip
base-files: - properly disable IPv6 on bridge ports - introduce accept_ra option, defaults to true for dhcp interfaces, false for others - introduce send_rs option, defaults to true for static interfaces, false for others
SVN-Revision: 25454
-rw-r--r--package/base-files/Makefile2
-rw-r--r--package/base-files/files/etc/hotplug.d/iface/10-routes27
-rwxr-xr-xpackage/base-files/files/lib/network/config.sh7
3 files changed, 30 insertions, 6 deletions
diff --git a/package/base-files/Makefile b/package/base-files/Makefile
index 68d9e18ed2..90a65d61de 100644
--- a/package/base-files/Makefile
+++ b/package/base-files/Makefile
@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=base-files
-PKG_RELEASE:=65
+PKG_RELEASE:=66
PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/
PKG_BUILD_DEPENDS:=opkg/host
diff --git a/package/base-files/files/etc/hotplug.d/iface/10-routes b/package/base-files/files/etc/hotplug.d/iface/10-routes
index 3e0bebbbe3..76a4062846 100644
--- a/package/base-files/files/etc/hotplug.d/iface/10-routes
+++ b/package/base-files/files/etc/hotplug.d/iface/10-routes
@@ -90,6 +90,33 @@ case "$ACTION" in
ifconfig "$DEVICE" del "$ip6addr"
ifconfig "$DEVICE" add "$ip6addr"
}
+
+ # Setup sysctls
+ local proto accept_ra send_rs
+
+ config_get proto "$INTERFACE" proto
+ if [ "$proto" = dhcp ]; then
+ accept_ra=1
+ send_rs=0
+ else
+ accept_ra=0
+ send_rs=1
+ fi
+
+ config_get_bool accept_ra "$INTERFACE" accept_ra $accept_ra
+ [ $accept_ra -eq 0 ] || {
+ logger -t ifup "Allowing Router Advertisements on $INTERFACE ($DEVICE)"
+ accept_ra=2
+ }
+ do_sysctl "net.ipv6.conf.$INTERFACE.accept_ra" $accept_ra
+
+ config_get_bool send_rs "$INTERFACE" send_rs $send_rs
+ [ $send_rs -eq 0 ] || {
+ logger -t ifup "Enabling Router Solicitations on $INTERFACE ($DEVICE)"
+ send_rs=2
+ }
+ do_sysctl "net.ipv6.conf.$INTERFACE.forwarding" $send_rs
+
# Setup routes
config_foreach "add_route" route
diff --git a/package/base-files/files/lib/network/config.sh b/package/base-files/files/lib/network/config.sh
index 4a6cb7cb47..aa90077ad9 100755
--- a/package/base-files/files/lib/network/config.sh
+++ b/package/base-files/files/lib/network/config.sh
@@ -170,11 +170,6 @@ prepare_interface() {
local macaddr
config_get macaddr "$config" macaddr
[ -x /usr/sbin/brctl ] && {
- # Disable IPv6 for bridge ports
- do_sysctl net.ipv6.conf.$iface.disable_ipv6 1
- [ "${iface##wlan}" != "$iface" ] && \
- do_sysctl net.ipv6.conf.mon.$iface.disable_ipv6 1
-
ifconfig "br-$config" 2>/dev/null >/dev/null && {
local newdevs devices
config_get devices "$config" device
@@ -183,6 +178,7 @@ prepare_interface() {
done
uci_set_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"
# Bridge existed already. No further processing necesary
} || {
@@ -192,6 +188,7 @@ prepare_interface() {
$DEBUG brctl setfd "br-$config" 0
$DEBUG ifconfig "br-$config" up
$DEBUG ifconfig "$iface" 0.0.0.0
+ $DEBUG do_sysctl "net.ipv6.conf.$iface.disable_ipv6" 1
$DEBUG brctl addif "br-$config" "$iface"
$DEBUG brctl stp "br-$config" $stp
# Creating the bridge here will have triggered a hotplug event, which will