shill: support for DHCPv6 over PPPoE

Start a DHCPv6 configuration client for PPPoE virtual interface
if the interface is enabled for DHCPv6 when PPP connection is
established.  Use the generic file name (based on the interface
name) for the acquired lease, so that the lease file will be removed
when PPP connection is terminated.

This allows shill to obtain DHCPv6 configurations such as prefix
delegation ovet PPPoE.

BUG=chromium:523196
TEST=USE="ipv6 dhcpv6 pppoe" FEATURES=test emerge-$BOARD dhcpcd shill
TEST=Manual test by @tjennison

Change-Id: I1eb6b99ce669239b57c02c5b0af9403b4d7d06de
Reviewed-on: https://chromium-review.googlesource.com/294787
Commit-Ready: Zeping Qiu <zqiu@chromium.org>
Tested-by: Zeping Qiu <zqiu@chromium.org>
Reviewed-by: Paul Stewart <pstew@chromium.org>
diff --git a/ppp_device.h b/ppp_device.h
index 2a798e7..e90bdc9 100644
--- a/ppp_device.h
+++ b/ppp_device.h
@@ -52,6 +52,15 @@
       bool blackhole_ipv6,
       int32_t mtu);
 
+#ifndef DISABLE_DHCPV6
+  // Start a DHCPv6 configuration client for this device.  The generic
+  // file name (based on the device name) will be used for the acquired
+  // lease, so that the lease file will be removed when the DHCPv6 client
+  // terminates.  For PPP devices, there is no correlation between
+  // the service name and the network that it connected to.
+  virtual bool AcquireIPv6Config();
+#endif  // DISABLE_DHCPV6
+
   // Get the network device name (e.g. "ppp0") from the dictionary of
   // configuration strings received from our PPP plugin.
   static std::string GetInterfaceName(