• 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(TDENetworkDevice *networkDevice) : TQObject(), m_connectionList(NULL), m_hwNeighborList(NULL), m_networkDevice(networkDevice), 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::deviceNode() {
713  return m_networkDevice ? m_networkDevice->deviceNode() : TQString();
714 }
715 
716 TQString TDENetworkConnectionManager::deviceMACAddress() {
717  return m_networkDevice ? m_networkDevice->macAddress() : TQString();
718 }
719 
720 TDENetworkConnectionList* TDENetworkConnectionManager::connections() {
721  return m_connectionList;
722 }
723 
724 TDENetworkConnection* TDENetworkConnectionManager::findConnectionByUUID(TQString uuid) {
725  TDENetworkConnection *connection;
726  for (connection = m_connectionList->first(); connection; connection = m_connectionList->next()) {
727  if (connection->UUID == uuid) {
728  return connection;
729  }
730  }
731  return NULL;
732 }
733 
734 TDENetworkDevice* TDENetworkConnectionManager::findDeviceByUUID(TQString uuid) {
735  TDEHardwareDevices *hwdevices = TDEGlobal::hardwareDevices();
736  if (!hwdevices) return NULL;
737 
738  TDEGenericHardwareList devices = hwdevices->listByDeviceClass(TDEGenericDeviceType::Network);
739  for (TDEGenericHardwareList::iterator it = devices.begin(); it != devices.end(); ++it)
740  {
741  TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(*it);
742  if (dev) {
743  TDENetworkConnectionManager* deviceConnectionManager = dev->connectionManager();
744  if (deviceConnectionManager) {
745  if (deviceConnectionManager->deviceInformation().UUID == uuid) {
746  return dev;
747  }
748  }
749  }
750  }
751 
752  return NULL;
753 }
754 
755 TDENetworkWiFiAPInfo* TDENetworkConnectionManager::findAccessPointByBSSID(TDEMACAddress bssid) {
756  if (!bssid.isValid()) {
757  return NULL;
758  }
759 
760  TDENetworkHWNeighbor *neighbor;
761  for (neighbor = m_hwNeighborList->first(); neighbor; neighbor = m_hwNeighborList->next()) {
762  TDENetworkWiFiAPInfo* apInfo = dynamic_cast<TDENetworkWiFiAPInfo*>(neighbor);
763  if (!apInfo) {
764  continue;
765  }
766  if (apInfo->BSSID == bssid) {
767  return apInfo;
768  }
769  }
770  return NULL;
771 }
772 
773 TQString TDENetworkConnectionManager::friendlyConnectionTypeName(TDENetworkConnectionType::TDENetworkConnectionType type) {
774  if (type == TDENetworkConnectionType::WiredEthernet) {
775  return i18n("Wired Ethernet");
776  }
777  else if (type == TDENetworkConnectionType::WiFi) {
778  return i18n("802.11 WiFi");
779  }
780  else if (type == TDENetworkConnectionType::Bluetooth) {
781  return i18n("Bluetooth");
782  }
783  else if (type == TDENetworkConnectionType::OLPCMesh) {
784  return i18n("OLPC Mesh");
785  }
786  else if (type == TDENetworkConnectionType::WiMax) {
787  return i18n("WiMax");
788  }
789  else if (type == TDENetworkConnectionType::Modem) {
790  return i18n("Cellular Modem");
791  }
792  else if (type == TDENetworkConnectionType::Infiniband) {
793  return i18n("Infiniband");
794  }
795  else if (type == TDENetworkConnectionType::Bond) {
796  return i18n("Bond");
797  }
798  else if (type == TDENetworkConnectionType::VLAN) {
799  return i18n("Virtual LAN");
800  }
801  else if (type == TDENetworkConnectionType::ADSL) {
802  return i18n("ADSL");
803  }
804  else if (type == TDENetworkConnectionType::VPN) {
805  return i18n("Virtual Private Network");
806  }
807  else if (type == TDENetworkConnectionType::Other) {
808  return i18n("Other");
809  }
810  else {
811  return TQString::null;
812  }
813 }
814 
815 bool TDENetworkConnectionManager::validateIPAddress(TQHostAddress address) {
816  if (address.isIPv4Address()) {
817  TQ_UINT32 rawaddress = address.toIPv4Address();
818  if ((((rawaddress & 0xff000000) >> 24) == 0) || ((rawaddress & 0x000000ff) == 0) || ((rawaddress & 0x000000ff) == 255)) {
819  return false;
820  }
821  }
822  else if (address.isIPv6Address()) {
823  Q_IPV6ADDR rawaddress = address.toIPv6Address();
824  if (rawaddress.c[0] == 0xff) {
825  return false;
826  }
827  }
828  return true;
829 }
830 
831 bool TDENetworkConnectionManager::validateIPNeworkMask(TQHostAddress netmask) {
832  Q_UNUSED(netmask);
833  return TRUE;
834 }
835 
836 void TDENetworkConnectionManager::clearTDENetworkConnectionList() {
837  TDENetworkConnection *connection;
838  for (connection = m_connectionList->first(); connection; connection = m_connectionList->next()) {
839  delete connection;
840  }
841  m_connectionList->clear();
842 }
843 
844 void TDENetworkConnectionManager::clearTDENetworkHWNeighborList() {
845  TDENetworkHWNeighbor *neighbor;
846  for (neighbor = m_hwNeighborList->first(); neighbor; neighbor = m_hwNeighborList->next()) {
847  delete neighbor;
848  }
849  m_hwNeighborList->clear();
850 }
851 
852 void TDENetworkConnectionManager::internalNetworkConnectionStateChanged(TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags newState) {
853  TDENetworkEventQueueEvent_Private queuedEvent;
854  queuedEvent.eventType = 0;
855  queuedEvent.newState = newState;
856  queuedEvent.previousState = m_prevConnectionStatus;
857  m_globalEventQueueEventList.append(queuedEvent);
858  if (!m_emissionTimer->isActive()) m_emissionTimer->start(0, TRUE);
859 
860  m_prevConnectionStatus = newState;
861 }
862 
863 void TDENetworkConnectionManager::internalNetworkDeviceStateChanged(TDENetworkConnectionStatus::TDENetworkConnectionStatus newState, TQString deviceNodeName) {
864  if (!m_prevDeviceStatus.contains(deviceNodeName)) {
865  m_prevDeviceStatus[deviceNodeName] = TDENetworkConnectionStatus::Invalid;
866  }
867 
868  TDENetworkEventQueueEvent_Private queuedEvent;
869  queuedEvent.eventType = 1;
870  queuedEvent.newConnStatus = newState;
871  queuedEvent.previousConnStatus = m_prevDeviceStatus[deviceNodeName];
872  queuedEvent.deviceNode = deviceNodeName;
873  m_globalEventQueueEventList.append(queuedEvent);
874  if (!m_emissionTimer->isActive()) m_emissionTimer->start(0, TRUE);
875 
876  m_prevDeviceStatus[deviceNodeName] = newState;
877 }
878 
879 void TDENetworkConnectionManager::internalAccessPointStatusChanged(TDEMACAddress BSSID, TDENetworkAPEventType::TDENetworkAPEventType event) {
880  TDENetworkEventQueueEvent_Private queuedEvent;
881  queuedEvent.eventType = 2;
882  queuedEvent.BSSID = BSSID;
883  queuedEvent.apevent = event;
884  m_globalEventQueueEventList.append(queuedEvent);
885  if (!m_emissionTimer->isActive()) m_emissionTimer->start(0, TRUE);
886 }
887 
888 void TDENetworkConnectionManager::internalNetworkDeviceEvent(TDENetworkDeviceEventType::TDENetworkDeviceEventType event, TQString message) {
889  TDENetworkEventQueueEvent_Private queuedEvent;
890  queuedEvent.eventType = 3;
891  queuedEvent.ndevent = event;
892  queuedEvent.message = message;
893  m_globalEventQueueEventList.append(queuedEvent);
894  if (!m_emissionTimer->isActive()) m_emissionTimer->start(0, TRUE);
895 }
896 
897 void TDENetworkConnectionManager::internalVpnEvent(TDENetworkVPNEventType::TDENetworkVPNEventType event, TQString message) {
898  TDENetworkEventQueueEvent_Private queuedEvent;
899  queuedEvent.eventType = 4;
900  queuedEvent.vpnevent = event;
901  queuedEvent.message = message;
902  m_globalEventQueueEventList.append(queuedEvent);
903  if (!m_emissionTimer->isActive()) m_emissionTimer->start(0, TRUE);
904 }
905 
906 void TDENetworkConnectionManager::internalNetworkManagementEvent(TDENetworkGlobalEventType::TDENetworkGlobalEventType event) {
907  TDENetworkEventQueueEvent_Private queuedEvent;
908  queuedEvent.eventType = 5;
909  queuedEvent.globalevent = event;
910  m_globalEventQueueEventList.append(queuedEvent);
911  if (!m_emissionTimer->isActive()) m_emissionTimer->start(0, TRUE);
912 }
913 
914 void TDENetworkConnectionManager::emitQueuedSignals() {
915  if (!m_globalEventQueueEventList.isEmpty()) {
916 #ifdef DEBUG_SIGNAL_QUEUE
917  kdDebug() << "TDENetworkConnectionManager::emitQueuedSignals: Going to dequeue " << m_globalEventQueueEventList.count() << " events..." << endl;
918 #endif // DEBUG_SIGNAL_QUEUE
919  TDENetworkEventQueueEvent_PrivateList::Iterator it;
920  it = m_globalEventQueueEventList.begin();
921  while (it != m_globalEventQueueEventList.end()) {
922  TDENetworkEventQueueEvent_Private event = (*it);
923  it = m_globalEventQueueEventList.remove(it);
924  if (event.eventType == 0) {
925  emit(networkConnectionStateChanged(event.newState, event.previousState));
926  }
927  else if (event.eventType == 1) {
928  emit(networkDeviceStateChanged(event.newConnStatus, event.previousConnStatus, event.deviceNode));
929  }
930  else if (event.eventType == 2) {
931  emit(accessPointStatusChanged(event.BSSID, event.apevent));
932  }
933  else if (event.eventType == 3) {
934  emit(networkDeviceEvent(event.ndevent, event.message));
935  }
936  else if (event.eventType == 4) {
937  emit(vpnEvent(event.vpnevent, event.message));
938  }
939  else if (event.eventType == 5) {
940  emit(networkManagementEvent(event.globalevent));
941  }
942  }
943 #ifdef DEBUG_SIGNAL_QUEUE
944  kdDebug() << "TDENetworkConnectionManager::emitQueuedSignals: " << m_globalEventQueueEventList.count() << " events remain in queue" << endl;
945 #endif // DEBUG_SIGNAL_QUEUE
946  }
947 }
948 
949 /*================================================================================================*/
950 /* TDEGlobalNetworkManager */
951 /*================================================================================================*/
952 
953 TDEGlobalNetworkManager::TDEGlobalNetworkManager() : m_internalConnectionManager(NULL) {
954 #ifdef WITH_NETWORK_MANAGER_BACKEND
955  m_internalConnectionManager = new TDENetworkConnectionManager_BackendNM(NULL);
956 #endif // WITH_NETWORK_MANAGER_BACKEND
957  if (m_internalConnectionManager) {
958  connect(m_internalConnectionManager, SIGNAL(networkConnectionStateChanged(TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags, TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags)), this, SIGNAL(networkConnectionStateChanged(TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags, TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags)));
959  connect(m_internalConnectionManager, SIGNAL(vpnEvent(TDENetworkVPNEventType::TDENetworkVPNEventType, TQString)), this, SIGNAL(vpnEvent(TDENetworkVPNEventType::TDENetworkVPNEventType, TQString)));
960  connect(m_internalConnectionManager, SIGNAL(networkManagementEvent(TDENetworkGlobalEventType::TDENetworkGlobalEventType)), this, SIGNAL(networkManagementEvent(TDENetworkGlobalEventType::TDENetworkGlobalEventType)));
961  }
962 }
963 
964 TDEGlobalNetworkManager::~TDEGlobalNetworkManager() {
965  delete m_internalConnectionManager;
966 }
967 
968 TQString TDEGlobalNetworkManager::backendName() {
969  if (!m_internalConnectionManager) return TQString::null;
970  return m_internalConnectionManager->backendName();
971 }
972 
973 TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags TDEGlobalNetworkManager::backendStatus() {
974  if (!m_internalConnectionManager) return TDENetworkGlobalManagerFlags::BackendUnavailable;
975  return m_internalConnectionManager->backendStatus();
976 }
977 
978 void TDEGlobalNetworkManager::loadConnectionInformation() {
979  if (!m_internalConnectionManager) return;
980  return m_internalConnectionManager->loadConnectionInformation();
981 }
982 
983 void TDEGlobalNetworkManager::loadConnectionAllowedValues(TDENetworkConnection* connection) {
984  if (!m_internalConnectionManager) return;
985  return m_internalConnectionManager->loadConnectionAllowedValues(connection);
986 }
987 
988 bool TDEGlobalNetworkManager::loadConnectionSecrets(TQString uuid) {
989  if (!m_internalConnectionManager) return false;
990  return m_internalConnectionManager->loadConnectionSecrets(uuid);
991 }
992 
993 bool TDEGlobalNetworkManager::saveConnection(TDENetworkConnection* connection) {
994  if (!m_internalConnectionManager) return false;
995  return m_internalConnectionManager->saveConnection(connection);
996 }
997 
998 bool TDEGlobalNetworkManager::deleteConnection(TQString uuid) {
999  if (!m_internalConnectionManager) return false;
1000  return m_internalConnectionManager->deleteConnection(uuid);
1001 }
1002 
1003 bool TDEGlobalNetworkManager::verifyConnectionSettings(TDENetworkConnection* connection, TDENetworkConnectionErrorFlags::TDENetworkConnectionErrorFlags* type, TDENetworkErrorStringMap* reason) {
1004  if (!m_internalConnectionManager) return false;
1005  return m_internalConnectionManager->verifyConnectionSettings(connection, type, reason);
1006 }
1007 
1008 TDENetworkConnectionStatus::TDENetworkConnectionStatus TDEGlobalNetworkManager::initiateConnection(TQString uuid) {
1009  if (!m_internalConnectionManager) return TDENetworkConnectionStatus::Invalid;
1010  return m_internalConnectionManager->initiateConnection(uuid);
1011 }
1012 
1013 TDENetworkConnectionStatus::TDENetworkConnectionStatus TDEGlobalNetworkManager::checkConnectionStatus(TQString uuid) {
1014  if (!m_internalConnectionManager) return TDENetworkConnectionStatus::Invalid;
1015  return m_internalConnectionManager->checkConnectionStatus(uuid);
1016 }
1017 
1018 TDENetworkConnectionStatus::TDENetworkConnectionStatus TDEGlobalNetworkManager::deactivateConnection(TQString uuid) {
1019  if (!m_internalConnectionManager) return TDENetworkConnectionStatus::Invalid;
1020  return m_internalConnectionManager->deactivateConnection(uuid);
1021 }
1022 
1023 TQStringList TDEGlobalNetworkManager::validSettings() {
1024  if (!m_internalConnectionManager) return TQStringList();
1025  return m_internalConnectionManager->validSettings();
1026 }
1027 
1028 TDENetworkHWNeighborList* TDEGlobalNetworkManager::siteSurvey() {
1029  if (!m_internalConnectionManager) return NULL;
1030  return m_internalConnectionManager->siteSurvey();
1031 }
1032 
1033 TQStringList TDEGlobalNetworkManager::connectionPhysicalDeviceUUIDs(TQString uuid) {
1034  if (!m_internalConnectionManager) return TQStringList();
1035  return m_internalConnectionManager->connectionPhysicalDeviceUUIDs(uuid);
1036 }
1037 
1038 TDENetworkVPNTypeList TDEGlobalNetworkManager::availableVPNTypes() {
1039  if (!m_internalConnectionManager) return TDENetworkVPNTypeList();
1040  return m_internalConnectionManager->availableVPNTypes();
1041 }
1042 
1043 bool TDEGlobalNetworkManager::networkingEnabled() {
1044  if (!m_internalConnectionManager) return false;
1045  return m_internalConnectionManager->networkingEnabled();
1046 }
1047 
1048 bool TDEGlobalNetworkManager::enableNetworking(bool enable) {
1049  if (!m_internalConnectionManager) return false;
1050  return m_internalConnectionManager->enableNetworking(enable);
1051 }
1052 
1053 bool TDEGlobalNetworkManager::wiFiHardwareEnabled() {
1054  if (!m_internalConnectionManager) return false;
1055  return m_internalConnectionManager->wiFiHardwareEnabled();
1056 }
1057 
1058 bool TDEGlobalNetworkManager::enableWiFi(bool enable) {
1059  if (!m_internalConnectionManager) return false;
1060  return m_internalConnectionManager->enableWiFi(enable);
1061 }
1062 
1063 bool TDEGlobalNetworkManager::wiFiEnabled() {
1064  if (!m_internalConnectionManager) return false;
1065  return m_internalConnectionManager->wiFiEnabled();
1066 }
1067 
1068 TQStringList TDEGlobalNetworkManager::defaultNetworkDevices() {
1069  if (!m_internalConnectionManager) return TQStringList();
1070  return m_internalConnectionManager->defaultNetworkDevices();
1071 }
1072 
1073 TDENetworkConnectionList* TDEGlobalNetworkManager::connections() {
1074  if (!m_internalConnectionManager) return NULL;
1075  return m_internalConnectionManager->connections();
1076 }
1077 
1078 TDENetworkConnection* TDEGlobalNetworkManager::findConnectionByUUID(TQString uuid) {
1079  if (!m_internalConnectionManager) return NULL;
1080  return m_internalConnectionManager->findConnectionByUUID(uuid);
1081 }
1082 
1083 TDENetworkDevice* TDEGlobalNetworkManager::findDeviceByUUID(TQString uuid) {
1084  if (!m_internalConnectionManager) return NULL;
1085  return m_internalConnectionManager->findDeviceByUUID(uuid);
1086 }
1087 
1088 TDENetworkWiFiAPInfo* TDEGlobalNetworkManager::findAccessPointByBSSID(TDEMACAddress bssid) {
1089  TDEHardwareDevices *hwdevices = TDEGlobal::hardwareDevices();
1090  if (!hwdevices) {
1091  return NULL;
1092  }
1093 
1094  TDENetworkWiFiAPInfo* ret = NULL;
1095  TDEGenericHardwareList devices = hwdevices->listByDeviceClass(TDEGenericDeviceType::Network);
1096  for (TDEGenericHardwareList::iterator it = devices.begin(); it != devices.end(); ++it) {
1097  TDENetworkDevice* dev = dynamic_cast<TDENetworkDevice*>(*it);
1098  if (dev) {
1099  TDENetworkConnectionManager* deviceConnMan = dev->connectionManager();
1100  if (deviceConnMan)
1101  {
1102  TDENetworkWiFiAPInfo* candidate = deviceConnMan->findAccessPointByBSSID(bssid);
1103  if (candidate)
1104  {
1105  ret = candidate;
1106  break;
1107  }
1108  }
1109  }
1110  }
1111 
1112  return ret;
1113 }
1114 
1115 /*================================================================================================*/
1116 /* End */
1117 /*================================================================================================*/
1118 
1119 #include "tdenetworkconnections.moc"
TDENetworkGlobalManagerFlags
Definition: tdenetworkconnections.h:233
TDEGlobal::kdDebug
kdbgstream kdDebug(int area=0)
Definition: kdebug.cpp:369
TDELocale::i18n
TQString i18n(const char *text)
Definition: tdelocale.cpp:1976
tdelocale.h
TDENetworkEventQueueEvent_Private
INTERNAL CLASS.
Definition: tdenetworkconnections.h:996
TDEGlobal::endl
kdbgstream & endl(kdbgstream &s)
Definition: kdebug.h:430

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
  •     tdecore
  • tdeabc
  • tdecmshell
  • tdecore
  • tdefx
  • tdehtml
  • tdeinit
  • tdeio
  •   bookmarks
  •   httpfilter
  •   kpasswdserver
  •   kssl
  • tdeioslave
  •   http
  •   tdefile
  •   tdeio
  •   tdeioexec
  • tdemdi
  •   tdemdi
  • tdenewstuff
  • tdeparts
  • tdeprint
  • tderandr
  • tderesources
  • tdespell2
  • tdesu
  • tdeui
  • tdeunittest
  • tdeutils
  • tdewallet
Generated for tdecore by doxygen 1.8.8
This website is maintained by Timothy Pearson.