odhcp6c: remove IPv6 forwarding-sysctl workaround
[openwrt.git] / package / network / ipv6 / odhcp6c / files / dhcpv6.script
1 #!/bin/sh
2 [ -z "$2" ] && echo "Error: should be run by odhcpc6c" && exit 1
3 . /lib/functions.sh
4 . /lib/netifd/netifd-proto.sh
5
6 ipv6_conf() {
7         echo "$3" > "/proc/sys/net/ipv6/conf/$1/$2"
8 }
9
10 prepare_interface() {
11         local device="$1"
12         ipv6_conf "$device" accept_ra 2
13
14         # Send RS
15         if [ -x /usr/sbin/6relayd ]; then
16                 sleep 1
17                 /usr/sbin/6relayd -s "$device"
18                 sleep 4
19                 /usr/sbin/6relayd -s "$device"
20         fi
21
22 }
23
24 cleanup_interface() {
25         local device="$1"
26         ipv6_conf "$device" accept_ra 0
27 }
28
29 setup_interface () {
30         local device="$1"
31         proto_init_update "*" 1
32
33         for dns in $RDNSS; do
34                 proto_add_dns_server "$dns"
35         done
36
37         for domain in $DOMAINS; do
38                 proto_add_dns_search "$domain"
39         done
40
41         for prefix in $PREFIXES; do
42                 proto_add_ipv6_prefix "$prefix"
43         done
44
45         proto_send_update "$INTERFACE"
46
47         # TODO: $SNTP_IP $SIP_IP $SNTP_FQDN $SIP_DOMAIN
48 }
49
50 teardown_interface() {
51         proto_init_update "*" 0
52         proto_send_update "$INTERFACE"
53 }
54
55 case "$2" in
56         informed|bound|updated|rebound)
57                 setup_interface "$1"
58                 prepare_interface "$1"
59         ;;
60         started|stopped|unbound)
61                 cleanup_interface "$1"
62                 teardown_interface "$1"
63         ;;
64 esac
65
66 # user rules
67 [ -f /etc/odhcp6c.user ] && . /etc/odhcp6c.user
68
69 exit 0