shill: VPNDriver: Emit UMA metrics for VPN Authentication

Whenever an L2TP-IPSec or OpenVPN connection completes, report
authentication metrics to UMA.

BUG=chromium-os:39424
TEST=Unit tests

Change-Id: Ia5fef6d432e591f6f2ec18f59c529021f42719e5
Reviewed-on: https://gerrit.chromium.org/gerrit/44504
Reviewed-by: Darin Petkov <petkov@chromium.org>
Commit-Queue: Paul Stewart <pstew@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
diff --git a/metrics.h b/metrics.h
index 9ed5ec5..d1af070 100644
--- a/metrics.h
+++ b/metrics.h
@@ -202,6 +202,32 @@
     kCorruptedProfileMax
   };
 
+  enum VpnDriver {
+    kVpnDriverOpenVpn = 0,
+    kVpnDriverL2tpIpsec = 1,
+    kVpnDriverMax
+  };
+
+  enum VpnRemoteAuthenticationType {
+    kVpnRemoteAuthenticationTypeOpenVpnDefault = 0,
+    kVpnRemoteAuthenticationTypeOpenVpnCertificate = 1,
+    kVpnRemoteAuthenticationTypeL2tpIpsecDefault = 2,
+    kVpnRemoteAuthenticationTypeL2tpIpsecCertificate = 3,
+    kVpnRemoteAuthenticationTypeL2tpIpsecPsk = 4,
+    kVpnRemoteAuthenticationTypeMax
+  };
+
+  enum VpnUserAuthenticationType {
+    kVpnUserAuthenticationTypeOpenVpnNone = 0,
+    kVpnUserAuthenticationTypeOpenVpnCertificate = 1,
+    kVpnUserAuthenticationTypeOpenVpnUsernamePassword = 2,
+    kVpnUserAuthenticationTypeOpenVpnUsernamePasswordOtp = 3,
+    kVpnUserAuthenticationTypeL2tpIpsecNone = 4,
+    kVpnUserAuthenticationTypeL2tpIpsecCertificate = 5,
+    kVpnUserAuthenticationTypeL2tpIpsecUsernamePassword = 6,
+    kVpnUserAuthenticationTypeMax
+  };
+
   static const char kMetricDisconnect[];
   static const int kMetricDisconnectMax;
   static const int kMetricDisconnectMin;
@@ -334,6 +360,14 @@
   // Profile statistics.
   static const char kMetricCorruptedProfile[];
 
+  // VPN connection statistics.
+  static const char kMetricVpnDriver[];
+  static const int kMetricVpnDriverMax;
+  static const char kMetricVpnRemoteAuthenticationType[];
+  static const int kMetricVpnRemoteAuthenticationTypeMax;
+  static const char kMetricVpnUserAuthenticationType[];
+  static const int kMetricVpnUserAuthenticationTypeMax;
+
   explicit Metrics(EventDispatcher *dispatcher);
   virtual ~Metrics();