blob: 9a0765294684ce64d0bf4c0bbc6c5544353e4e0e [file] [log] [blame]
Darin Petkov33af05c2012-02-28 10:10:30 +01001// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef SHILL_OPENVPN_DRIVER_
6#define SHILL_OPENVPN_DRIVER_
7
Darin Petkovfe6a9372012-02-28 16:25:06 +01008#include <string>
9#include <vector>
10
Darin Petkova9b1fed2012-02-29 11:49:05 +010011#include <base/memory/scoped_ptr.h>
Darin Petkovfe6a9372012-02-28 16:25:06 +010012#include <gtest/gtest_prod.h> // for FRIEND_TEST
13
14#include "shill/key_value_store.h"
Darin Petkov33af05c2012-02-28 10:10:30 +010015#include "shill/vpn_driver.h"
16
17namespace shill {
18
Darin Petkova9b1fed2012-02-29 11:49:05 +010019class ControlInterface;
Darin Petkov33af05c2012-02-28 10:10:30 +010020class Error;
Darin Petkova9b1fed2012-02-29 11:49:05 +010021class RPCTask;
Darin Petkov33af05c2012-02-28 10:10:30 +010022
23class OpenVPNDriver : public VPNDriver {
24 public:
Darin Petkova9b1fed2012-02-29 11:49:05 +010025 OpenVPNDriver(ControlInterface *control, const KeyValueStore &args);
Darin Petkov33af05c2012-02-28 10:10:30 +010026 virtual ~OpenVPNDriver();
27
28 // Inherited from VPNDriver.
29 virtual void Connect(Error *error);
30
31 private:
Darin Petkovfe6a9372012-02-28 16:25:06 +010032 friend class OpenVPNDriverTest;
33 FRIEND_TEST(OpenVPNDriverTest, AppendFlag);
34 FRIEND_TEST(OpenVPNDriverTest, AppendValueOption);
35 FRIEND_TEST(OpenVPNDriverTest, InitOptions);
36 FRIEND_TEST(OpenVPNDriverTest, InitOptionsNoHost);
37
38 void InitOptions(std::vector<std::string> *options, Error *error);
39
40 void AppendValueOption(const std::string &property,
41 const std::string &option,
42 std::vector<std::string> *options);
43 void AppendFlag(const std::string &property,
44 const std::string &option,
45 std::vector<std::string> *options);
46
Darin Petkova9b1fed2012-02-29 11:49:05 +010047 ControlInterface *control_;
Darin Petkovfe6a9372012-02-28 16:25:06 +010048 KeyValueStore args_;
Darin Petkova9b1fed2012-02-29 11:49:05 +010049 scoped_ptr<RPCTask> rpc_task_;
Darin Petkovfe6a9372012-02-28 16:25:06 +010050
Darin Petkov33af05c2012-02-28 10:10:30 +010051 DISALLOW_COPY_AND_ASSIGN(OpenVPNDriver);
52};
53
54} // namespace shill
55
56#endif // SHILL_OPENVPN_DRIVER_