• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • tdecore
 

tdecore

  • tdecore
  • tdehw
tdenetworkconnections.cpp
1/* This file is part of the TDE libraries
2 Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
3
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public
6 License version 2 as published by the Free Software Foundation.
7
8 This library is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 Library General Public License for more details.
12
13 You should have received a copy of the GNU Library General Public License
14 along with this library; see the file COPYING.LIB. If not, write to
15 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
16 Boston, MA 02110-1301, USA.
17*/
18
19#include "tdehardwaredevices.h"
20#include "tdenetworkconnections.h"
21
22#include <tqtimer.h>
23
24#include <tdelocale.h>
25
26#include "tdenetworkdevice.h"
27// #define DEBUG_SIGNAL_QUEUE 1
28
29#include "config.h"
30
31#ifdef WITH_NETWORK_MANAGER_BACKEND
32#include "network-manager.h"
33#endif // WITH_NETWORK_MANAGER_BACKEND
34
35#define SET_BIT(x, y) (x |= 1 << y)
36#define TEST_BIT(x, y) ((x & (1 << y)) >> y)
37
38
39/*================================================================================================*/
40/* TDENetworkSearchDomain */
41/*================================================================================================*/
42
43extern "C" {
44 TDE_EXPORT TDEGlobalNetworkManager* create_tdeGlobalNetworkManager()
45 {
46 return new TDEGlobalNetworkManager();
47 }
48}
49
50TDENetworkSearchDomain::TDENetworkSearchDomain() {
51 m_isIPV6 = false;
52}
53
54TDENetworkSearchDomain::TDENetworkSearchDomain(TQString domain, bool ipv6) {
55 m_isIPV6 = ipv6;
56 m_domain = domain;
57}
58
59TDENetworkSearchDomain::~TDENetworkSearchDomain() {
60 //
61}
62
63TQString TDENetworkSearchDomain::searchDomain() {
64 return m_domain;
65}
66
67void TDENetworkSearchDomain::setSearchDomain(TQString domain, bool ipv6) {
68 m_isIPV6 = ipv6;
69 m_domain = domain;
70}
71
72bool TDENetworkSearchDomain::isIPv4() {
73 return !m_isIPV6;
74}
75
76bool TDENetworkSearchDomain::isIPv6() {
77 return m_isIPV6;
78}
79
80/*================================================================================================*/
81/* TDENetMask */
82/*================================================================================================*/
83
84TDENetMask::TDENetMask() {
85 m_ipv4NetMask = 0;
86 m_isIPV6 = false;
87}
88
89TDENetMask::TDENetMask(TQ_UINT32 netmask) {
90 m_ipv4NetMask = netmask;
91 m_isIPV6 = false;
92}
93
94TDENetMask::TDENetMask(TQ_UINT8* netmask) {
95 m_ipv6NetMask = TQHostAddress(netmask);
96 m_isIPV6 = true;
97}
98
99TDENetMask::~TDENetMask() {
100 //
101}
102
103void TDENetMask::fromCIDRMask(unsigned char mask, bool ipv6) {
104 unsigned int i;
105 unsigned int j;
106 unsigned int internalMask = mask;
107 if (!ipv6) {
108 m_ipv4NetMask = 0;
109 for (i=32; i>(32-internalMask); ) {
110 i--;
111 SET_BIT(m_ipv4NetMask, i);
112 }
113 m_isIPV6 = false;
114 }
115 else {
116 Q_IPV6ADDR maskarray;
117 j=0;
118 unsigned int byteno=0;
119 memset(maskarray.c, 0, 16);
120 for (i=128; i>(128-internalMask); ) {
121 i--;
122 SET_BIT(maskarray.c[byteno], (i-((15-byteno)*8)));
123 j++;
124 if (j>7) {
125 j=0;
126 byteno++;
127 }
128 }
129 m_ipv6NetMask = TQHostAddress(maskarray);
130 m_isIPV6 = true;
131 }
132}
133
134unsigned char TDENetMask::toCIDRMask() {
135 unsigned int i;
136 unsigned int j;
137 if (!m_isIPV6) {
138 for (i=0; i<32; i++) {
139 if (TEST_BIT(m_ipv4NetMask, i)) {
140 break;
141 }
142 }
143 return 32-i;
144 }
145 else {
146 Q_IPV6ADDR mask = m_ipv6NetMask.toIPv6Address();
147 bool found = false;
148 for (j=0; j<16; ++j) {
149 for (i=0; i<8; i++) {
150 if (!TEST_BIT(mask.c[j], i)) {
151 found = true;
152 break;
153 }
154 }
155 if (found) break;
156 }
157 return ((j*8)+i);
158 }
159}
160
161void TDENetMask::fromString(TQString mask) {
162 if (mask.contains(".")) {
163 m_isIPV6 = false;
164 m_ipv4NetMask = 0;
165 TQStringList pieces = TQStringList::split(".", mask);
166 TQ_UINT8 chunk;
167 chunk = pieces[0].toUShort();
168 m_ipv4NetMask = m_ipv4NetMask | (chunk << 24);
169 chunk = pieces[1].toUShort();
170 m_ipv4NetMask = m_ipv4NetMask | (chunk << 16);
171 chunk = pieces[2].toUShort();
172 m_ipv4NetMask = m_ipv4NetMask | (chunk << 8);
173 chunk = pieces[3].toUShort();
174 m_ipv4NetMask = m_ipv4NetMask | (chunk << 0);
175 }
176 else if (mask.contains(":")) {
177 m_isIPV6 = true;
178 m_ipv6NetMask.setAddress(mask);
179 }
180}
181
182TQString TDENetMask::toString() {
183 if (!m_isIPV6) {
184 return TQString("%1.%2.%3.%4").arg((m_ipv4NetMask & 0xff000000) >> 24).arg((m_ipv4NetMask & 0x00ff0000) >> 16).arg((m_ipv4NetMask & 0x0000ff00) >> 8).arg((m_ipv4NetMask & 0x000000ff) >> 0);
185 }
186 else {
187 return m_ipv6NetMask.toString();
188 }
189}
190
191bool TDENetMask::isIPv4() {
192 return !m_isIPV6;
193}
194
195bool TDENetMask::isIPv6() {
196 return m_isIPV6;
197}
198
199/*================================================================================================*/
200/* TDEMACAddress */
201/*================================================================================================*/
202
203TDEMACAddress::TDEMACAddress() {
204 m_macAddress.clear();
205 m_isValid = false;
206}
207
208TDEMACAddress::TDEMACAddress(TDENetworkByteList address) {
209 m_macAddress = address;
210 m_isValid = true;
211}
212
213TDEMACAddress::~TDEMACAddress() {
214 //
215}
216
217TDENetworkByteList TDEMACAddress::address() {
218 return m_macAddress;
219}
220
221void TDEMACAddress::setAddress(TDENetworkByteList address) {
222 m_macAddress = address;
223 m_isValid = true;
224}
225
226bool TDEMACAddress::isValid() {
227 if (!m_isValid) {
228 return false;
229 }
230
231 if (m_macAddress.count() > 0) {
232 return true;
233 }
234 else {
235 return false;
236 }
237}
238
239void TDEMACAddress::fromString(TQString address) {
240 TQStringList pieces = TQStringList::split(":", address);
241 m_macAddress.clear();
242 for (TQStringList::Iterator it = pieces.begin(); it != pieces.end(); ++it) {
243 m_macAddress.append((*it).toUShort(0, 16));
244 }
245 m_isValid = true;
246}
247
248TQString TDEMACAddress::toString() {
249 TQString ret;
250 TDENetworkByteList::iterator it;
251 for (it = m_macAddress.begin(); it != m_macAddress.end(); ++it) {
252 if (ret != "") {
253 ret.append(":");
254 }
255 ret.append(TQString().sprintf("%02x", *it));
256 }
257 return ret.lower();
258}
259
260bool operator==(const TDEMACAddress &a1, const TDEMACAddress &a2) {
261 if (a1.m_macAddress.count() != a2.m_macAddress.count()) {
262 return false;
263 }
264 else {
265 unsigned int i;
266 for (i=0; i<a1.m_macAddress.count(); i++) {
267 if (a1.m_macAddress[i] != a2.m_macAddress[i]) {
268 return false;
269 }
270 }
271 return true;
272 }
273}
274
275bool operator<(const TDEMACAddress &a1, const TDEMACAddress &a2) {
276 if (a1.m_macAddress.count() < a2.m_macAddress.count()) {
277 return true;
278 }
279 else {
280 unsigned int i;
281 for (i=0; i<a1.m_macAddress.count(); i++) {
282 if (a1.m_macAddress[i] < a2.m_macAddress[i]) {
283 return true;
284 }
285 if (a1.m_macAddress[i] > a2.m_macAddress[i]) {
286 return false;
287 }
288 }
289 return false;
290 }
291}
292
293/*================================================================================================*/
294/* TDENetworkSingleIPConfiguration */
295/*================================================================================================*/
296
297TDENetworkSingleIPConfiguration::TDENetworkSingleIPConfiguration() {
298 valid = false;
299}
300
301TDENetworkSingleIPConfiguration::~TDENetworkSingleIPConfiguration() {
302 //
303}
304
305bool TDENetworkSingleIPConfiguration::isIPv4() {
306 return ipAddress.isIPv4Address() & valid;
307}
308
309bool TDENetworkSingleIPConfiguration::isIPv6() {
310 return ipAddress.isIPv6Address() & valid;
311}
312
313/*================================================================================================*/
314/* TDENetworkSingleRouteConfiguration */
315/*================================================================================================*/
316
317TDENetworkSingleRouteConfiguration::TDENetworkSingleRouteConfiguration() {
318 valid = false;
319}
320
321TDENetworkSingleRouteConfiguration::~TDENetworkSingleRouteConfiguration() {
322 //
323}
324
325bool TDENetworkSingleRouteConfiguration::isIPv4() {
326 return ipAddress.isIPv4Address() & valid;
327}
328
329bool TDENetworkSingleRouteConfiguration::isIPv6() {
330 return ipAddress.isIPv6Address() & valid;
331}
332
333/*================================================================================================*/
334/* TDENetworkIEEE8021xConfiguration */
335/*================================================================================================*/
336
337TDENetworkIEEE8021xConfiguration::TDENetworkIEEE8021xConfiguration() {
338 valid = false;
339 allowedValid = false;
340 secretsValid = false;
341 type = TDENetworkIEEE8021xType::None;
342 fastProvisioningFlags = TDENetworkIEEE8021xFastFlags::None;
343 phase2NonEAPAuthMethod = TDENetworkIEEE8021xType::None;
344 phase2EAPAuthMethod = TDENetworkIEEE8021xType::None;
345 passwordFlags = TDENetworkPasswordHandlingFlags::None;
346 binaryPasswordFlags = TDENetworkPasswordHandlingFlags::None;
347 privateKeyPasswordFlags = TDENetworkPasswordHandlingFlags::None;
348 phase2PrivateKeyPasswordFlags = TDENetworkPasswordHandlingFlags::None;
349 forceSystemCaCertificates = false;
350}
351
352TDENetworkIEEE8021xConfiguration::~TDENetworkIEEE8021xConfiguration() {
353 //
354}
355
356/*================================================================================================*/
357/* TDENetworkPPPConfiguration */
358/*================================================================================================*/
359
360TDENetworkPPPConfiguration::TDENetworkPPPConfiguration() {
361 valid = false;
362 requireServerAuthentication = false;
363 flags = TDENetworkPPPFlags::None;
364 baudRate = 115200;
365 mru = 0;
366 mtu = 0;
367 lcpEchoPingInterval = 0;
368 lcpEchoFailureThreshold = 0;
369}
370
371TDENetworkPPPConfiguration::~TDENetworkPPPConfiguration() {
372 //
373}
374
375/*================================================================================================*/
376/* TDENetworkPPPOEConfiguration */
377/*================================================================================================*/
378
379TDENetworkPPPOEConfiguration::TDENetworkPPPOEConfiguration() {
380 valid = false;
381 secretsValid = false;
382 passwordFlags = TDENetworkPasswordHandlingFlags::None;
383}
384
385TDENetworkPPPOEConfiguration::~TDENetworkPPPOEConfiguration() {
386 //
387}
388
389/*================================================================================================*/
390/* TDENetworkSerialConfiguration */
391/*================================================================================================*/
392
393TDENetworkSerialConfiguration::TDENetworkSerialConfiguration() {
394 valid = false;
395 baudRate = 115200;
396 byteWidth = 8;
397 parity = TDENetworkParity::None;
398 stopBits = 1;
399 txDelay = 0;
400}
401
402TDENetworkSerialConfiguration::~TDENetworkSerialConfiguration() {
403 //
404}
405
406/*================================================================================================*/
407/* TDENetworkCDMAConfiguration */
408/*================================================================================================*/
409
410TDENetworkCDMAConfiguration::TDENetworkCDMAConfiguration() {
411 valid = false;
412 secretsValid = false;
413 passwordFlags = TDENetworkPasswordHandlingFlags::None;
414}
415
416TDENetworkCDMAConfiguration::~TDENetworkCDMAConfiguration() {
417 //
418}
419
420/*================================================================================================*/
421/* TDENetworkGSMConfiguration */
422/*================================================================================================*/
423
424TDENetworkGSMConfiguration::TDENetworkGSMConfiguration() {
425 valid = false;
426 secretsValid = false;
427 passwordFlags = TDENetworkPasswordHandlingFlags::None;
428 networkType = TDEGSMNetworkType::Any;
429 pinFlags = TDENetworkPasswordHandlingFlags::None;
430 allowRoaming = false;
431}
432
433TDENetworkGSMConfiguration::~TDENetworkGSMConfiguration() {
434 //
435}
436
437/*================================================================================================*/
438/* TDENetworkIPConfiguration */
439/*================================================================================================*/
440
441TDENetworkIPConfiguration::TDENetworkIPConfiguration() {
442 valid = false;
443 connectionFlags = TDENetworkIPConfigurationFlags::IPV4DHCPIP | \
444 TDENetworkIPConfigurationFlags::IPV4DHCPDNS | \
445 TDENetworkIPConfigurationFlags::IPV4DHCPRoutes | \
446 TDENetworkIPConfigurationFlags::IPV4MayUseAsDefaultRoute | \
447 TDENetworkIPConfigurationFlags::IPV6DHCPIP | \
448 TDENetworkIPConfigurationFlags::IPV6DHCPDNS | \
449 TDENetworkIPConfigurationFlags::IPV6DHCPRoutes | \
450 TDENetworkIPConfigurationFlags::IPV6MayUseAsDefaultRoute;
451}
452
453TDENetworkIPConfiguration::~TDENetworkIPConfiguration() {
454 //
455}
456
457/*================================================================================================*/
458/* TDENetworkWiFiSecurityConfiguration */
459/*================================================================================================*/
460
461TDENetworkWiFiSecurityConfiguration::TDENetworkWiFiSecurityConfiguration() {
462 valid = false;
463 secretsValid = false;
464 keyType = TDENetworkWiFiKeyType::Other;
465 authType = TDENetworkWiFiAuthType::Other;
466 wpaVersion = TDENetworkWiFiWPAVersionFlags::Any;
467 cipher = TDENetworkWiFiConnectionCipher::None;
468 wepKeyFlags = TDENetworkPasswordHandlingFlags::None;
469 wepKeyIndex = 0;
470 wepKeyType = TDENetworkWepKeyType::Hexadecimal;
471 pskFlags = TDENetworkPasswordHandlingFlags::None;
472 leapPasswordFlags = TDENetworkPasswordHandlingFlags::None;
473}
474
475TDENetworkWiFiSecurityConfiguration::~TDENetworkWiFiSecurityConfiguration() {
476 //
477}
478
479/*================================================================================================*/
480/* TDENetworkWiFiDeviceInfo */
481/*================================================================================================*/
482
483TDENetworkWiFiDeviceInfo::TDENetworkWiFiDeviceInfo() {
484 valid = false;
485}
486
487TDENetworkWiFiDeviceInfo::~TDENetworkWiFiDeviceInfo() {
488 //
489}
490
491/*================================================================================================*/
492/* TDENetworkDeviceInformation */
493/*================================================================================================*/
494
495TDENetworkDeviceInformation::TDENetworkDeviceInformation() {
496 valid = false;
497 statusFlags = TDENetworkConnectionStatus::Invalid;
498 capabilityFlags = TDENetworkDeviceCapabilityFlags::None;
499}
500
501TDENetworkDeviceInformation::~TDENetworkDeviceInformation() {
502 //
503}
504
505/*================================================================================================*/
506/* TDENetworkHWNeighbor */
507/*================================================================================================*/
508
509TDENetworkHWNeighbor::TDENetworkHWNeighbor() {
510 valid = false;
511}
512
513TDENetworkHWNeighbor::~TDENetworkHWNeighbor() {
514 //
515}
516
517/*================================================================================================*/
518/* TDENetworkWiFiAPInfo */
519/*================================================================================================*/
520
521TDENetworkWiFiAPInfo::TDENetworkWiFiAPInfo() : TDENetworkHWNeighbor() {
522 //
523}
524
525TDENetworkWiFiAPInfo::~TDENetworkWiFiAPInfo() {
526 //
527}
528
529TQString TDENetworkWiFiAPInfo::friendlySSID() const {
530 TQString ret;
531
532 ret = TQString(SSID);
533 if (ret == "") {
534 ret = "<" + i18n("hidden") + ">";
535 }
536
537 return ret;
538}
539
540/*================================================================================================*/
541/* TDENetworkConnection */
542/*================================================================================================*/
543
544TDENetworkConnection::TDENetworkConnection() {
545 readOnly = false;
546 autoConnect = false;
547 fullDuplex = true;
548 requireIPV4 = false;
549 requireIPV6 = false;
550 mtu = 0;
551}
552
553TDENetworkConnection::~TDENetworkConnection() {
554 //
555}
556
557TDENetworkConnectionType::TDENetworkConnectionType TDENetworkConnection::type() {
558 if (dynamic_cast<TDEWiredEthernetConnection*>(this)) {
559 return TDENetworkConnectionType::WiredEthernet;
560 }
561 else if (dynamic_cast<TDEWiredInfinibandConnection*>(this)) {
562 return TDENetworkConnectionType::Infiniband;
563 }
564 else if (dynamic_cast<TDEVPNConnection*>(this)) {
565 return TDENetworkConnectionType::VPN;
566 }
567 else if (dynamic_cast<TDEWiMaxConnection*>(this)) {
568 return TDENetworkConnectionType::WiMax;
569 }
570 else if (dynamic_cast<TDEVLANConnection*>(this)) {
571 return TDENetworkConnectionType::VLAN;
572 }
573 else if (dynamic_cast<TDEOLPCMeshConnection*>(this)) {
574 return TDENetworkConnectionType::OLPCMesh;
575 }
576 else if (dynamic_cast<TDEBluetoothConnection*>(this)) {
577 return TDENetworkConnectionType::Bluetooth;
578 }
579 else if (dynamic_cast<TDEModemConnection*>(this)) {
580 return TDENetworkConnectionType::Modem;
581 }
582 else if (dynamic_cast<TDEWiFiConnection*>(this)) {
583 return TDENetworkConnectionType::WiFi;
584 }
585 else {
586 return TDENetworkConnectionType::Other;
587 }
588}
589
590/*================================================================================================*/
591/* TDEWiredEthernetConnection */
592/*================================================================================================*/
593
594TDEWiredEthernetConnection::TDEWiredEthernetConnection() : TDENetworkConnection() {
595 //
596}
597
598TDEWiredEthernetConnection::~TDEWiredEthernetConnection() {
599 //
600}
601
602/*================================================================================================*/
603/* TDEWiredInfinibandConnection */
604/*================================================================================================*/
605
606TDEWiredInfinibandConnection::TDEWiredInfinibandConnection() : TDENetworkConnection() {
607 //
608}
609
610TDEWiredInfinibandConnection::~TDEWiredInfinibandConnection() {
611 //
612}
613
614/*================================================================================================*/
615/* TDEVPNConnection */
616/*================================================================================================*/
617
618TDEVPNConnection::TDEVPNConnection() : TDENetworkConnection() {
619 secretsValid = false;
620}
621
622TDEVPNConnection::~TDEVPNConnection() {
623 //
624}
625
626/*================================================================================================*/
627/* TDEWiMaxConnection */
628/*================================================================================================*/
629
630TDEWiMaxConnection::TDEWiMaxConnection() : TDENetworkConnection() {
631 //
632}
633
634TDEWiMaxConnection::~TDEWiMaxConnection() {
635 //
636}
637
638/*================================================================================================*/
639/* TDEVLANConnection */
640/*================================================================================================*/
641
642TDEVLANConnection::TDEVLANConnection() : TDENetworkConnection() {
643 //
644}
645
646TDEVLANConnection::~TDEVLANConnection() {
647 //
648}
649
650/*================================================================================================*/
651/* TDEOLPCMeshConnection */
652/*================================================================================================*/
653
654TDEOLPCMeshConnection::TDEOLPCMeshConnection() : TDENetworkConnection() {
655 channel = 0;
656}
657
658TDEOLPCMeshConnection::~TDEOLPCMeshConnection() {
659 //
660}
661
662/*================================================================================================*/
663/* TDEBluetoothConnection */
664/*================================================================================================*/
665
666TDEBluetoothConnection::TDEBluetoothConnection() : TDENetworkConnection() {
667 type = TDEBluetoothConnectionType::Other;
668}
669
670TDEBluetoothConnection::~TDEBluetoothConnection() {
671 //
672}
673
674/*================================================================================================*/
675/* TDEModemConnection */
676/*================================================================================================*/
677
678TDEModemConnection::TDEModemConnection() : TDENetworkConnection() {
679 type = TDEModemConnectionType::Other;
680}
681
682TDEModemConnection::~TDEModemConnection() {
683 //
684}
685
686/*================================================================================================*/
687/* TDEWiFiConnection */
688/*================================================================================================*/
689
690TDEWiFiConnection::TDEWiFiConnection() : TDENetworkConnection() {
691 operatingMode = TDEWiFiMode::Other;
692 bandRestriction = TDEWiFiFrequencyBand::None;
693 channelRestriction = -1;
694 bitRateRestriction = -1;
695 powerRestriction = -1;
696 isHiddenNetwork = false;
697 securityRequired = false;
698}
699
700TDEWiFiConnection::~TDEWiFiConnection() {
701 //
702}
703
704/*================================================================================================*/
705/* TDENetworkConnectionManager */
706/*================================================================================================*/
707
708TDENetworkConnectionManager::TDENetworkConnectionManager(TDENetworkDevice *networkDevice) : TQObject(), m_connectionList(NULL), m_hwNeighborList(NULL), m_networkDevice(networkDevice), m_prevConnectionStatus(TDENetworkGlobalManagerFlags::Unknown) {
709 m_emissionTimer = new TQTimer();
710 connect(m_emissionTimer, TQ_SIGNAL(timeout()), this, TQ_SLOT(emitQueuedSignals()));
711 if (!m_emissionTimer->isActive()) m_emissionTimer->start(0, true);
712}
713
714TDENetworkConnectionManager::~TDENetworkConnectionManager() {
715 m_emissionTimer->stop();
716 delete m_emissionTimer;
717}
718
719TQString TDENetworkConnectionManager::deviceNode() {
720 return m_networkDevice ? m_networkDevice->deviceNode() : TQString();
721}
722
723TQString TDENetworkConnectionManager::deviceMACAddress() {
724 return m_networkDevice ? m_networkDevice->macAddress() : TQString();
725}
726
727TDENetworkConnectionList* TDENetworkConnectionManager::connections() {
728 return m_connectionList;
729}
730
731TDENetworkConnection* TDENetworkConnectionManager::findConnectionByUUID(TQString uuid) {
732 TDENetworkConnection *connection;
733 for (connection = m_connectionList->first(); connection; connection = m_connectionList->next()) {
734 if (connection->UUID == uuid) {
735 return connection;
736 }
737 }
738 return NULL;
739}
740
741TDENetworkDevice* TDENetworkConnectionManager::findDeviceByUUID(TQString uuid) {
742 TDEHardwareDevices *hwdevices = TDEGlobal::hardwareDevices();
743 if (!hwdevices) return NULL;
744
745 TDEGenericHardwareList devices = hwdevices->listByDeviceClass(TDEGenericDeviceType::Network);
746 for (TDEGenericHardwareList::iterator it = devices.begin(); it != devices.end(); ++it)
747 {
748 TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(*it);
749 if (dev) {
750 TDENetworkConnectionManager* deviceConnectionManager = dev->connectionManager();
751 if (deviceConnectionManager) {
752 if (deviceConnectionManager->deviceInformation().UUID == uuid) {
753 return dev;
754 }
755 }
756 }
757 }
758
759 return NULL;
760}
761
762TDENetworkWiFiAPInfo* TDENetworkConnectionManager::findAccessPointByBSSID(TDEMACAddress bssid) {
763 if (!bssid.isValid()) {
764 return NULL;
765 }
766
767 TDENetworkHWNeighbor *neighbor;
768 for (neighbor = m_hwNeighborList->first(); neighbor; neighbor = m_hwNeighborList->next()) {
769 TDENetworkWiFiAPInfo* apInfo = dynamic_cast<TDENetworkWiFiAPInfo*>(neighbor);
770 if (!apInfo) {
771 continue;
772 }
773 if (apInfo->BSSID == bssid) {
774 return apInfo;
775 }
776 }
777 return NULL;
778}
779
780TQString TDENetworkConnectionManager::friendlyConnectionTypeName(TDENetworkConnectionType::TDENetworkConnectionType type) {
781 if (type == TDENetworkConnectionType::WiredEthernet) {
782 return i18n("Wired Ethernet");
783 }
784 else if (type == TDENetworkConnectionType::WiFi) {
785 return i18n("802.11 WiFi");
786 }
787 else if (type == TDENetworkConnectionType::Bluetooth) {
788 return i18n("Bluetooth");
789 }
790 else if (type == TDENetworkConnectionType::OLPCMesh) {
791 return i18n("OLPC Mesh");
792 }
793 else if (type == TDENetworkConnectionType::WiMax) {
794 return i18n("WiMax");
795 }
796 else if (type == TDENetworkConnectionType::Modem) {
797 return i18n("Cellular Modem");
798 }
799 else if (type == TDENetworkConnectionType::Infiniband) {
800 return i18n("Infiniband");
801 }
802 else if (type == TDENetworkConnectionType::Bond) {
803 return i18n("Bond");
804 }
805 else if (type == TDENetworkConnectionType::VLAN) {
806 return i18n("Virtual LAN");
807 }
808 else if (type == TDENetworkConnectionType::ADSL) {
809 return i18n("ADSL");
810 }
811 else if (type == TDENetworkConnectionType::VPN) {
812 return i18n("Virtual Private Network");
813 }
814 else if (type == TDENetworkConnectionType::Other) {
815 return i18n("Other");
816 }
817 else {
818 return TQString::null;
819 }
820}
821
822bool TDENetworkConnectionManager::validateIPAddress(TQHostAddress address) {
823 if (address.isIPv4Address()) {
824 TQ_UINT32 rawaddress = address.toIPv4Address();
825 if ((((rawaddress & 0xff000000) >> 24) == 0) || ((rawaddress & 0x000000ff) == 0) || ((rawaddress & 0x000000ff) == 255)) {
826 return false;
827 }
828 }
829 else if (address.isIPv6Address()) {
830 Q_IPV6ADDR rawaddress = address.toIPv6Address();
831 if (rawaddress.c[0] == 0xff) {
832 return false;
833 }
834 }
835 return true;
836}
837
838bool TDENetworkConnectionManager::validateIPNeworkMask(TQHostAddress netmask) {
839 Q_UNUSED(netmask);
840 return true;
841}
842
843void TDENetworkConnectionManager::clearTDENetworkConnectionList() {
844 TDENetworkConnection *connection;
845 for (connection = m_connectionList->first(); connection; connection = m_connectionList->next()) {
846 delete connection;
847 }
848 m_connectionList->clear();
849}
850
851void TDENetworkConnectionManager::clearTDENetworkHWNeighborList() {
852 TDENetworkHWNeighbor *neighbor;
853 for (neighbor = m_hwNeighborList->first(); neighbor; neighbor = m_hwNeighborList->next()) {
854 delete neighbor;
855 }
856 m_hwNeighborList->clear();
857}
858
859void TDENetworkConnectionManager::internalNetworkConnectionStateChanged(TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags newState) {
860 TDENetworkEventQueueEvent_Private queuedEvent;
861 queuedEvent.eventType = 0;
862 queuedEvent.newState = newState;
863 queuedEvent.previousState = m_prevConnectionStatus;
864 m_globalEventQueueEventList.append(queuedEvent);
865 if (!m_emissionTimer->isActive()) m_emissionTimer->start(0, true);
866
867 m_prevConnectionStatus = newState;
868}
869
870void TDENetworkConnectionManager::internalNetworkDeviceStateChanged(TDENetworkConnectionStatus::TDENetworkConnectionStatus newState, TQString deviceNodeName) {
871 if (!m_prevDeviceStatus.contains(deviceNodeName)) {
872 m_prevDeviceStatus[deviceNodeName] = TDENetworkConnectionStatus::Invalid;
873 }
874
875 TDENetworkEventQueueEvent_Private queuedEvent;
876 queuedEvent.eventType = 1;
877 queuedEvent.newConnStatus = newState;
878 queuedEvent.previousConnStatus = m_prevDeviceStatus[deviceNodeName];
879 queuedEvent.deviceNode = deviceNodeName;
880 m_globalEventQueueEventList.append(queuedEvent);
881 if (!m_emissionTimer->isActive()) m_emissionTimer->start(0, true);
882
883 m_prevDeviceStatus[deviceNodeName] = newState;
884}
885
886void TDENetworkConnectionManager::internalAccessPointStatusChanged(TDEMACAddress BSSID, TDENetworkAPEventType::TDENetworkAPEventType event) {
887 TDENetworkEventQueueEvent_Private queuedEvent;
888 queuedEvent.eventType = 2;
889 queuedEvent.BSSID = BSSID;
890 queuedEvent.apevent = event;
891 m_globalEventQueueEventList.append(queuedEvent);
892 if (!m_emissionTimer->isActive()) m_emissionTimer->start(0, true);
893}
894
895void TDENetworkConnectionManager::internalNetworkDeviceEvent(TDENetworkDeviceEventType::TDENetworkDeviceEventType event, TQString message) {
896 TDENetworkEventQueueEvent_Private queuedEvent;
897 queuedEvent.eventType = 3;
898 queuedEvent.ndevent = event;
899 queuedEvent.message = message;
900 m_globalEventQueueEventList.append(queuedEvent);
901 if (!m_emissionTimer->isActive()) m_emissionTimer->start(0, true);
902}
903
904void TDENetworkConnectionManager::internalVpnEvent(TDENetworkVPNEventType::TDENetworkVPNEventType event, TQString message) {
905 TDENetworkEventQueueEvent_Private queuedEvent;
906 queuedEvent.eventType = 4;
907 queuedEvent.vpnevent = event;
908 queuedEvent.message = message;
909 m_globalEventQueueEventList.append(queuedEvent);
910 if (!m_emissionTimer->isActive()) m_emissionTimer->start(0, true);
911}
912
913void TDENetworkConnectionManager::internalNetworkManagementEvent(TDENetworkGlobalEventType::TDENetworkGlobalEventType event) {
914 TDENetworkEventQueueEvent_Private queuedEvent;
915 queuedEvent.eventType = 5;
916 queuedEvent.globalevent = event;
917 m_globalEventQueueEventList.append(queuedEvent);
918 if (!m_emissionTimer->isActive()) m_emissionTimer->start(0, true);
919}
920
921void TDENetworkConnectionManager::emitQueuedSignals() {
922 if (!m_globalEventQueueEventList.isEmpty()) {
923#ifdef DEBUG_SIGNAL_QUEUE
924 kdDebug() << "TDENetworkConnectionManager::emitQueuedSignals: Going to dequeue " << m_globalEventQueueEventList.count() << " events..." << endl;
925#endif // DEBUG_SIGNAL_QUEUE
926 TDENetworkEventQueueEvent_PrivateList::Iterator it;
927 it = m_globalEventQueueEventList.begin();
928 while (it != m_globalEventQueueEventList.end()) {
929 TDENetworkEventQueueEvent_Private event = (*it);
930 it = m_globalEventQueueEventList.remove(it);
931 if (event.eventType == 0) {
932 emit(networkConnectionStateChanged(event.newState, event.previousState));
933 }
934 else if (event.eventType == 1) {
935 emit(networkDeviceStateChanged(event.newConnStatus, event.previousConnStatus, event.deviceNode));
936 }
937 else if (event.eventType == 2) {
938 emit(accessPointStatusChanged(event.BSSID, event.apevent));
939 }
940 else if (event.eventType == 3) {
941 emit(networkDeviceEvent(event.ndevent, event.message));
942 }
943 else if (event.eventType == 4) {
944 emit(vpnEvent(event.vpnevent, event.message));
945 }
946 else if (event.eventType == 5) {
947 emit(networkManagementEvent(event.globalevent));
948 }
949 }
950#ifdef DEBUG_SIGNAL_QUEUE
951 kdDebug() << "TDENetworkConnectionManager::emitQueuedSignals: " << m_globalEventQueueEventList.count() << " events remain in queue" << endl;
952#endif // DEBUG_SIGNAL_QUEUE
953 }
954}
955
956/*================================================================================================*/
957/* TDEGlobalNetworkManager */
958/*================================================================================================*/
959
960TDEGlobalNetworkManager::TDEGlobalNetworkManager() : m_internalConnectionManager(NULL) {
961#ifdef WITH_NETWORK_MANAGER_BACKEND
962 m_internalConnectionManager = new TDENetworkConnectionManager_BackendNM(NULL);
963#endif // WITH_NETWORK_MANAGER_BACKEND
964 if (m_internalConnectionManager) {
965 connect(m_internalConnectionManager, TQ_SIGNAL(networkConnectionStateChanged(TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags, TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags)), this, TQ_SIGNAL(networkConnectionStateChanged(TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags, TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags)));
966 connect(m_internalConnectionManager, TQ_SIGNAL(vpnEvent(TDENetworkVPNEventType::TDENetworkVPNEventType, TQString)), this, TQ_SIGNAL(vpnEvent(TDENetworkVPNEventType::TDENetworkVPNEventType, TQString)));
967 connect(m_internalConnectionManager, TQ_SIGNAL(networkManagementEvent(TDENetworkGlobalEventType::TDENetworkGlobalEventType)), this, TQ_SIGNAL(networkManagementEvent(TDENetworkGlobalEventType::TDENetworkGlobalEventType)));
968 }
969}
970
971TDEGlobalNetworkManager::~TDEGlobalNetworkManager() {
972 delete m_internalConnectionManager;
973}
974
975TQString TDEGlobalNetworkManager::backendName() {
976 if (!m_internalConnectionManager) return TQString::null;
977 return m_internalConnectionManager->backendName();
978}
979
980TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags TDEGlobalNetworkManager::backendStatus() {
981 if (!m_internalConnectionManager) return TDENetworkGlobalManagerFlags::BackendUnavailable;
982 return m_internalConnectionManager->backendStatus();
983}
984
985void TDEGlobalNetworkManager::loadConnectionInformation() {
986 if (!m_internalConnectionManager) return;
987 return m_internalConnectionManager->loadConnectionInformation();
988}
989
990void TDEGlobalNetworkManager::loadConnectionAllowedValues(TDENetworkConnection* connection) {
991 if (!m_internalConnectionManager) return;
992 return m_internalConnectionManager->loadConnectionAllowedValues(connection);
993}
994
995bool TDEGlobalNetworkManager::loadConnectionSecrets(TQString uuid) {
996 if (!m_internalConnectionManager) return false;
997 return m_internalConnectionManager->loadConnectionSecrets(uuid);
998}
999
1000bool TDEGlobalNetworkManager::saveConnection(TDENetworkConnection* connection) {
1001 if (!m_internalConnectionManager) return false;
1002 return m_internalConnectionManager->saveConnection(connection);
1003}
1004
1005bool TDEGlobalNetworkManager::deleteConnection(TQString uuid) {
1006 if (!m_internalConnectionManager) return false;
1007 return m_internalConnectionManager->deleteConnection(uuid);
1008}
1009
1010bool TDEGlobalNetworkManager::verifyConnectionSettings(TDENetworkConnection* connection, TDENetworkConnectionErrorFlags::TDENetworkConnectionErrorFlags* type, TDENetworkErrorStringMap* reason) {
1011 if (!m_internalConnectionManager) return false;
1012 return m_internalConnectionManager->verifyConnectionSettings(connection, type, reason);
1013}
1014
1015TDENetworkConnectionStatus::TDENetworkConnectionStatus TDEGlobalNetworkManager::initiateConnection(TQString uuid) {
1016 if (!m_internalConnectionManager) return TDENetworkConnectionStatus::Invalid;
1017 return m_internalConnectionManager->initiateConnection(uuid);
1018}
1019
1020TDENetworkConnectionStatus::TDENetworkConnectionStatus TDEGlobalNetworkManager::checkConnectionStatus(TQString uuid) {
1021 if (!m_internalConnectionManager) return TDENetworkConnectionStatus::Invalid;
1022 return m_internalConnectionManager->checkConnectionStatus(uuid);
1023}
1024
1025TDENetworkConnectionStatus::TDENetworkConnectionStatus TDEGlobalNetworkManager::deactivateConnection(TQString uuid) {
1026 if (!m_internalConnectionManager) return TDENetworkConnectionStatus::Invalid;
1027 return m_internalConnectionManager->deactivateConnection(uuid);
1028}
1029
1030TQStringList TDEGlobalNetworkManager::validSettings() {
1031 if (!m_internalConnectionManager) return TQStringList();
1032 return m_internalConnectionManager->validSettings();
1033}
1034
1035TDENetworkHWNeighborList* TDEGlobalNetworkManager::siteSurvey() {
1036 if (!m_internalConnectionManager) return NULL;
1037 return m_internalConnectionManager->siteSurvey();
1038}
1039
1040TQStringList TDEGlobalNetworkManager::connectionPhysicalDeviceUUIDs(TQString uuid) {
1041 if (!m_internalConnectionManager) return TQStringList();
1042 return m_internalConnectionManager->connectionPhysicalDeviceUUIDs(uuid);
1043}
1044
1045TDENetworkVPNTypeList TDEGlobalNetworkManager::availableVPNTypes() {
1046 if (!m_internalConnectionManager) return TDENetworkVPNTypeList();
1047 return m_internalConnectionManager->availableVPNTypes();
1048}
1049
1050bool TDEGlobalNetworkManager::networkingEnabled() {
1051 if (!m_internalConnectionManager) return false;
1052 return m_internalConnectionManager->networkingEnabled();
1053}
1054
1055bool TDEGlobalNetworkManager::enableNetworking(bool enable) {
1056 if (!m_internalConnectionManager) return false;
1057 return m_internalConnectionManager->enableNetworking(enable);
1058}
1059
1060bool TDEGlobalNetworkManager::wiFiHardwareEnabled() {
1061 if (!m_internalConnectionManager) return false;
1062 return m_internalConnectionManager->wiFiHardwareEnabled();
1063}
1064
1065bool TDEGlobalNetworkManager::enableWiFi(bool enable) {
1066 if (!m_internalConnectionManager) return false;
1067 return m_internalConnectionManager->enableWiFi(enable);
1068}
1069
1070bool TDEGlobalNetworkManager::wiFiEnabled() {
1071 if (!m_internalConnectionManager) return false;
1072 return m_internalConnectionManager->wiFiEnabled();
1073}
1074
1075TQStringList TDEGlobalNetworkManager::defaultNetworkDevices() {
1076 if (!m_internalConnectionManager) return TQStringList();
1077 return m_internalConnectionManager->defaultNetworkDevices();
1078}
1079
1080TDENetworkConnectionList* TDEGlobalNetworkManager::connections() {
1081 if (!m_internalConnectionManager) return NULL;
1082 return m_internalConnectionManager->connections();
1083}
1084
1085TDENetworkConnection* TDEGlobalNetworkManager::findConnectionByUUID(TQString uuid) {
1086 if (!m_internalConnectionManager) return NULL;
1087 return m_internalConnectionManager->findConnectionByUUID(uuid);
1088}
1089
1090TDENetworkDevice* TDEGlobalNetworkManager::findDeviceByUUID(TQString uuid) {
1091 if (!m_internalConnectionManager) return NULL;
1092 return m_internalConnectionManager->findDeviceByUUID(uuid);
1093}
1094
1095TDENetworkWiFiAPInfo* TDEGlobalNetworkManager::findAccessPointByBSSID(TDEMACAddress bssid) {
1096 TDEHardwareDevices *hwdevices = TDEGlobal::hardwareDevices();
1097 if (!hwdevices) {
1098 return NULL;
1099 }
1100
1101 TDENetworkWiFiAPInfo* ret = NULL;
1102 TDEGenericHardwareList devices = hwdevices->listByDeviceClass(TDEGenericDeviceType::Network);
1103 for (TDEGenericHardwareList::iterator it = devices.begin(); it != devices.end(); ++it) {
1104 TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(*it);
1105 if (dev) {
1106 TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
1107 if (deviceConnMan)
1108 {
1109 TDENetworkWiFiAPInfo* candidate = deviceConnMan->findAccessPointByBSSID(bssid);
1110 if (candidate)
1111 {
1112 ret = candidate;
1113 break;
1114 }
1115 }
1116 }
1117 }
1118
1119 return ret;
1120}
1121
1122/*================================================================================================*/
1123/* End */
1124/*================================================================================================*/
1125
1126#include "tdenetworkconnections.moc"
TDELocale::i18n
TQString i18n(const char *text)
i18n is the function that does everything you need to translate a string.
Definition: tdelocale.cpp:1976
TDENetworkEventQueueEvent_Private
INTERNAL CLASS.
Definition: tdenetworkconnections.h:997
TDEGlobal::kdDebug
kdbgstream kdDebug(int area=0)
Returns a debug stream.
Definition: kdebug.cpp:371
TDEGlobal::endl
kdbgstream & endl(kdbgstream &s)
Prints an "\n".
Definition: kdebug.h:430
KNotifyClient::event
int event(const TQString &message, const TQString &text=TQString::null) TDE_DEPRECATED
Definition: knotifyclient.cpp:125
tdelocale.h

tdecore

Skip menu "tdecore"
  • Main Page
  • Modules
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

tdecore

Skip menu "tdecore"
  • arts
  • dcop
  • dnssd
  • interfaces
  •   kspeech
  •     interface
  •     library
  •   tdetexteditor
  • kate
  • kded
  • kdoctools
  • kimgio
  • kjs
  • libtdemid
  • libtdescreensaver
  • tdeabc
  • tdecmshell
  • tdecore
  • tdefx
  • tdehtml
  • tdeinit
  • tdeio
  •   bookmarks
  •   httpfilter
  •   kpasswdserver
  •   kssl
  •   tdefile
  •   tdeio
  •   tdeioexec
  • tdeioslave
  •   http
  • tdemdi
  •   tdemdi
  • tdenewstuff
  • tdeparts
  • tdeprint
  • tderandr
  • tderesources
  • tdespell2
  • tdesu
  • tdeui
  • tdeunittest
  • tdeutils
  • tdewallet
Generated for tdecore by doxygen 1.9.4
This website is maintained by Timothy Pearson.