shill: VPNService: Report Tethering state

Services should store a copy of their tethering state in the
connection.  VPNService should use this stored state to report
the underlying connection's tethering state in response to
queries of the VPNService's own Tethering property.

BUG=chromium:323010
TEST=Unit tests

Change-Id: Idf0a8a6265c9cf78af00da00d638cda37b708fcc
Reviewed-on: https://chromium-review.googlesource.com/178720
Reviewed-by: Paul Stewart <pstew@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
Commit-Queue: Paul Stewart <pstew@chromium.org>
diff --git a/vpn_service.h b/vpn_service.h
index e7a08de..13e8d9c 100644
--- a/vpn_service.h
+++ b/vpn_service.h
@@ -47,6 +47,7 @@
  protected:
   // Inherited from Service.
   virtual bool IsAutoConnectable(const char **reason) const;
+  virtual std::string GetTethering(Error *error) const override;
 
  private:
   friend class VPNServiceTest;
@@ -54,6 +55,7 @@
   FRIEND_TEST(VPNServiceTest, SetConnection);
   FRIEND_TEST(VPNServiceTest, GetPhysicalTechologyPropertyFailsIfNoCarrier);
   FRIEND_TEST(VPNServiceTest, GetPhysicalTechologyPropertyOverWifi);
+  FRIEND_TEST(VPNServiceTest, GetTethering);
 
   static const char kAutoConnNeverConnected[];
   static const char kAutoConnVPNAlreadyActive[];