6relayd: Add DHCPv6-PD server support, fix relaying in stateful mode
[openwrt/svn-archive/archive.git] / package / network / ipv6 / 6relayd / files / 6relayd.init
index 790396e574a0a116d48e5d1f445928a352415612..f6d5183716df8a80da33b2d166e750e362cfafd6 100644 (file)
@@ -1,8 +1,6 @@
 #!/bin/sh /etc/rc.common
 # Copyright (c) 2011-2012 OpenWrt.org
 START=80
-. /lib/functions/network.sh
-. /lib/functions/service.sh
 
 start_6relayd() {
        local cfg="$1"
@@ -68,15 +66,20 @@ start_6relayd() {
        fi
 
        # Configure feature options
-       local always_rewrite_dns
+       local always_rewrite_dns rewrite_dns_addr
        config_get_bool always_rewrite_dns "$cfg" always_rewrite_dns 0
-       [ "$always_rewrite_dns" -eq 1 ] && append args "-n"
+       config_get rewrite_dns_addr "$cfg" rewrite_dns_addr
+       [ "$always_rewrite_dns" -eq 1 -o -n "$rewrite_dns_addr" ] && append args "-n$rewrite_dns_addr"
 
        local always_assume_default
        config_get_bool always_assume_default "$cfg" always_assume_default 0
        [ "$always_assume_default" -eq 1 ] && append args "-u"
 
-       [ "$ndp" = "relay" ] && append args "-N -s -l"
+       local compat_ula
+       config_get_bool compat_ula "$cfg" compat_ula 0
+       [ "$compat_ula" -eq 1 ] && append args "-c"
+
+       [ "$ndp" = "relay" ] && append args "-N -s"
        [ "$rd" = "relay" ] && append args "-Rrelay"
        [ "$rd" = "server" ] && append args "-Rserver"
        [ "$dhcpv6" = "relay" ] && append args "-Drelay"
@@ -106,6 +109,8 @@ restart_affected_6relayd() {
 }
 
 restart_affected() {
+       . /lib/functions/service.sh
+       . /lib/functions/network.sh
        local net="$1"
        config_load 6relayd
        config_foreach restart_affected_6relayd server "$net"
@@ -113,6 +118,7 @@ restart_affected() {
 }
 
 stop() {
+       . /lib/functions/service.sh
        for pid in /var/run/6relayd-*.pid; do
                SERVICE_PID_FILE="$pid"
                service_stop /usr/sbin/6relayd
@@ -121,6 +127,8 @@ stop() {
 }
 
 start() {
+       . /lib/functions/service.sh
+       . /lib/functions/network.sh
        config_load 6relayd
        config_foreach start_6relayd server
        config_foreach start_6relayd relay relay