Handle setting and deprecating local DNS IPv6 addresses

[ IPv6TetheringCoordinator ]

  - Send CMD_IPV6_TETHER_UPDATE to all TetherInterfaceStateMachines.

This results in some spurious noop messages, but currently
the coordinator does not maintain state about which downstream interaces
are serving IPv6 and which are not.  Until it does maintain such state
it does not know to notify only the affected interfaces about a loss of
IPv6 upstream

[ IPv6TetheringInterfaceServices ]

    - De-dup incoming IPv6-only LinkProperties to avoid spurious updates
      to the RA daemon.
    - Keep track of new prefixes/dns and newly deprecated prefixes/dns
      on each update.
        - Set and remove local_network routes based on new and newly
          deprecated prefixes.
        - Set and remove local DNS server IP addresses based on new
          and newly deprecated DNS servers. Update dnsmasq via netd
          accordingly.
    - Pass newly deprecated and new information to the RA daemon.

[ RouterAdvertisementDaemon ]

    - Receive newly deprecated prefixes/DNS and update local tracking
      data structures accordingly.
    - Properly send urgent final deprecation RAs, and then cease all
      transmissions.

Bug: 30298058
Change-Id: Idc821603fa93bff1a821d1180d4135bc70e4a08d
4 files changed