#ifndef NETWORK_LINUX_H_ #define NETWORK_LINUX_H_ /* * Copyright (C) 2005-2008 Team XBMC * http://www.xbmc.org * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This Program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBMC; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * http://www.gnu.org/copyleft/gpl.html * */ #include #include "StdString.h" #include "utils/Network.h" class CNetworkLinux; class CNetworkInterfaceLinux : public CNetworkInterface { public: CNetworkInterfaceLinux(CNetworkLinux* network, CStdString interfaceName); ~CNetworkInterfaceLinux(void); virtual CStdString& GetName(void); virtual bool IsEnabled(void); virtual bool IsConnected(void); virtual bool IsWireless(void); virtual CStdString GetMacAddress(void); virtual CStdString GetCurrentIPAddress(); virtual CStdString GetCurrentNetmask(); virtual CStdString GetCurrentDefaultGateway(void); virtual CStdString GetCurrentWirelessEssId(void); virtual void GetSettings(NetworkAssignment& assignment, CStdString& ipAddress, CStdString& networkMask, CStdString& defaultGateway, CStdString& essId, CStdString& key, EncMode& encryptionMode); virtual void SetSettings(NetworkAssignment& assignment, CStdString& ipAddress, CStdString& networkMask, CStdString& defaultGateway, CStdString& essId, CStdString& key, EncMode& encryptionMode); // Returns the list of access points in the area virtual std::vector GetAccessPoints(void); private: void WriteSettings(FILE* fw, NetworkAssignment assignment, CStdString& ipAddress, CStdString& networkMask, CStdString& defaultGateway, CStdString& essId, CStdString& key, EncMode& encryptionMode); CStdString m_interfaceName; CNetworkLinux* m_network; }; class CNetworkLinux : public CNetwork { public: CNetworkLinux(void); virtual ~CNetworkLinux(void); // Return the list of interfaces virtual std::vector& GetInterfaceList(void); // Get/set the nameserver(s) virtual std::vector GetNameServers(void); virtual void SetNameServers(std::vector nameServers); friend class CNetworkInterfaceLinux; private: int GetSocket() { return m_sock; } void queryInterfaceList(); std::vector m_interfaces; int m_sock; }; #endif