shill: vpn: Setup OpenVPN management channel options and open/close channel.

BUG=chromium-os:26994
TEST=unit tests

Change-Id: I9da18c7aa2f93671dc2134f531d72d626b34443e
Reviewed-on: https://gerrit.chromium.org/gerrit/19290
Tested-by: Darin Petkov <petkov@chromium.org>
Reviewed-by: Paul Stewart <pstew@chromium.org>
Commit-Ready: Darin Petkov <petkov@chromium.org>
diff --git a/openvpn_driver.h b/openvpn_driver.h
index 8e87305..1470454 100644
--- a/openvpn_driver.h
+++ b/openvpn_driver.h
@@ -18,6 +18,7 @@
 #include "shill/refptr_types.h"
 #include "shill/rpc_task.h"
 #include "shill/service.h"
+#include "shill/sockets.h"
 #include "shill/vpn_driver.h"
 
 namespace shill {
@@ -28,6 +29,7 @@
 class EventDispatcher;
 class Manager;
 class Metrics;
+class OpenVPNManagementServer;
 
 class OpenVPNDriver : public VPNDriver,
                       public RPCTaskDelegate {
@@ -66,6 +68,16 @@
 
   KeyValueStore *args() { return &args_; }
 
+  // Returns true if an opton was appended.
+  bool AppendValueOption(const std::string &property,
+                         const std::string &option,
+                         std::vector<std::string> *options);
+
+  // Returns true if a flag was appended.
+  bool AppendFlag(const std::string &property,
+                  const std::string &option,
+                  std::vector<std::string> *options);
+
  private:
   friend class OpenVPNDriverTest;
   FRIEND_TEST(OpenVPNDriverTest, AppendFlag);
@@ -123,12 +135,6 @@
 
   void InitOptions(std::vector<std::string> *options, Error *error);
 
-  void AppendValueOption(const std::string &property,
-                         const std::string &option,
-                         std::vector<std::string> *options);
-  void AppendFlag(const std::string &property,
-                  const std::string &option,
-                  std::vector<std::string> *options);
   bool PinHostRoute(const IPConfig::Properties &properties);
 
   bool SpawnOpenVPN();
@@ -148,6 +154,8 @@
   DeviceInfo *device_info_;
   GLib *glib_;
   KeyValueStore args_;
+  Sockets sockets_;
+  scoped_ptr<OpenVPNManagementServer> management_server_;
 
   VPNServiceRefPtr service_;
   scoped_ptr<RPCTask> rpc_task_;