From 370e79ea76aabc5e201002fdf7b742c50e89c997 Mon Sep 17 00:00:00 2001 From: jow Date: Fri, 11 Feb 2011 00:39:11 +0000 Subject: [package] 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 git-svn-id: svn://svn.openwrt.org/openwrt/trunk@25454 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/Makefile | 2 +- .../base-files/files/etc/hotplug.d/iface/10-routes | 27 ++++++++++++++++++++++ package/base-files/files/lib/network/config.sh | 7 ++---- 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/package/base-files/Makefile b/package/base-files/Makefile index 68d9e18ed..90a65d61d 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 3e0bebbbe..76a406284 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 4a6cb7cb4..aa90077ad 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 -- cgit v1.2.3