1// Copyright (c) 2011 The Chromium 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 "net/proxy/dhcpcsvc_init_win.h"
6
7#include "base/lazy_instance.h"
8#include "base/logging.h"
9
10#include <dhcpcsdk.h>
11#include <dhcpv6csdk.h>
12
13namespace {
14
15class DhcpcsvcInitSingleton {
16 public:
17  DhcpcsvcInitSingleton() {
18    DWORD version = 0;
19    DWORD err = DhcpCApiInitialize(&version);
20    DCHECK(err == ERROR_SUCCESS);  // DCHECK_EQ complains of unsigned mismatch.
21  }
22
23  ~DhcpcsvcInitSingleton() {
24    // Worker pool threads that use the DHCP API may still be running, so skip
25    // cleanup.
26  }
27};
28
29static base::LazyInstance<DhcpcsvcInitSingleton> g_dhcpcsvc_init_singleton =
30    LAZY_INSTANCE_INITIALIZER;
31
32}  // namespace
33
34namespace net {
35
36void EnsureDhcpcsvcInit() {
37  g_dhcpcsvc_init_singleton.Get();
38}
39
40}  // namespace net
41