kodi
NetworkWin10.h
1 /*
2  * Copyright (C) 2005-2018 Team Kodi
3  * This file is part of Kodi - https://kodi.tv
4  *
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  * See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include "network/Network.h"
12 #include "threads/CriticalSection.h"
13 
14 #include <string>
15 #include <vector>
16 
17 #include <IPTypes.h>
18 #include <winrt/Windows.Networking.Connectivity.h>
19 
20 class CNetworkWin10;
21 
23 {
24 public:
25  CNetworkInterfaceWin10(const PIP_ADAPTER_ADDRESSES adapter);
27 
28  virtual bool IsEnabled(void) const;
29  virtual bool IsConnected(void) const;
30 
31  virtual std::string GetMacAddress(void) const;
32  virtual void GetMacAddressRaw(char rawMac[6]) const;
33 
34  virtual bool GetHostMacAddress(unsigned long host, std::string& mac) const;
35 
36  virtual std::string GetCurrentIPAddress() const;
37  virtual std::string GetCurrentNetmask() const;
38  virtual std::string GetCurrentDefaultGateway(void) const;
39 
40 private:
41  PIP_ADAPTER_ADDRESSES m_adapterAddr;
42 };
43 
44 
46 {
47 public:
48  CNetworkWin10();
49  virtual ~CNetworkWin10(void);
50 
51  std::vector<CNetworkInterface*>& GetInterfaceList(void) override;
52  CNetworkInterface* GetFirstConnectedInterface() override;
53  std::vector<std::string> GetNameServers(void) override;
54 
55  bool PingHost(unsigned long host, unsigned int timeout_ms = 2000) override;
56 
57  friend class CNetworkInterfaceWin10;
58 
59 private:
60  int GetSocket() { return m_sock; }
61  void queryInterfaceList();
62  void CleanInterfaceList();
63 
64  std::vector<CNetworkInterface*> m_interfaces;
65  int m_sock;
66  CCriticalSection m_critSection;
67  std::vector<uint8_t> m_adapterAddresses;
68 };
69 
Definition: Network.h:18
Definition: Network.h:40
Definition: NetworkWin10.h:22
virtual bool GetHostMacAddress(unsigned long host, std::string &mac) const
Definition: NetworkWin10.cpp:103
Definition: NetworkWin10.h:45