shill: vpn: Claim interface from DeviceInfo
Maintain a list in the VPNProvider of all services created by it.
When DeviceInfo alerts it of a new tunnel interface, VPNProvider
will find a service->driver() to accept this interface. If not
found, delete the interface (cleaning up after crash). Also,
in OpenVPNDriver, create a tunnel device and hold enough state
to be able to claim it later.
BUG=chromium-os:26841,chromium-os:27156,chromium-os:27158
TEST=New unit tests. Manual: Ensure tunnel devices get cleaned up on a
real system.
Change-Id: Iaaa44dc26830a2e8bf5dfea00d165ab8c034e6e9
Reviewed-on: https://gerrit.chromium.org/gerrit/17191
Reviewed-by: Darin Petkov <petkov@chromium.org>
Commit-Ready: Paul Stewart <pstew@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
diff --git a/device_info.h b/device_info.h
index 3911a75..7bae36f 100644
--- a/device_info.h
+++ b/device_info.h
@@ -68,8 +68,8 @@
virtual bool GetAddresses(int interface_index,
std::vector<AddressData> *addresses) const;
virtual void FlushAddresses(int interface_index) const;
- virtual bool CreateTunnelInterface(std::string *interface_name);
- virtual bool DeleteInterface(int interface_index);
+ virtual bool CreateTunnelInterface(std::string *interface_name) const;
+ virtual bool DeleteInterface(int interface_index) const;
private:
friend class DeviceInfoTest;