blob: 4f2ad8c80e633bc8a2769ba0152a133616c07bf1 [file] [log] [blame]
Darin Petkovf20994f2012-03-05 16:12:19 +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_VPN_
6#define SHILL_VPN_
7
8#include "shill/device.h"
9
10namespace shill {
11
12class VPN : public Device {
13 public:
14 VPN(ControlInterface *control,
15 EventDispatcher *dispatcher,
16 Metrics *metrics,
17 Manager *manager,
18 const std::string &link_name,
19 int interface_index);
20
21 virtual ~VPN();
22
Eric Shienbrood9a245532012-03-07 14:20:39 -050023 virtual void Start(Error *error, const EnabledStateChangedCallback &callback);
24 virtual void Stop(Error *error, const EnabledStateChangedCallback &callback);
Paul Stewart536820d2012-03-19 16:05:59 -070025
Darin Petkov79d74c92012-03-07 17:20:32 +010026 virtual void UpdateIPConfig(const IPConfig::Properties &properties);
27 virtual void OnDisconnected();
28
29 // Expose protected device methods to the VPN driver.
30 void SelectService(const VPNServiceRefPtr &service);
31
Darin Petkovf20994f2012-03-05 16:12:19 +010032 private:
33 DISALLOW_COPY_AND_ASSIGN(VPN);
34};
35
36} // namespace shill
37
38#endif // SHILL_VPN_