| 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" "$device" |
| 19 | done |
| 20 | |
| 21 | for prefix in $PREFIXES_LOST; do |
| 22 | announce_prefix "$prefix" "$network" "$device" delprefix |
| 23 | done |
| 24 | |
| 25 | |
| 26 | # Enable relaying if requested |
| 27 | local fallback="stop" |
| 28 | [ -z "$PREFIXES" -a "$state" != "unbound" ] && fallback="start" |
| 29 | setup_prefix_fallback "$fallback" "$network" "$device" |
| 30 | |
| 31 | |
| 32 | # Operations in case of success |
| 33 | [ "$state" == "timeout" || "$state" == "unbound" ] && exit 0 |
| 34 | |
| 35 | local peerdns |
| 36 | config_get_bool peerdns "$network" peerdns 0 |
| 37 | [ "$peerdns" -eq "1" ] && { |
| 38 | proto_init_update "*" 1 |
| 39 | proto_set_keep 1 |
| 40 | for server in $RDNSS; do |
| 41 | proto_add_dns_server "$server" |
| 42 | done |
| 43 | for domain in $DOMAINS; do |
| 44 | proto_add_dns_search "$domain" |
| 45 | done |
| 46 | proto_send_update "$network" |
| 47 | } |
| 48 | |
| 49 | |