odhcp6c: remove IPv6 forwarding-sysctl workaround
[openwrt/staging/blogic.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