mirror of
				https://github.com/pocoproject/poco.git
				synced 2025-10-25 18:22:59 +02:00 
			
		
		
		
	Added adapterName() to NetworkInterface
This commit is contained in:
		| @@ -155,6 +155,14 @@ public: | |||||||
| 		/// | 		/// | ||||||
| 		/// On other platforms this is the same as name(). | 		/// On other platforms this is the same as name(). | ||||||
|  |  | ||||||
|  | 	const std::string& adapterName() const; | ||||||
|  | 		/// Returns the interface adapter name. | ||||||
|  | 		/// | ||||||
|  | 		/// On Windows platforms, this is the network adapter LUID. | ||||||
|  | 		/// The adapter name is used by some Windows Net APIs like Dhcp.  | ||||||
|  | 		/// | ||||||
|  | 		/// On other platforms this is the same as name(). | ||||||
|  |  | ||||||
| 	const IPAddress& firstAddress(IPAddress::Family family) const; | 	const IPAddress& firstAddress(IPAddress::Family family) const; | ||||||
| 		/// Returns the first IP address bound to the interface. | 		/// Returns the first IP address bound to the interface. | ||||||
| 		/// Throws NotFoundException if the address family is not | 		/// Throws NotFoundException if the address family is not | ||||||
| @@ -282,10 +290,10 @@ public: | |||||||
| 		/// member of the pair. | 		/// member of the pair. | ||||||
|  |  | ||||||
| protected: | protected: | ||||||
| 	NetworkInterface(const std::string& name, const std::string& displayName, const IPAddress& address, unsigned index, MACAddress* pMACAddress = 0); | 	NetworkInterface(const std::string& name, const std::string& displayName, const std::string& adapterName, const IPAddress& address, unsigned index, MACAddress* pMACAddress = 0); | ||||||
| 		/// Creates the NetworkInterface. | 		/// Creates the NetworkInterface. | ||||||
|  |  | ||||||
| 	NetworkInterface(const std::string& name, const std::string& displayName, unsigned index, MACAddress* pMACAddress = 0); | 	NetworkInterface(const std::string& name, const std::string& displayName, const std::string& adapterName, unsigned index, MACAddress* pMACAddress = 0); | ||||||
| 		/// Creates the NetworkInterface. | 		/// Creates the NetworkInterface. | ||||||
|  |  | ||||||
| 	NetworkInterface(const std::string& name, const IPAddress& address, unsigned index, MACAddress* pMACAddress = 0); | 	NetworkInterface(const std::string& name, const IPAddress& address, unsigned index, MACAddress* pMACAddress = 0); | ||||||
| @@ -293,6 +301,7 @@ protected: | |||||||
|  |  | ||||||
| 	NetworkInterface(const std::string& name, | 	NetworkInterface(const std::string& name, | ||||||
| 		const std::string& displayName, | 		const std::string& displayName, | ||||||
|  | 		const std::string& adapterName, | ||||||
| 		const IPAddress& address, | 		const IPAddress& address, | ||||||
| 		const IPAddress& subnetMask, | 		const IPAddress& subnetMask, | ||||||
| 		const IPAddress& broadcastAddress, | 		const IPAddress& broadcastAddress, | ||||||
|   | |||||||
| @@ -93,10 +93,11 @@ public: | |||||||
| 	typedef NetworkInterface::Type         Type; | 	typedef NetworkInterface::Type         Type; | ||||||
| 	 | 	 | ||||||
| 	NetworkInterfaceImpl(unsigned index); | 	NetworkInterfaceImpl(unsigned index); | ||||||
| 	NetworkInterfaceImpl(const std::string& name, const std::string& displayName, const IPAddress& address, unsigned index, NetworkInterface::MACAddress* pMACAddress = 0); | 	NetworkInterfaceImpl(const std::string& name, const std::string& displayName, const std::string& adapterName, const IPAddress& address, unsigned index, NetworkInterface::MACAddress* pMACAddress = 0); | ||||||
| 	NetworkInterfaceImpl(const std::string& name, const std::string& displayName, unsigned index = 0, NetworkInterface::MACAddress* pMACAddress = 0); | 	NetworkInterfaceImpl(const std::string& name, const std::string& displayName, const std::string& adapterName, unsigned index = 0, NetworkInterface::MACAddress* pMACAddress = 0); | ||||||
| 	NetworkInterfaceImpl(const std::string& name, | 	NetworkInterfaceImpl(const std::string& name, | ||||||
| 		const std::string& displayName, | 		const std::string& displayName, | ||||||
|  | 		const std::string& adapterName, | ||||||
| 		const IPAddress& address, | 		const IPAddress& address, | ||||||
| 		const IPAddress& subnetMask, | 		const IPAddress& subnetMask, | ||||||
| 		const IPAddress& broadcastAddress, | 		const IPAddress& broadcastAddress, | ||||||
| @@ -106,6 +107,7 @@ public: | |||||||
| 	unsigned index() const; | 	unsigned index() const; | ||||||
| 	const std::string& name() const; | 	const std::string& name() const; | ||||||
| 	const std::string& displayName() const; | 	const std::string& displayName() const; | ||||||
|  | 	const std::string& adapterName() const; | ||||||
| 	const IPAddress& firstAddress(IPAddress::Family family) const; | 	const IPAddress& firstAddress(IPAddress::Family family) const; | ||||||
| 	void addAddress(const AddressTuple& address); | 	void addAddress(const AddressTuple& address); | ||||||
| 	const IPAddress& address(unsigned index) const; | 	const IPAddress& address(unsigned index) const; | ||||||
| @@ -120,6 +122,7 @@ public: | |||||||
|  |  | ||||||
| 	void setName(const std::string& name); | 	void setName(const std::string& name); | ||||||
| 	void setDisplayName(const std::string& name); | 	void setDisplayName(const std::string& name); | ||||||
|  | 	void setAdapterName(const std::string& name); | ||||||
| 	void addAddress(const IPAddress& addr); | 	void addAddress(const IPAddress& addr); | ||||||
| 	void setMACAddress(const NetworkInterface::MACAddress& addr); | 	void setMACAddress(const NetworkInterface::MACAddress& addr); | ||||||
| 	void setMACAddress(const void *addr, std::size_t len); | 	void setMACAddress(const void *addr, std::size_t len); | ||||||
| @@ -154,6 +157,7 @@ protected: | |||||||
| private:	 | private:	 | ||||||
| 	std::string _name; | 	std::string _name; | ||||||
| 	std::string _displayName; | 	std::string _displayName; | ||||||
|  | 	std::string _adapterName; | ||||||
| 	AddressList _addressList; | 	AddressList _addressList; | ||||||
| 	unsigned    _index; | 	unsigned    _index; | ||||||
| 	bool        _broadcast; | 	bool        _broadcast; | ||||||
| @@ -178,9 +182,10 @@ NetworkInterfaceImpl::NetworkInterfaceImpl(unsigned index): | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| NetworkInterfaceImpl::NetworkInterfaceImpl(const std::string& name, const std::string& displayName, const IPAddress& address, unsigned index, NetworkInterface::MACAddress* pMACAddress): | NetworkInterfaceImpl::NetworkInterfaceImpl(const std::string& name, const std::string& displayName, const std::string& adapterName, const IPAddress& address, unsigned index, NetworkInterface::MACAddress* pMACAddress): | ||||||
| 	_name(name), | 	_name(name), | ||||||
| 	_displayName(displayName), | 	_displayName(displayName), | ||||||
|  | 	_adapterName(adapterName), | ||||||
| 	_index(index), | 	_index(index), | ||||||
| 	_broadcast(false), | 	_broadcast(false), | ||||||
| 	_loopback(false), | 	_loopback(false), | ||||||
| @@ -196,9 +201,10 @@ NetworkInterfaceImpl::NetworkInterfaceImpl(const std::string& name, const std::s | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| NetworkInterfaceImpl::NetworkInterfaceImpl(const std::string& name, const std::string& displayName, unsigned index, NetworkInterface::MACAddress* pMACAddress): | NetworkInterfaceImpl::NetworkInterfaceImpl(const std::string& name, const std::string& displayName, const std::string& adapterName, unsigned index, NetworkInterface::MACAddress* pMACAddress): | ||||||
| 	_name(name), | 	_name(name), | ||||||
| 	_displayName(displayName), | 	_displayName(displayName), | ||||||
|  | 	_adapterName(adapterName), | ||||||
| 	_index(index), | 	_index(index), | ||||||
| 	_broadcast(false), | 	_broadcast(false), | ||||||
| 	_loopback(false), | 	_loopback(false), | ||||||
| @@ -215,6 +221,7 @@ NetworkInterfaceImpl::NetworkInterfaceImpl(const std::string& name, const std::s | |||||||
|  |  | ||||||
| NetworkInterfaceImpl::NetworkInterfaceImpl(const std::string& name, | NetworkInterfaceImpl::NetworkInterfaceImpl(const std::string& name, | ||||||
| 	const std::string& displayName, | 	const std::string& displayName, | ||||||
|  | 	const std::string& adapterName, | ||||||
| 	const IPAddress& address, | 	const IPAddress& address, | ||||||
| 	const IPAddress& subnetMask, | 	const IPAddress& subnetMask, | ||||||
| 	const IPAddress& broadcastAddress, | 	const IPAddress& broadcastAddress, | ||||||
| @@ -222,6 +229,7 @@ NetworkInterfaceImpl::NetworkInterfaceImpl(const std::string& name, | |||||||
| 	NetworkInterface::MACAddress* pMACAddress): | 	NetworkInterface::MACAddress* pMACAddress): | ||||||
| 	_name(name), | 	_name(name), | ||||||
| 	_displayName(displayName), | 	_displayName(displayName), | ||||||
|  | 	_adapterName(adapterName), | ||||||
| 	_index(index), | 	_index(index), | ||||||
| 	_broadcast(false), | 	_broadcast(false), | ||||||
| 	_loopback(false), | 	_loopback(false), | ||||||
| @@ -305,6 +313,12 @@ inline const std::string& NetworkInterfaceImpl::displayName() const | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline const std::string& NetworkInterfaceImpl::adapterName() const | ||||||
|  | { | ||||||
|  | 	return _adapterName; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
| const IPAddress& NetworkInterfaceImpl::firstAddress(IPAddress::Family family) const | const IPAddress& NetworkInterfaceImpl::firstAddress(IPAddress::Family family) const | ||||||
| { | { | ||||||
| 	AddressList::const_iterator it = _addressList.begin(); | 	AddressList::const_iterator it = _addressList.begin(); | ||||||
| @@ -517,6 +531,12 @@ inline void NetworkInterfaceImpl::setDisplayName(const std::string& name) | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | inline void NetworkInterfaceImpl::setAdapterName(const std::string& name) | ||||||
|  | { | ||||||
|  | 	_adapterName = name; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
| inline void NetworkInterfaceImpl::addAddress(const IPAddress& addr) | inline void NetworkInterfaceImpl::addAddress(const IPAddress& addr) | ||||||
| { | { | ||||||
| 	_addressList.push_back(addr); | 	_addressList.push_back(addr); | ||||||
| @@ -560,32 +580,33 @@ NetworkInterface::NetworkInterface(const NetworkInterface& interfc): | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| NetworkInterface::NetworkInterface(const std::string& name, const std::string& displayName, const IPAddress& address, unsigned index, MACAddress* pMACAddress): | NetworkInterface::NetworkInterface(const std::string& name, const std::string& displayName, const std::string& adapterName, const IPAddress& address, unsigned index, MACAddress* pMACAddress): | ||||||
| 	_pImpl(new NetworkInterfaceImpl(name, displayName, address, index, pMACAddress)) | 	_pImpl(new NetworkInterfaceImpl(name, displayName, adapterName, address, index, pMACAddress)) | ||||||
| { | { | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| NetworkInterface::NetworkInterface(const std::string& name, const std::string& displayName, unsigned index, MACAddress* pMACAddress): | NetworkInterface::NetworkInterface(const std::string& name, const std::string& displayName, const std::string& adapterName, unsigned index, MACAddress* pMACAddress): | ||||||
| 	_pImpl(new NetworkInterfaceImpl(name, displayName, index, pMACAddress)) | 	_pImpl(new NetworkInterfaceImpl(name, displayName, adapterName, index, pMACAddress)) | ||||||
| { | { | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| NetworkInterface::NetworkInterface(const std::string& name, const IPAddress& address, unsigned index, MACAddress* pMACAddress): | NetworkInterface::NetworkInterface(const std::string& name, const IPAddress& address, unsigned index, MACAddress* pMACAddress): | ||||||
| 	_pImpl(new NetworkInterfaceImpl(name, name, address, index, pMACAddress)) | 	_pImpl(new NetworkInterfaceImpl(name, name, name, address, index, pMACAddress)) | ||||||
| { | { | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| NetworkInterface::NetworkInterface(const std::string& name, | NetworkInterface::NetworkInterface(const std::string& name, | ||||||
| 	const std::string& displayName, | 	const std::string& displayName, | ||||||
|  | 	const std::string& adapterName, | ||||||
| 	const IPAddress& address, | 	const IPAddress& address, | ||||||
| 	const IPAddress& subnetMask, | 	const IPAddress& subnetMask, | ||||||
| 	const IPAddress& broadcastAddress, | 	const IPAddress& broadcastAddress, | ||||||
| 	unsigned index, | 	unsigned index, | ||||||
| 	MACAddress* pMACAddress): | 	MACAddress* pMACAddress): | ||||||
| 	_pImpl(new NetworkInterfaceImpl(name, displayName, address, subnetMask, broadcastAddress, index, pMACAddress)) | 	_pImpl(new NetworkInterfaceImpl(name, displayName, adapterName, address, subnetMask, broadcastAddress, index, pMACAddress)) | ||||||
| { | { | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -596,7 +617,7 @@ NetworkInterface::NetworkInterface(const std::string& name, | |||||||
| 	const IPAddress& broadcastAddress, | 	const IPAddress& broadcastAddress, | ||||||
| 	unsigned index, | 	unsigned index, | ||||||
| 	MACAddress* pMACAddress): | 	MACAddress* pMACAddress): | ||||||
| 	_pImpl(new NetworkInterfaceImpl(name, name, address, subnetMask, broadcastAddress, index, pMACAddress)) | 	_pImpl(new NetworkInterfaceImpl(name, name, name, address, subnetMask, broadcastAddress, index, pMACAddress)) | ||||||
| { | { | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -640,6 +661,12 @@ const std::string& NetworkInterface::displayName() const | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | const std::string& NetworkInterface::adapterName() const | ||||||
|  | { | ||||||
|  | 	return _pImpl->adapterName(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
| const IPAddress& NetworkInterface::firstAddress(IPAddress::Family family) const | const IPAddress& NetworkInterface::firstAddress(IPAddress::Family family) const | ||||||
| { | { | ||||||
| 	return _pImpl->firstAddress(family); | 	return _pImpl->firstAddress(family); | ||||||
| @@ -854,6 +881,7 @@ NetworkInterface::List NetworkInterface::list(bool ipOnly, bool upOnly) | |||||||
| 		int index = it->second.index(); | 		int index = it->second.index(); | ||||||
| 		std::string name = it->second.name(); | 		std::string name = it->second.name(); | ||||||
| 		std::string displayName = it->second.displayName(); | 		std::string displayName = it->second.displayName(); | ||||||
|  | 		std::string adapterName = it->second.adapterName(); | ||||||
| 		NetworkInterface::MACAddress mac = it->second.macAddress(); | 		NetworkInterface::MACAddress mac = it->second.macAddress(); | ||||||
|  |  | ||||||
| 		typedef NetworkInterface::AddressList List; | 		typedef NetworkInterface::AddressList List; | ||||||
| @@ -866,11 +894,11 @@ NetworkInterface::List NetworkInterface::list(bool ipOnly, bool upOnly) | |||||||
| 			IPAddress mask = ipIt->get<NetworkInterface::SUBNET_MASK>(); | 			IPAddress mask = ipIt->get<NetworkInterface::SUBNET_MASK>(); | ||||||
| 			NetworkInterface ni; | 			NetworkInterface ni; | ||||||
| 			if (mask.isWildcard()) | 			if (mask.isWildcard()) | ||||||
| 				ni = NetworkInterface(name, displayName, addr, index, &mac); | 				ni = NetworkInterface(name, displayName, adapterName, addr, index, &mac); | ||||||
| 			else | 			else | ||||||
| 			{ | 			{ | ||||||
| 				IPAddress broadcast = ipIt->get<NetworkInterface::BROADCAST_ADDRESS>(); | 				IPAddress broadcast = ipIt->get<NetworkInterface::BROADCAST_ADDRESS>(); | ||||||
| 				ni = NetworkInterface(name, displayName, addr, mask, broadcast, index, &mac); | 				ni = NetworkInterface(name, displayName, adapterName, addr, mask, broadcast, index, &mac); | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 			list.push_back(ni); | 			list.push_back(ni); | ||||||
| @@ -1017,6 +1045,7 @@ NetworkInterface::Map NetworkInterface::map(bool ipOnly, bool upOnly) | |||||||
|  |  | ||||||
| 		std::string name; | 		std::string name; | ||||||
| 		std::string displayName; | 		std::string displayName; | ||||||
|  | 		std::string adapterName(pAddress->AdapterName); | ||||||
| #ifdef POCO_WIN32_UTF8 | #ifdef POCO_WIN32_UTF8 | ||||||
| 		Poco::UnicodeConverter::toUTF8(pAddress->FriendlyName, name); | 		Poco::UnicodeConverter::toUTF8(pAddress->FriendlyName, name); | ||||||
| 		Poco::UnicodeConverter::toUTF8(pAddress->Description, displayName); | 		Poco::UnicodeConverter::toUTF8(pAddress->Description, displayName); | ||||||
| @@ -1033,7 +1062,7 @@ NetworkInterface::Map NetworkInterface::map(bool ipOnly, bool upOnly) | |||||||
| 		bool isIP = (0 != pAddress->FirstUnicastAddress); | 		bool isIP = (0 != pAddress->FirstUnicastAddress); | ||||||
| 		if (((ipOnly && isIP) || !ipOnly) && ((upOnly && isUp) || !upOnly)) | 		if (((ipOnly && isIP) || !ipOnly) && ((upOnly && isUp) || !upOnly)) | ||||||
| 		{ | 		{ | ||||||
| 			NetworkInterface ni(name, displayName, ifIndex); | 			NetworkInterface ni(name, displayName, adapterName, ifIndex); | ||||||
| 			// Create interface even if it has an empty list of addresses; also, set | 			// Create interface even if it has an empty list of addresses; also, set | ||||||
| 			// physical attributes which are protocol independent (name, media type, | 			// physical attributes which are protocol independent (name, media type, | ||||||
| 			// MAC address, MTU, operational status, etc). | 			// MAC address, MTU, operational status, etc). | ||||||
| @@ -1149,7 +1178,7 @@ NetworkInterface::NetworkInterfaceList NetworkInterface::list() | |||||||
| 			{ | 			{ | ||||||
| 				bcst = IPAddress(std::string(ifAddr)); | 				bcst = IPAddress(std::string(ifAddr)); | ||||||
| 			} | 			} | ||||||
| 			result.push_back(NetworkInterface(name, name, addr, mask, bcst)); | 			result.push_back(NetworkInterface(name, name, name, addr, mask, bcst)); | ||||||
| 			ifIndex++; | 			ifIndex++; | ||||||
| 		} | 		} | ||||||
| 		else break;	 | 		else break;	 | ||||||
| @@ -1207,6 +1236,7 @@ void setInterfaceParams(struct ifaddrs* iface, NetworkInterfaceImpl& impl) | |||||||
| 	struct sockaddr_dl* sdl = (struct sockaddr_dl*) iface->ifa_addr; | 	struct sockaddr_dl* sdl = (struct sockaddr_dl*) iface->ifa_addr; | ||||||
| 	impl.setName(iface->ifa_name); | 	impl.setName(iface->ifa_name); | ||||||
| 	impl.setDisplayName(iface->ifa_name); | 	impl.setDisplayName(iface->ifa_name); | ||||||
|  | 	impl.setAdapterName(iface->ifa_name); | ||||||
| 	impl.setPhyParams(); | 	impl.setPhyParams(); | ||||||
|  |  | ||||||
| 	impl.setMACAddress(LLADDR(sdl), sdl->sdl_alen); | 	impl.setMACAddress(LLADDR(sdl), sdl->sdl_alen); | ||||||
| @@ -1363,6 +1393,7 @@ void setInterfaceParams(struct ifaddrs* iface, NetworkInterfaceImpl& impl) | |||||||
| 	struct sockaddr_ll* sdl = (struct sockaddr_ll*) iface->ifa_addr; | 	struct sockaddr_ll* sdl = (struct sockaddr_ll*) iface->ifa_addr; | ||||||
| 	impl.setName(iface->ifa_name); | 	impl.setName(iface->ifa_name); | ||||||
| 	impl.setDisplayName(iface->ifa_name); | 	impl.setDisplayName(iface->ifa_name); | ||||||
|  | 	impl.setAdapterName(iface->ifa_name); | ||||||
| 	impl.setPhyParams(); | 	impl.setPhyParams(); | ||||||
|  |  | ||||||
| 	impl.setMACAddress(sdl->sll_addr, sdl->sll_halen); | 	impl.setMACAddress(sdl->sll_addr, sdl->sll_halen); | ||||||
| @@ -1555,7 +1586,7 @@ NetworkInterface::NetworkInterfaceList NetworkInterface::list() | |||||||
| 			if (haveAddr) | 			if (haveAddr) | ||||||
| 			{ | 			{ | ||||||
| 				std::string name(ifr->ifr_name); | 				std::string name(ifr->ifr_name); | ||||||
| 				result.push_back(NetworkInterface(name, name, addr, ifIndex)); | 				result.push_back(NetworkInterface(name, name, name, addr, ifIndex)); | ||||||
| 			} | 			} | ||||||
| 			len += sizeof(ifr->ifr_name); | 			len += sizeof(ifr->ifr_name); | ||||||
| 			ptr += len; | 			ptr += len; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Lau Bakman
					Lau Bakman