base-files: - properly disable IPv6 on bridge ports - introduce accept_ra option...
authorJo-Philipp Wich <jow@openwrt.org>
Fri, 11 Feb 2011 00:39:11 +0000 (00:39 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Fri, 11 Feb 2011 00:39:11 +0000 (00:39 +0000)
SVN-Revision: 25454

package/base-files/Makefile
package/base-files/files/etc/hotplug.d/iface/10-routes
package/base-files/files/lib/network/config.sh

index 68d9e18ed25a3e3d1b6804e8c123fee2dde8edb1..90a65d61de5bdae3aba444831800dc6ab7c4c039 100644 (file)
@@ -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
index 3e0bebbbe3bd6ce198ff749ab7999fac3e149caf..76a406284622c6dab635fadad4e14d97e28aaa69 100644 (file)
@@ -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
index 4a6cb7cb47ac33112ad147d0e08e230b1202f51b..aa90077ad9e9d2ff1c6e7e8dc21284316b0c2197 100755 (executable)
@@ -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