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

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.8.11
This website is maintained by Timothy Pearson.