add cname section
[openwrt/svn-archive/archive.git] / package / base-files / files / etc / hotplug.d / iface / 10-routes
index 14fb75eec2b01b1fd5a782da3fe25016a180a6d5..d57a5b3c780a93a7e25434daba64d41b2b1039fe 100644 (file)
@@ -13,6 +13,7 @@ add_route() {
        config_get netmask "$config" netmask
        config_get gateway "$config" gateway
        config_get metric "$config" metric
+       config_get mtu "$config" mtu
 
        # make sure there is a gateway and a target
        [ -n "$target" ] || {
@@ -33,7 +34,8 @@ add_route() {
        dest="${dest:--host "$target"}"
        
        /sbin/route add $dest ${gateway:+gw "$gateway"} \
-               ${dev:+dev "$dev"} ${metric:+ metric "$metric"}
+               ${dev:+dev "$dev"} ${metric:+ metric "$metric"} \
+               ${mtu:+mss "$mtu"}
 }
 
 add_route6() {
@@ -50,6 +52,7 @@ add_route6() {
        config_get target "$config" target
        config_get gateway "$config" gateway
        config_get metric "$config" metric
+       config_get mtu "$config" mtu
 
        # make sure there is a gateway and a target
        [ -n "$target" ] || {
@@ -61,9 +64,13 @@ add_route6() {
        }
 
        /sbin/route -A inet6 add $target ${gateway:+gw "$gateway"} \
-               ${dev:+dev "$dev"} ${metric:+ metric "$metric"}
+               ${dev:+dev "$dev"} ${metric:+ metric "$metric"} \
+               ${mtu:+mss "$mtu"}
 }
 
+# Skip fake devices (e.g. relayd)
+grep -qs "^ *$DEVICE:" /proc/net/dev || exit 0
+
 case "$ACTION" in
        ifup)
                include /lib/network
@@ -77,7 +84,7 @@ case "$ACTION" in
                # Save alias references in state vars
                local aliases
                config_get aliases "$INTERFACE" aliases
-               [ -z "$aliases" ] || uci_set_state network "$INTERFACE" aliases "$aliases"
+               [ -z "$aliases" ] || uci_toggle_state network "$INTERFACE" aliases "$aliases"
 
                # Make ip6addr of parent iface the main address again
                local ip6addr
@@ -86,6 +93,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.$DEVICE.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.$DEVICE.forwarding" $send_rs
+
 
                # Setup routes
                config_foreach "add_route" route