b9428dd330ae9d8261b36e2df656485006407110
[openwrt/staging/mkresin.git] / package / network / ipv6 / ipv6-support / files / dhcpv6.sh
1 #!/bin/sh
2 # Copyright (c) 2012 OpenWrt.org
3 . /lib/ipv6/support.sh
4 . /lib/netifd/netifd-proto.sh
5
6 local device="$1"
7 local state="$2"
8 local network=""
9
10 resolve_network network "$device"
11
12 # Unknown network
13 [ -z "$network" ] && exit 0
14
15
16 # Announce prefixes
17 for prefix in $PREFIXES; do
18 announce_prefix "$prefix" "$network"
19 done
20
21 for prefix in $PREFIXES_LOST; do
22 announce_prefix "$prefix" "$network" delprefix
23 done
24
25
26 # Enable relaying if requested
27 local prefix_fallback
28 config_get prefix_fallback "$network" prefix_fallback
29 [ "$prefix_fallback" == "relay" -a -z "$PREFIXES" -a "$state" != "unbound" ] &&
30 restart_relay "$network" "fallback"
31
32 # Disable relay if requested
33 [ "$prefix_fallback" != "relay" -o -n "$PREFIXES" -o "$state" == "unbound" ] &&
34 restart_relay "$network"
35
36
37 # Operations in case of success
38 [ "$state" == "timeout" || "$state" == "unbound" ] && exit 0
39
40 local peerdns
41 config_get_bool peerdns "$network" peerdns 0
42 [ "$peerdns" -eq "1" ] && {
43 proto_init_update "*" 1
44 proto_set_keep 1
45 for server in $RDNSS; do
46 proto_add_dns_server "$server"
47 done
48 for domain in $DOMAINS; do
49 proto_add_dns_search "$domain"
50 done
51 proto_send_update "$network"
52 }
53