blob: f9b3e5784f0350b15e2c1ccf92e7390b5a28625f [file] [log] [blame]
Darin Petkov50308cd2011-06-01 18:25:07 -07001// Copyright (c) 2011 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#include "shill/dhcp_provider.h"
6
7#include <base/logging.h>
8
Darin Petkovd1b715b2011-06-02 21:21:22 -07009#include "shill/dhcpcd_proxy.h"
10
Darin Petkovf65e9282011-06-21 14:29:56 -070011using std::string;
12
Darin Petkov50308cd2011-06-01 18:25:07 -070013namespace shill {
14
Darin Petkovf7897bc2011-06-08 17:13:36 -070015DHCPProvider::DHCPProvider() : glib_(NULL) {
Darin Petkovd1b715b2011-06-02 21:21:22 -070016 VLOG(2) << __func__;
Darin Petkov50308cd2011-06-01 18:25:07 -070017}
18
19DHCPProvider::~DHCPProvider() {
Darin Petkovd1b715b2011-06-02 21:21:22 -070020 VLOG(2) << __func__;
Darin Petkov50308cd2011-06-01 18:25:07 -070021}
22
23DHCPProvider* DHCPProvider::GetInstance() {
24 return Singleton<DHCPProvider>::get();
25}
26
Darin Petkovf7897bc2011-06-08 17:13:36 -070027void DHCPProvider::Init(DBus::Connection *connection,
28 GLibInterface *glib) {
Darin Petkovd1b715b2011-06-02 21:21:22 -070029 VLOG(2) << __func__;
30 listener_.reset(new DHCPCDListener(this, connection));
Darin Petkovf7897bc2011-06-08 17:13:36 -070031 glib_ = glib;
Darin Petkovd1b715b2011-06-02 21:21:22 -070032}
33
Darin Petkovf65e9282011-06-21 14:29:56 -070034DHCPConfigRefPtr DHCPProvider::CreateConfig(const string &device_name) {
35 VLOG(2) << __func__ << " device: " << device_name;
36 return new DHCPConfig(this, device_name, glib_);
Darin Petkovd1b715b2011-06-02 21:21:22 -070037}
38
Darin Petkov98dd6a02011-06-10 15:12:57 -070039DHCPConfigRefPtr DHCPProvider::GetConfig(int pid) {
Darin Petkovf65e9282011-06-21 14:29:56 -070040 VLOG(2) << __func__ << " pid: " << pid;
Darin Petkovf9b0ca82011-06-20 12:10:23 -070041 PIDConfigMap::const_iterator it = configs_.find(pid);
Darin Petkovd1b715b2011-06-02 21:21:22 -070042 if (it == configs_.end()) {
Darin Petkov98dd6a02011-06-10 15:12:57 -070043 return NULL;
Darin Petkovd1b715b2011-06-02 21:21:22 -070044 }
45 return it->second;
46}
47
Darin Petkov92c43902011-06-09 20:46:06 -070048void DHCPProvider::BindPID(int pid, DHCPConfigRefPtr config) {
Darin Petkovd1b715b2011-06-02 21:21:22 -070049 VLOG(2) << __func__ << " pid: " << pid;
50 configs_[pid] = config;
51}
52
Darin Petkov92c43902011-06-09 20:46:06 -070053void DHCPProvider::UnbindPID(int pid) {
Darin Petkovd1b715b2011-06-02 21:21:22 -070054 VLOG(2) << __func__ << " pid: " << pid;
55 configs_.erase(pid);
56}
57
Darin Petkov50308cd2011-06-01 18:25:07 -070058} // namespace shill