• 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 extern "C" {
44  TDE_EXPORT TDEGlobalNetworkManager* create_tdeGlobalNetworkManager()
45  {
46  return new TDEGlobalNetworkManager();
47  }
48 }
49 
50 TDENetworkSearchDomain::TDENetworkSearchDomain() {
51  m_isIPV6 = false;
52 }
53 
54 TDENetworkSearchDomain::TDENetworkSearchDomain(TQString domain, bool ipv6) {
55  m_isIPV6 = ipv6;
56  m_domain = domain;
57 }
58 
59 TDENetworkSearchDomain::~TDENetworkSearchDomain() {
60  //
61 }
62 
63 TQString TDENetworkSearchDomain::searchDomain() {
64  return m_domain;
65 }
66 
67 void TDENetworkSearchDomain::setSearchDomain(TQString domain, bool ipv6) {
68  m_isIPV6 = ipv6;
69  m_domain = domain;
70 }
71 
72 bool TDENetworkSearchDomain::isIPv4() {
73  return !m_isIPV6;
74 }
75 
76 bool TDENetworkSearchDomain::isIPv6() {
77  return m_isIPV6;
78 }
79 
80 /*================================================================================================*/
81 /* TDENetMask */
82 /*================================================================================================*/
83 
84 TDENetMask::TDENetMask() {
85  m_ipv4NetMask = 0;
86  m_isIPV6 = false;
87 }
88 
89 TDENetMask::TDENetMask(TQ_UINT32 netmask) {
90  m_ipv4NetMask = netmask;
91  m_isIPV6 = false;
92 }
93 
94 TDENetMask::TDENetMask(TQ_UINT8* netmask) {
95  m_ipv6NetMask = TQHostAddress(netmask);
96  m_isIPV6 = true;
97 }
98 
99 TDENetMask::~TDENetMask() {
100  //
101 }
102 
103 void 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 
134 unsigned 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 
161 void 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 
182 TQString 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 
191 bool TDENetMask::isIPv4() {
192  return !m_isIPV6;
193 }
194 
195 bool TDENetMask::isIPv6() {
196  return m_isIPV6;
197 }
198 
199 /*================================================================================================*/
200 /* TDEMACAddress */
201 /*================================================================================================*/
202 
203 TDEMACAddress::TDEMACAddress() {
204  m_macAddress.clear();
205  m_isValid = false;
206 }
207 
208 TDEMACAddress::TDEMACAddress(TDENetworkByteList address) {
209  m_macAddress = address;
210  m_isValid = true;
211 }
212 
213 TDEMACAddress::~TDEMACAddress() {
214  //
215 }
216 
217 TDENetworkByteList TDEMACAddress::address() {
218  return m_macAddress;
219 }
220 
221 void TDEMACAddress::setAddress(TDENetworkByteList address) {
222  m_macAddress = address;
223  m_isValid = true;
224 }
225 
226 bool 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 
239 void 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 
248 TQString 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 
260 bool 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 
275 bool 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 
297 TDENetworkSingleIPConfiguration::TDENetworkSingleIPConfiguration() {
298  valid = false;
299 }
300 
301 TDENetworkSingleIPConfiguration::~TDENetworkSingleIPConfiguration() {
302  //
303 }
304 
305 bool TDENetworkSingleIPConfiguration::isIPv4() {
306  return ipAddress.isIPv4Address() & valid;
307 }
308 
309 bool TDENetworkSingleIPConfiguration::isIPv6() {
310  return ipAddress.isIPv6Address() & valid;
311 }
312 
313 /*================================================================================================*/
314 /* TDENetworkSingleRouteConfiguration */
315 /*================================================================================================*/
316 
317 TDENetworkSingleRouteConfiguration::TDENetworkSingleRouteConfiguration() {
318  valid = false;
319 }
320 
321 TDENetworkSingleRouteConfiguration::~TDENetworkSingleRouteConfiguration() {
322  //
323 }
324 
325 bool TDENetworkSingleRouteConfiguration::isIPv4() {
326  return ipAddress.isIPv4Address() & valid;
327 }
328 
329 bool TDENetworkSingleRouteConfiguration::isIPv6() {
330  return ipAddress.isIPv6Address() & valid;
331 }
332 
333 /*================================================================================================*/
334 /* TDENetworkIEEE8021xConfiguration */
335 /*================================================================================================*/
336 
337 TDENetworkIEEE8021xConfiguration::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 
352 TDENetworkIEEE8021xConfiguration::~TDENetworkIEEE8021xConfiguration() {
353  //
354 }
355 
356 /*================================================================================================*/
357 /* TDENetworkPPPConfiguration */
358 /*================================================================================================*/
359 
360 TDENetworkPPPConfiguration::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 
371 TDENetworkPPPConfiguration::~TDENetworkPPPConfiguration() {
372  //
373 }
374 
375 /*================================================================================================*/
376 /* TDENetworkPPPOEConfiguration */
377 /*================================================================================================*/
378 
379 TDENetworkPPPOEConfiguration::TDENetworkPPPOEConfiguration() {
380  valid = false;
381  secretsValid = false;
382  passwordFlags = TDENetworkPasswordHandlingFlags::None;
383 }
384 
385 TDENetworkPPPOEConfiguration::~TDENetworkPPPOEConfiguration() {
386  //
387 }
388 
389 /*================================================================================================*/
390 /* TDENetworkSerialConfiguration */
391 /*================================================================================================*/
392 
393 TDENetworkSerialConfiguration::TDENetworkSerialConfiguration() {
394  valid = false;
395  baudRate = 115200;
396  byteWidth = 8;
397  parity = TDENetworkParity::None;
398  stopBits = 1;
399  txDelay = 0;
400 }
401 
402 TDENetworkSerialConfiguration::~TDENetworkSerialConfiguration() {
403  //
404 }
405 
406 /*================================================================================================*/
407 /* TDENetworkCDMAConfiguration */
408 /*================================================================================================*/
409 
410 TDENetworkCDMAConfiguration::TDENetworkCDMAConfiguration() {
411  valid = false;
412  secretsValid = false;
413  passwordFlags = TDENetworkPasswordHandlingFlags::None;
414 }
415 
416 TDENetworkCDMAConfiguration::~TDENetworkCDMAConfiguration() {
417  //
418 }
419 
420 /*================================================================================================*/
421 /* TDENetworkGSMConfiguration */
422 /*================================================================================================*/
423 
424 TDENetworkGSMConfiguration::TDENetworkGSMConfiguration() {
425  valid = false;
426  secretsValid = false;
427  passwordFlags = TDENetworkPasswordHandlingFlags::None;
428  networkType = TDEGSMNetworkType::Any;
429  pinFlags = TDENetworkPasswordHandlingFlags::None;
430  allowRoaming = false;
431 }
432 
433 TDENetworkGSMConfiguration::~TDENetworkGSMConfiguration() {
434  //
435 }
436 
437 /*================================================================================================*/
438 /* TDENetworkIPConfiguration */
439 /*================================================================================================*/
440 
441 TDENetworkIPConfiguration::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 
453 TDENetworkIPConfiguration::~TDENetworkIPConfiguration() {
454  //
455 }
456 
457 /*================================================================================================*/
458 /* TDENetworkWiFiSecurityConfiguration */
459 /*================================================================================================*/
460 
461 TDENetworkWiFiSecurityConfiguration::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 
475 TDENetworkWiFiSecurityConfiguration::~TDENetworkWiFiSecurityConfiguration() {
476  //
477 }
478 
479 /*================================================================================================*/
480 /* TDENetworkWiFiDeviceInfo */
481 /*================================================================================================*/
482 
483 TDENetworkWiFiDeviceInfo::TDENetworkWiFiDeviceInfo() {
484  valid = false;
485 }
486 
487 TDENetworkWiFiDeviceInfo::~TDENetworkWiFiDeviceInfo() {
488  //
489 }
490 
491 /*================================================================================================*/
492 /* TDENetworkDeviceInformation */
493 /*================================================================================================*/
494 
495 TDENetworkDeviceInformation::TDENetworkDeviceInformation() {
496  valid = false;
497  statusFlags = TDENetworkConnectionStatus::Invalid;
498  capabilityFlags = TDENetworkDeviceCapabilityFlags::None;
499 }
500 
501 TDENetworkDeviceInformation::~TDENetworkDeviceInformation() {
502  //
503 }
504 
505 /*================================================================================================*/
506 /* TDENetworkHWNeighbor */
507 /*================================================================================================*/
508 
509 TDENetworkHWNeighbor::TDENetworkHWNeighbor() {
510  valid = false;
511 }
512 
513 TDENetworkHWNeighbor::~TDENetworkHWNeighbor() {
514  //
515 }
516 
517 /*================================================================================================*/
518 /* TDENetworkWiFiAPInfo */
519 /*================================================================================================*/
520 
521 TDENetworkWiFiAPInfo::TDENetworkWiFiAPInfo() : TDENetworkHWNeighbor() {
522  //
523 }
524 
525 TDENetworkWiFiAPInfo::~TDENetworkWiFiAPInfo() {
526  //
527 }
528 
529 TQString 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 
544 TDENetworkConnection::TDENetworkConnection() {
545  readOnly = false;
546  autoConnect = false;
547  fullDuplex = true;
548  requireIPV4 = false;
549  requireIPV6 = false;
550  mtu = 0;
551 }
552 
553 TDENetworkConnection::~TDENetworkConnection() {
554  //
555 }
556 
557 TDENetworkConnectionType::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 
594 TDEWiredEthernetConnection::TDEWiredEthernetConnection() : TDENetworkConnection() {
595  //
596 }
597 
598 TDEWiredEthernetConnection::~TDEWiredEthernetConnection() {
599  //
600 }
601 
602 /*================================================================================================*/
603 /* TDEWiredInfinibandConnection */
604 /*================================================================================================*/
605 
606 TDEWiredInfinibandConnection::TDEWiredInfinibandConnection() : TDENetworkConnection() {
607  //
608 }
609 
610 TDEWiredInfinibandConnection::~TDEWiredInfinibandConnection() {
611  //
612 }
613 
614 /*================================================================================================*/
615 /* TDEVPNConnection */
616 /*================================================================================================*/
617 
618 TDEVPNConnection::TDEVPNConnection() : TDENetworkConnection() {
619  secretsValid = false;
620 }
621 
622 TDEVPNConnection::~TDEVPNConnection() {
623  //
624 }
625 
626 /*================================================================================================*/
627 /* TDEWiMaxConnection */
628 /*================================================================================================*/
629 
630 TDEWiMaxConnection::TDEWiMaxConnection() : TDENetworkConnection() {
631  //
632 }
633 
634 TDEWiMaxConnection::~TDEWiMaxConnection() {
635  //
636 }
637 
638 /*================================================================================================*/
639 /* TDEVLANConnection */
640 /*================================================================================================*/
641 
642 TDEVLANConnection::TDEVLANConnection() : TDENetworkConnection() {
643  //
644 }
645 
646 TDEVLANConnection::~TDEVLANConnection() {
647  //
648 }
649 
650 /*================================================================================================*/
651 /* TDEOLPCMeshConnection */
652 /*================================================================================================*/
653 
654 TDEOLPCMeshConnection::TDEOLPCMeshConnection() : TDENetworkConnection() {
655  channel = 0;
656 }
657 
658 TDEOLPCMeshConnection::~TDEOLPCMeshConnection() {
659  //
660 }
661 
662 /*================================================================================================*/
663 /* TDEBluetoothConnection */
664 /*================================================================================================*/
665 
666 TDEBluetoothConnection::TDEBluetoothConnection() : TDENetworkConnection() {
667  type = TDEBluetoothConnectionType::Other;
668 }
669 
670 TDEBluetoothConnection::~TDEBluetoothConnection() {
671  //
672 }
673 
674 /*================================================================================================*/
675 /* TDEModemConnection */
676 /*================================================================================================*/
677 
678 TDEModemConnection::TDEModemConnection() : TDENetworkConnection() {
679  type = TDEModemConnectionType::Other;
680 }
681 
682 TDEModemConnection::~TDEModemConnection() {
683  //
684 }
685 
686 /*================================================================================================*/
687 /* TDEWiFiConnection */
688 /*================================================================================================*/
689 
690 TDEWiFiConnection::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 
700 TDEWiFiConnection::~TDEWiFiConnection() {
701  //
702 }
703 
704 /*================================================================================================*/
705 /* TDENetworkConnectionManager */
706 /*================================================================================================*/
707 
708 TDENetworkConnectionManager::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 
714 TDENetworkConnectionManager::~TDENetworkConnectionManager() {
715  m_emissionTimer->stop();
716  delete m_emissionTimer;
717 }
718 
719 TQString TDENetworkConnectionManager::deviceNode() {
720  return m_networkDevice ? m_networkDevice->deviceNode() : TQString();
721 }
722 
723 TQString TDENetworkConnectionManager::deviceMACAddress() {
724  return m_networkDevice ? m_networkDevice->macAddress() : TQString();
725 }
726 
727 TDENetworkConnectionList* TDENetworkConnectionManager::connections() {
728  return m_connectionList;
729 }
730 
731 TDENetworkConnection* 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 
741 TDENetworkDevice* 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 
762 TDENetworkWiFiAPInfo* 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 
780 TQString 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 
822 bool 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 
838 bool TDENetworkConnectionManager::validateIPNeworkMask(TQHostAddress netmask) {
839  Q_UNUSED(netmask);
840  return true;
841 }
842 
843 void 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 
851 void 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 
859 void 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 
870 void 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 
886 void 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 
895 void 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 
904 void 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 
913 void 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 
921 void 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 
960 TDEGlobalNetworkManager::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 
971 TDEGlobalNetworkManager::~TDEGlobalNetworkManager() {
972  delete m_internalConnectionManager;
973 }
974 
975 TQString TDEGlobalNetworkManager::backendName() {
976  if (!m_internalConnectionManager) return TQString::null;
977  return m_internalConnectionManager->backendName();
978 }
979 
980 TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags TDEGlobalNetworkManager::backendStatus() {
981  if (!m_internalConnectionManager) return TDENetworkGlobalManagerFlags::BackendUnavailable;
982  return m_internalConnectionManager->backendStatus();
983 }
984 
985 void TDEGlobalNetworkManager::loadConnectionInformation() {
986  if (!m_internalConnectionManager) return;
987  return m_internalConnectionManager->loadConnectionInformation();
988 }
989 
990 void TDEGlobalNetworkManager::loadConnectionAllowedValues(TDENetworkConnection* connection) {
991  if (!m_internalConnectionManager) return;
992  return m_internalConnectionManager->loadConnectionAllowedValues(connection);
993 }
994 
995 bool TDEGlobalNetworkManager::loadConnectionSecrets(TQString uuid) {
996  if (!m_internalConnectionManager) return false;
997  return m_internalConnectionManager->loadConnectionSecrets(uuid);
998 }
999 
1000 bool TDEGlobalNetworkManager::saveConnection(TDENetworkConnection* connection) {
1001  if (!m_internalConnectionManager) return false;
1002  return m_internalConnectionManager->saveConnection(connection);
1003 }
1004 
1005 bool TDEGlobalNetworkManager::deleteConnection(TQString uuid) {
1006  if (!m_internalConnectionManager) return false;
1007  return m_internalConnectionManager->deleteConnection(uuid);
1008 }
1009 
1010 bool 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 
1015 TDENetworkConnectionStatus::TDENetworkConnectionStatus TDEGlobalNetworkManager::initiateConnection(TQString uuid) {
1016  if (!m_internalConnectionManager) return TDENetworkConnectionStatus::Invalid;
1017  return m_internalConnectionManager->initiateConnection(uuid);
1018 }
1019 
1020 TDENetworkConnectionStatus::TDENetworkConnectionStatus TDEGlobalNetworkManager::checkConnectionStatus(TQString uuid) {
1021  if (!m_internalConnectionManager) return TDENetworkConnectionStatus::Invalid;
1022  return m_internalConnectionManager->checkConnectionStatus(uuid);
1023 }
1024 
1025 TDENetworkConnectionStatus::TDENetworkConnectionStatus TDEGlobalNetworkManager::deactivateConnection(TQString uuid) {
1026  if (!m_internalConnectionManager) return TDENetworkConnectionStatus::Invalid;
1027  return m_internalConnectionManager->deactivateConnection(uuid);
1028 }
1029 
1030 TQStringList TDEGlobalNetworkManager::validSettings() {
1031  if (!m_internalConnectionManager) return TQStringList();
1032  return m_internalConnectionManager->validSettings();
1033 }
1034 
1035 TDENetworkHWNeighborList* TDEGlobalNetworkManager::siteSurvey() {
1036  if (!m_internalConnectionManager) return NULL;
1037  return m_internalConnectionManager->siteSurvey();
1038 }
1039 
1040 TQStringList TDEGlobalNetworkManager::connectionPhysicalDeviceUUIDs(TQString uuid) {
1041  if (!m_internalConnectionManager) return TQStringList();
1042  return m_internalConnectionManager->connectionPhysicalDeviceUUIDs(uuid);
1043 }
1044 
1045 TDENetworkVPNTypeList TDEGlobalNetworkManager::availableVPNTypes() {
1046  if (!m_internalConnectionManager) return TDENetworkVPNTypeList();
1047  return m_internalConnectionManager->availableVPNTypes();
1048 }
1049 
1050 bool TDEGlobalNetworkManager::networkingEnabled() {
1051  if (!m_internalConnectionManager) return false;
1052  return m_internalConnectionManager->networkingEnabled();
1053 }
1054 
1055 bool TDEGlobalNetworkManager::enableNetworking(bool enable) {
1056  if (!m_internalConnectionManager) return false;
1057  return m_internalConnectionManager->enableNetworking(enable);
1058 }
1059 
1060 bool TDEGlobalNetworkManager::wiFiHardwareEnabled() {
1061  if (!m_internalConnectionManager) return false;
1062  return m_internalConnectionManager->wiFiHardwareEnabled();
1063 }
1064 
1065 bool TDEGlobalNetworkManager::enableWiFi(bool enable) {
1066  if (!m_internalConnectionManager) return false;
1067  return m_internalConnectionManager->enableWiFi(enable);
1068 }
1069 
1070 bool TDEGlobalNetworkManager::wiFiEnabled() {
1071  if (!m_internalConnectionManager) return false;
1072  return m_internalConnectionManager->wiFiEnabled();
1073 }
1074 
1075 TQStringList TDEGlobalNetworkManager::defaultNetworkDevices() {
1076  if (!m_internalConnectionManager) return TQStringList();
1077  return m_internalConnectionManager->defaultNetworkDevices();
1078 }
1079 
1080 TDENetworkConnectionList* TDEGlobalNetworkManager::connections() {
1081  if (!m_internalConnectionManager) return NULL;
1082  return m_internalConnectionManager->connections();
1083 }
1084 
1085 TDENetworkConnection* TDEGlobalNetworkManager::findConnectionByUUID(TQString uuid) {
1086  if (!m_internalConnectionManager) return NULL;
1087  return m_internalConnectionManager->findConnectionByUUID(uuid);
1088 }
1089 
1090 TDENetworkDevice* TDEGlobalNetworkManager::findDeviceByUUID(TQString uuid) {
1091  if (!m_internalConnectionManager) return NULL;
1092  return m_internalConnectionManager->findDeviceByUUID(uuid);
1093 }
1094 
1095 TDENetworkWiFiAPInfo* 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.1
This website is maintained by Timothy Pearson.