tdenetworkconnections.h
00001 /* This file is part of the TDE libraries 00002 Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net> 00003 00004 This library is free software; you can redistribute it and/or 00005 modify it under the terms of the GNU Library General Public 00006 License version 2 as published by the Free Software Foundation. 00007 00008 This library is distributed in the hope that it will be useful, 00009 but WITHOUT ANY WARRANTY; without even the implied warranty of 00010 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00011 Library General Public License for more details. 00012 00013 You should have received a copy of the GNU Library General Public License 00014 along with this library; see the file COPYING.LIB. If not, write to 00015 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 00016 Boston, MA 02110-1301, USA. 00017 */ 00018 #ifndef _TDENETWORKCONNECTIONS_H 00019 #define _TDENETWORKCONNECTIONS_H 00020 00021 // TDE includes 00022 #include <tqobject.h> 00023 #include <tqstring.h> 00024 #include <tqptrlist.h> 00025 #include <tqdatetime.h> 00026 #include <tqstringlist.h> 00027 #include <tqhostaddress.h> 00028 #include "kiconloader.h" 00029 #include "tdelibs_export.h" 00030 00031 #define CREATE_FLAG_BITWISE_MANIPULATION_FUNCTIONS(x) \ 00032 inline x operator|(x a, x b) \ 00033 { \ 00034 return static_cast<x>(static_cast<int>(a) | static_cast<int>(b)); \ 00035 } \ 00036 \ 00037 inline x operator&(x a, x b) \ 00038 { \ 00039 return static_cast<x>(static_cast<int>(a) & static_cast<int>(b)); \ 00040 } \ 00041 \ 00042 inline x operator~(x a) \ 00043 { \ 00044 return static_cast<x>(~static_cast<int>(a)); \ 00045 } \ 00046 \ 00047 inline x &operator|=(x& a, const x& b) \ 00048 { \ 00049 a = static_cast<x>(static_cast<int>(a) | static_cast<int>(b)); \ 00050 return a; \ 00051 } \ 00052 \ 00053 inline x &operator&=(x& a, const x& b) \ 00054 { \ 00055 a = static_cast<x>(static_cast<int>(a) & static_cast<int>(b)); \ 00056 return a; \ 00057 } 00058 00059 class TDENetworkDevice; 00060 00061 typedef TQValueList<TQ_UINT8> TDENetworkByteList; 00062 typedef TQValueList<TQHostAddress> TDENetworkAddressList; 00063 typedef TQMap<TQString, TQString> TDENetworkSettingsMap; 00064 typedef TQMap<TQ_UINT32, TQ_UINT32> TDENetworkPriorityMap; 00065 00066 namespace TDENetworkDeviceType { 00067 enum TDENetworkDeviceType { 00068 BackendOnly, 00069 WiredEthernet, 00070 WiFi, 00071 Bluetooth, 00072 OLPCMesh, 00073 WiMax, 00074 Modem, 00075 Infiniband, 00076 Bond, 00077 VLAN, 00078 ADSL, 00079 Other, 00080 Last = Other 00081 }; 00082 }; 00083 00084 namespace TDENetworkConnectionType { 00085 enum TDENetworkConnectionType { 00086 WiredEthernet, 00087 WiFi, 00088 Bluetooth, 00089 OLPCMesh, 00090 WiMax, 00091 Modem, 00092 Infiniband, 00093 Bond, 00094 VLAN, 00095 ADSL, 00096 VPN, 00097 Other, 00098 Last = Other 00099 }; 00100 }; 00101 00102 namespace TDENetworkConnectionErrorFlags { 00103 enum TDENetworkConnectionErrorFlags { 00104 NoError = 0x00000000, 00105 InvalidConnectionSetting = 0x00000001, 00106 InvalidIPv4Setting = 0x00000002, 00107 InvalidIPv6Setting = 0x00000004, 00108 InvalidEAPSetting = 0x00000008, 00109 InvalidEAPKey = 0x00000010, 00110 InvalidWirelessSetting = 0x00000020, 00111 InvalidWirelessKey = 0x00000040 00112 }; 00113 00114 CREATE_FLAG_BITWISE_MANIPULATION_FUNCTIONS(TDENetworkConnectionErrorFlags) 00115 }; 00116 00117 typedef TQMap<TDENetworkConnectionErrorFlags::TDENetworkConnectionErrorFlags, TQString> TDENetworkErrorStringMap; 00118 00119 namespace TDENetworkInfinibandTransportMode { 00120 enum TDENetworkInfinibandTransportMode { 00121 Datagram, 00122 Connected, 00123 Other, 00124 Last = Other 00125 }; 00126 }; 00127 00128 namespace TDEWiFiMode { 00129 enum TDEWiFiMode { 00130 AdHoc, 00131 Infrastructure, 00132 Other, 00133 Last = Other 00134 }; 00135 }; 00136 00137 namespace TDEWiFiFrequencyBand { 00138 enum TDEWiFiFrequencyBand { 00139 None, 00140 Band2_4GHz, 00141 Band5GHz, 00142 Other, 00143 Last = Other 00144 }; 00145 }; 00146 00147 namespace TDEBluetoothConnectionType { 00148 enum TDEBluetoothConnectionType { 00149 DUN, 00150 PAN, 00151 Other, 00152 Last = Other 00153 }; 00154 }; 00155 00156 namespace TDEModemConnectionType { 00157 enum TDEModemConnectionType { 00158 CDMA, 00159 GSM, 00160 Other, 00161 Last = Other 00162 }; 00163 }; 00164 00165 namespace TDEGSMNetworkType { 00166 enum TDEGSMNetworkType { 00167 Any, 00168 Only3G, 00169 GPRSEdge, 00170 Prefer3G, 00171 Prefer2G, 00172 Other, 00173 Last = Other 00174 }; 00175 }; 00176 00177 namespace TDENetworkParity { 00178 enum TDENetworkParity { 00179 None, 00180 Even, 00181 Odd, 00182 Other, 00183 Last = Other 00184 }; 00185 }; 00186 00187 namespace TDENetworkSlaveDeviceType { 00188 enum TDENetworkSlaveDeviceType { 00189 None, 00190 Bond, 00191 Other, 00192 Last = Other 00193 }; 00194 }; 00195 00196 namespace TDENetworkGlobalEventType { 00197 enum TDENetworkGlobalEventType { 00198 ConnectionListChanged, 00199 Other, 00200 Last = Other 00201 }; 00202 }; 00203 00204 namespace TDENetworkVPNEventType { 00205 enum TDENetworkVPNEventType { 00206 LoginBanner, 00207 Failure, 00208 Other, 00209 Last = Other 00210 }; 00211 }; 00212 00213 namespace TDENetworkDeviceEventType { 00214 enum TDENetworkDeviceEventType { 00215 BitRateChanged, 00216 Failure, 00217 Other, 00218 Last = Other 00219 }; 00220 }; 00221 00222 namespace TDENetworkAPEventType { 00223 enum TDENetworkAPEventType { 00224 Discovered, 00225 Lost, 00226 SignalStrengthChanged, 00227 AccessPointChanged, 00228 Other, 00229 Last = Other 00230 }; 00231 }; 00232 00233 namespace TDENetworkGlobalManagerFlags { 00234 enum TDENetworkGlobalManagerFlags { 00235 Unknown = 0x00000000, 00236 Disconnected = 0x00000001, 00237 Connected = 0x00000002, 00238 EstablishingLink = 0x00000004, 00239 DeactivatingLink = 0x00000008, 00240 LinkLocalAccess = 0x00000010, 00241 SiteLocalAccess = 0x00000020, 00242 GlobalAccess = 0x00000040, 00243 Sleeping = 0x00000080, 00244 BackendUnavailable = 0x00000100, 00245 VPNUnknown = 0x00000200, 00246 VPNEstablishingLink = 0x00000400, 00247 VPNNeedAuthorization = 0x00000800, 00248 VPNConfiguringProtocols = 0x00001000, 00249 VPNVerifyingProtocols = 0x00002000, 00250 VPNConnected = 0x00004000, 00251 VPNFailed = 0x00008000, 00252 VPNDisconnected = 0x00010000, 00253 GlobalMask = 0x000001ff, 00254 VPNMask = 0x0001fe00 00255 }; 00256 00257 CREATE_FLAG_BITWISE_MANIPULATION_FUNCTIONS(TDENetworkGlobalManagerFlags) 00258 }; 00259 00260 namespace TDENetworkDeviceCapabilityFlags { 00261 enum TDENetworkDeviceCapabilityFlags { 00262 None = 0x00000000, 00263 Supported = 0x00000001, 00264 CanDetectLink = 0x00000002 00265 }; 00266 00267 CREATE_FLAG_BITWISE_MANIPULATION_FUNCTIONS(TDENetworkDeviceCapabilityFlags) 00268 }; 00269 00270 namespace TDENetworkPPPFlags { 00271 enum TDENetworkPPPFlags { 00272 None = 0x00000000, 00273 DisableEAP = 0x00000001, 00274 DisablePAP = 0x00000002, 00275 DisableCHAP = 0x00000004, 00276 DisableMSCHAP = 0x00000008, 00277 DisableMSCHAPv2 = 0x00000010, 00278 AllowBSDCompression = 0x00000020, 00279 AllowDeflateCompression = 0x00000040, 00280 AllowVJCompression = 0x00000080, 00281 RequireMPPE = 0x00000100, 00282 RequireMPPE128 = 0x00000200, 00283 StatefulMPPE = 0x00000400, 00284 UseHardwareFlowControl = 0x00000800 00285 }; 00286 00287 CREATE_FLAG_BITWISE_MANIPULATION_FUNCTIONS(TDENetworkPPPFlags) 00288 }; 00289 00290 namespace TDENetworkWiFiAPFlags { 00291 enum TDENetworkWiFiAPFlags { 00292 None = 0x00000000, 00293 PrivacySupport = 0x00000001, 00294 PairWEP40 = 0x00000002, 00295 PairWEP104 = 0x00000004, 00296 PairTKIP = 0x00000008, 00297 PairCCMP = 0x00000010, 00298 GroupWEP40 = 0x00000020, 00299 GroupWEP104 = 0x00000040, 00300 GroupTKIP = 0x00000080, 00301 GroupCCMP = 0x00000100, 00302 KeyManagementPSK = 0x00000200, 00303 KeyManagement80211 = 0x00000400, 00304 GeneralFlagsMask = 0x00000001, 00305 EncryptionFlagsMask = 0xfffffffe 00306 }; 00307 00308 CREATE_FLAG_BITWISE_MANIPULATION_FUNCTIONS(TDENetworkWiFiAPFlags) 00309 }; 00310 00311 namespace TDENetworkWiFiClientFlags { 00312 enum TDENetworkWiFiClientFlags { 00313 None = 0x00000000, 00314 CipherWEP40 = 0x00000002, 00315 CipherWEP104 = 0x00000004, 00316 CipherTKIP = 0x00000008, 00317 CipherCCMP = 0x00000010, 00318 CipherWPA = 0x00000020, 00319 CipherRSN = 0x00000040 00320 }; 00321 00322 CREATE_FLAG_BITWISE_MANIPULATION_FUNCTIONS(TDENetworkWiFiClientFlags) 00323 }; 00324 00325 namespace TDENetworkVPNType { 00326 enum TDENetworkVPNType { 00327 OpenVPN, 00328 PPTP, 00329 StrongSwan, 00330 VPNC, 00331 Other, 00332 Last = Other 00333 }; 00334 }; 00335 00336 typedef TQValueList<TDENetworkVPNType::TDENetworkVPNType> TDENetworkVPNTypeList; 00337 00338 namespace TDENetworkWiFiConnectionCipher { 00339 enum TDENetworkWiFiConnectionCipher { 00340 None, 00341 CipherWEP40, 00342 CipherWEP104, 00343 CipherTKIP, 00344 CipherCCMP, 00345 CipherWPA, 00346 CipherRSN, 00347 Any 00348 }; 00349 }; 00350 00351 typedef TQValueList<TDENetworkWiFiConnectionCipher::TDENetworkWiFiConnectionCipher> TDENetworkWiFiConnectionCipherList; 00352 00353 namespace TDENetworkWepKeyType { 00354 enum TDENetworkWepKeyType { 00355 Hexadecimal, 00356 Ascii, 00357 Passphrase 00358 }; 00359 }; 00360 00361 namespace TDENetworkVLANFlags { 00362 enum TDENetworkVLANFlags { 00363 None = 0x00000000, 00364 ReorderPacketHeaders = 0x00000001, 00365 UseGVRP = 0x00000002, 00366 LooseBinding = 0x00000004 00367 }; 00368 00369 CREATE_FLAG_BITWISE_MANIPULATION_FUNCTIONS(TDENetworkVLANFlags) 00370 }; 00371 00372 namespace TDENetworkWiFiKeyType { 00373 enum TDENetworkWiFiKeyType { 00374 WEP, 00375 DynamicWEP, 00376 WPAAdHoc, 00377 WPAInfrastructure, 00378 WPAEnterprise, 00379 Other, 00380 Last = Other 00381 }; 00382 }; 00383 00384 namespace TDENetworkWiFiAuthType { 00385 enum TDENetworkWiFiAuthType { 00386 Open, 00387 Shared, 00388 LEAP, 00389 Other, 00390 Last = Other 00391 }; 00392 }; 00393 00394 namespace TDENetworkIEEE8021xType { 00395 enum TDENetworkIEEE8021xType { 00396 None, 00397 LEAP, 00398 MD5, 00399 PAP, 00400 CHAP, 00401 MSCHAP, 00402 MSCHAPV2, 00403 Fast, 00404 PSK, 00405 PAX, 00406 SAKE, 00407 GPSK, 00408 TLS, 00409 PEAP, 00410 TTLS, 00411 SIM, 00412 GTC, 00413 OTP 00414 }; 00415 }; 00416 00417 typedef TQValueList<TDENetworkIEEE8021xType::TDENetworkIEEE8021xType> TDENetworkIEEE8021xTypeList; 00418 00419 namespace TDENetworkIEEE8021xFastFlags { 00420 enum TDENetworkIEEE8021xFastFlags { 00421 None = 0x00000000, 00422 AllowUnauthenticated = 0x00000001, 00423 AllowAuthenticated = 0x00000002 00424 }; 00425 00426 CREATE_FLAG_BITWISE_MANIPULATION_FUNCTIONS(TDENetworkIEEE8021xFastFlags) 00427 }; 00428 00429 namespace TDENetworkWiFiWPAVersionFlags { 00430 enum TDENetworkWiFiWPAVersionFlags { 00431 None = 0x00000000, 00432 WPA = 0x00000001, 00433 RSN = 0x00000002, 00434 Any = 0x00000003 00435 }; 00436 00437 CREATE_FLAG_BITWISE_MANIPULATION_FUNCTIONS(TDENetworkWiFiWPAVersionFlags) 00438 }; 00439 00440 namespace TDENetworkPasswordHandlingFlags { 00441 enum TDENetworkPasswordHandlingFlags { 00442 None = 0x00000000, 00443 NoSave = 0x00000001, 00444 NoPrompt = 0x00000002, 00445 ExternalStorage = 0x00000004 00446 }; 00447 00448 CREATE_FLAG_BITWISE_MANIPULATION_FUNCTIONS(TDENetworkPasswordHandlingFlags) 00449 }; 00450 00451 namespace TDENetworkConnectionStatus { 00452 enum TDENetworkConnectionStatus { 00453 None = 0x00000000, 00454 Invalid = 0x00000001, 00455 Disconnected = 0x00000002, 00456 Connected = 0x00000004, 00457 LinkUnavailable = 0x00000008, 00458 EstablishingLink = 0x00000010, 00459 DeactivatingLink = 0x00000020, 00460 ConfiguringProtocols = 0x00000040, 00461 Reconnecting = 0x00000080, 00462 LinkLost = 0x00000100, 00463 LinkLocalAccess = 0x00000200, 00464 SiteLocalAccess = 0x00000400, 00465 GlobalAccess = 0x00000800, 00466 UnManaged = 0x00001000, 00467 NeedAuthorization = 0x00002000, 00468 Failed = 0x00004000, 00469 VerifyingProtocols = 0x00008000, 00470 DependencyWait = 0x00010000 00471 }; 00472 00473 CREATE_FLAG_BITWISE_MANIPULATION_FUNCTIONS(TDENetworkConnectionStatus) 00474 }; 00475 00476 namespace TDENetworkIPConfigurationFlags { 00477 enum TDENetworkIPConfigurationFlags { 00478 None = 0x00000000, 00479 IPV4DHCPIP = 0x00000001, 00480 IPV4DHCPDNS = 0x00000002, 00481 IPV4DHCPRoutes = 0x00000004, 00482 IPV4LocalOnly = 0x00000008, 00483 IPV4StartConnectionSharingServer = 0x00000010, 00484 IPV4Disabled = 0x00000020, 00485 IPV4MayUseAsDefaultRoute = 0x00000040, 00486 IPV6DHCPIP = 0x00000080, 00487 IPV6DHCPDNS = 0x00000100, 00488 IPV6DHCPRoutes = 0x00000200, 00489 IPV6LocalOnly = 0x00000400, 00490 IPV6StartConnectionSharingServer = 0x00000800, 00491 IPV6Disabled = 0x00001000, 00492 IPV6MayUseAsDefaultRoute = 0x00002000 00493 }; 00494 00495 CREATE_FLAG_BITWISE_MANIPULATION_FUNCTIONS(TDENetworkIPConfigurationFlags) 00496 }; 00497 00498 class TDECORE_EXPORT TDENetworkSearchDomain 00499 { 00500 public: 00501 TDENetworkSearchDomain(); 00502 TDENetworkSearchDomain(TQString domain, bool ipv6=false); 00503 ~TDENetworkSearchDomain(); 00504 00505 TQString searchDomain(); 00506 void setSearchDomain(TQString domain, bool ipv6=false); 00507 00508 bool isIPv4(); 00509 bool isIPv6(); 00510 00511 private: 00512 TQString m_domain; 00513 bool m_isIPV6; 00514 }; 00515 00516 typedef TQValueList<TDENetworkSearchDomain> TDENetworkSearchDomainList; 00517 00518 class TDECORE_EXPORT TDENetMask 00519 { 00520 public: 00521 TDENetMask(); 00522 TDENetMask(TQ_UINT32 netmask); 00523 TDENetMask(TQ_UINT8* netmask); 00524 ~TDENetMask(); 00525 00526 void fromCIDRMask(unsigned char mask, bool ipv6=false); 00527 unsigned char toCIDRMask(); 00528 void fromString(TQString mask); 00529 TQString toString(); 00530 00531 bool isIPv4(); 00532 bool isIPv6(); 00533 00534 private: 00535 TQ_UINT32 m_ipv4NetMask; 00536 TQHostAddress m_ipv6NetMask; 00537 bool m_isIPV6; 00538 }; 00539 00540 class TDECORE_EXPORT TDEMACAddress 00541 { 00542 public: 00543 TDEMACAddress(); 00544 TDEMACAddress(TDENetworkByteList address); 00545 ~TDEMACAddress(); 00546 00547 TDENetworkByteList address(); 00548 void setAddress(TDENetworkByteList address); 00549 TQString toString(); 00550 void fromString(TQString address); 00551 bool isValid(); 00552 00553 private: 00554 bool m_isValid; 00555 TDENetworkByteList m_macAddress; 00556 00557 friend bool operator==(const TDEMACAddress &a1, const TDEMACAddress &a2); 00558 friend bool operator<(const TDEMACAddress &a1, const TDEMACAddress &a2); 00559 }; 00560 00561 TDECORE_EXPORT bool operator==(const TDEMACAddress &a1, const TDEMACAddress &a2); 00562 TDECORE_EXPORT bool operator<(const TDEMACAddress &a1, const TDEMACAddress &a2); 00563 00564 typedef TQValueList<TDEMACAddress> TDEMACAddressList; 00565 00566 class TDECORE_EXPORT TDENetworkSingleIPConfiguration 00567 { 00568 public: 00569 TDENetworkSingleIPConfiguration(); 00570 ~TDENetworkSingleIPConfiguration(); 00571 00572 bool isIPv4(); 00573 bool isIPv6(); 00574 00575 public: 00576 bool valid; 00577 TQHostAddress ipAddress; 00578 TDENetMask networkMask; 00579 TQHostAddress gateway; 00580 }; 00581 00582 typedef TQValueList<TDENetworkSingleIPConfiguration> TDENetworkSingleIPConfigurationList; 00583 00584 class TDECORE_EXPORT TDENetworkSingleRouteConfiguration 00585 { 00586 public: 00587 TDENetworkSingleRouteConfiguration(); 00588 ~TDENetworkSingleRouteConfiguration(); 00589 00590 bool isIPv4(); 00591 bool isIPv6(); 00592 00593 public: 00594 bool valid; 00595 TQHostAddress ipAddress; 00596 TDENetMask networkMask; 00597 TQHostAddress gateway; 00598 TQ_UINT32 metric; 00599 }; 00600 00601 typedef TQValueList<TDENetworkSingleRouteConfiguration> TDENetworkSingleRouteConfigurationList; 00602 00603 class TDECORE_EXPORT TDENetworkIEEE8021xConfiguration 00604 { 00605 public: 00606 TDENetworkIEEE8021xConfiguration(); 00607 ~TDENetworkIEEE8021xConfiguration(); 00608 00609 public: 00610 bool valid; 00611 bool allowedValid; 00612 bool secretsValid; 00613 TDENetworkIEEE8021xType::TDENetworkIEEE8021xType type; 00614 TQString userName; 00615 TQString anonymousUserName; 00616 TQString pacFileName; 00617 TQByteArray caCertificate; 00618 TQString additionalCAFilesPath; 00619 TQString authServerCertSubjectMatch; 00620 TQStringList alternateAuthServerCertSubjectMatch; 00621 TQByteArray clientCertificate; 00622 TQString forcePEAPVersion; 00623 TQString forcePEAPLabel; 00624 TDENetworkIEEE8021xFastFlags::TDENetworkIEEE8021xFastFlags fastProvisioningFlags; 00625 TDENetworkIEEE8021xType::TDENetworkIEEE8021xType phase2NonEAPAuthMethod; 00626 TDENetworkIEEE8021xType::TDENetworkIEEE8021xType phase2EAPAuthMethod; 00627 TDENetworkIEEE8021xTypeList allowedPhase2NonEAPMethods; 00628 TDENetworkIEEE8021xTypeList allowedPhase2EAPMethods; 00629 TQByteArray phase2CaCertificate; 00630 TQString phase2CaFilesPath; 00631 TQString phase2AuthServerCertSubjectMatch; 00632 TQStringList phase2AlternateAuthServerCertSubjectMatch; 00633 TQByteArray phase2ClientCertificate; 00634 TQString password; 00635 TDENetworkPasswordHandlingFlags::TDENetworkPasswordHandlingFlags passwordFlags; 00636 TQByteArray binaryPassword; 00637 TDENetworkPasswordHandlingFlags::TDENetworkPasswordHandlingFlags binaryPasswordFlags; 00638 TQByteArray privateKey; 00639 TQString privateKeyPassword; 00640 TDENetworkPasswordHandlingFlags::TDENetworkPasswordHandlingFlags privateKeyPasswordFlags; 00641 TQByteArray phase2PrivateKey; 00642 TQString phase2PrivateKeyPassword; 00643 TDENetworkPasswordHandlingFlags::TDENetworkPasswordHandlingFlags phase2PrivateKeyPasswordFlags; 00644 bool forceSystemCaCertificates; 00645 }; 00646 00647 class TDECORE_EXPORT TDENetworkPPPConfiguration 00648 { 00649 public: 00650 TDENetworkPPPConfiguration(); 00651 virtual ~TDENetworkPPPConfiguration(); 00652 00653 public: 00654 bool valid; 00655 bool requireServerAuthentication; 00656 TDENetworkPPPFlags::TDENetworkPPPFlags flags; 00657 TQ_UINT32 baudRate; 00658 TQ_UINT32 mru; 00659 TQ_UINT32 mtu; 00660 TQ_UINT32 lcpEchoPingInterval; 00661 TQ_UINT32 lcpEchoFailureThreshold; 00662 }; 00663 00664 class TDECORE_EXPORT TDENetworkPPPOEConfiguration 00665 { 00666 public: 00667 TDENetworkPPPOEConfiguration(); 00668 virtual ~TDENetworkPPPOEConfiguration(); 00669 00670 public: 00671 bool valid; 00672 bool secretsValid; 00673 TQString networkServiceProvider; 00674 TQString username; 00675 TQString password; 00676 TDENetworkPasswordHandlingFlags::TDENetworkPasswordHandlingFlags passwordFlags; 00677 }; 00678 00679 class TDECORE_EXPORT TDENetworkSerialConfiguration 00680 { 00681 public: 00682 TDENetworkSerialConfiguration(); 00683 virtual ~TDENetworkSerialConfiguration(); 00684 00685 public: 00686 bool valid; 00687 TQ_UINT32 baudRate; 00688 TQ_UINT32 byteWidth; 00689 TDENetworkParity::TDENetworkParity parity; 00690 TQ_UINT32 stopBits; 00691 TQ_UINT64 txDelay; 00692 }; 00693 00694 class TDECORE_EXPORT TDENetworkCDMAConfiguration 00695 { 00696 public: 00697 TDENetworkCDMAConfiguration(); 00698 virtual ~TDENetworkCDMAConfiguration(); 00699 00700 public: 00701 bool valid; 00702 bool secretsValid; 00703 TQString providerDataNumber; 00704 TQString username; 00705 TQString password; 00706 TDENetworkPasswordHandlingFlags::TDENetworkPasswordHandlingFlags passwordFlags; 00707 }; 00708 00709 class TDECORE_EXPORT TDENetworkGSMConfiguration 00710 { 00711 public: 00712 TDENetworkGSMConfiguration(); 00713 virtual ~TDENetworkGSMConfiguration(); 00714 00715 public: 00716 bool valid; 00717 bool secretsValid; 00718 TQString providerDataNumber; 00719 TQString username; 00720 TQString password; 00721 TDENetworkPasswordHandlingFlags::TDENetworkPasswordHandlingFlags passwordFlags; 00722 TQString accessPointName; 00723 TQString networkID; 00724 TDEGSMNetworkType::TDEGSMNetworkType networkType; 00725 TQString pin; 00726 TDENetworkPasswordHandlingFlags::TDENetworkPasswordHandlingFlags pinFlags; 00727 TQ_UINT32 allowedFrequencyBands; 00728 bool allowRoaming; 00729 }; 00730 00731 00732 class TDENetworkWiFiSecurityConfiguration 00733 { 00734 public: 00735 TDENetworkWiFiSecurityConfiguration(); 00736 ~TDENetworkWiFiSecurityConfiguration(); 00737 00738 public: 00739 bool valid; 00740 bool secretsValid; 00741 TDENetworkWiFiKeyType::TDENetworkWiFiKeyType keyType; 00742 TDENetworkWiFiAuthType::TDENetworkWiFiAuthType authType; 00743 TDENetworkWiFiWPAVersionFlags::TDENetworkWiFiWPAVersionFlags wpaVersion; 00744 TDENetworkWiFiConnectionCipher::TDENetworkWiFiConnectionCipher cipher; 00745 TQString wepKey0; 00746 TQString wepKey1; 00747 TQString wepKey2; 00748 TQString wepKey3; 00749 TDENetworkPasswordHandlingFlags::TDENetworkPasswordHandlingFlags wepKeyFlags; 00750 TQ_UINT32 wepKeyIndex; 00751 TDENetworkWepKeyType::TDENetworkWepKeyType wepKeyType; 00752 TDENetworkWiFiConnectionCipherList allowedPairWiseCiphers; 00753 TDENetworkWiFiConnectionCipherList allowedGroupWiseCiphers; 00754 TQString psk; 00755 TDENetworkPasswordHandlingFlags::TDENetworkPasswordHandlingFlags pskFlags; 00756 TQString leapUsername; 00757 TQString leapPassword; 00758 TDENetworkPasswordHandlingFlags::TDENetworkPasswordHandlingFlags leapPasswordFlags; 00759 }; 00760 00761 class TDECORE_EXPORT TDENetworkIPConfiguration 00762 { 00763 public: 00764 TDENetworkIPConfiguration(); 00765 ~TDENetworkIPConfiguration(); 00766 00767 public: 00768 bool valid; 00769 TDENetworkIPConfigurationFlags::TDENetworkIPConfigurationFlags connectionFlags; 00770 TDENetworkSingleIPConfigurationList ipConfigurations; 00771 TDENetworkSingleRouteConfigurationList routeConfigurations; 00772 TQHostAddress broadcast; 00773 TQHostAddress destination; 00774 TDENetworkAddressList resolvers; 00775 TDENetworkSearchDomainList searchDomains; 00776 TQString dhcpClientIdentifier; 00777 }; 00778 00779 class TDECORE_EXPORT TDENetworkWiFiDeviceInfo 00780 { 00781 public: 00782 TDENetworkWiFiDeviceInfo(); 00783 ~TDENetworkWiFiDeviceInfo(); 00784 00785 public: 00786 bool valid; 00787 TDEMACAddress hwAddress; 00788 TDEMACAddress permanentHWAddress; 00789 TDEWiFiMode::TDEWiFiMode operatingMode; 00790 unsigned int bitrate; 00791 TDEMACAddress activeAccessPointBSSID; 00792 TDENetworkWiFiClientFlags::TDENetworkWiFiClientFlags wirelessFlags; 00793 }; 00794 00795 class TDECORE_EXPORT TDENetworkDeviceInformation 00796 { 00797 public: 00798 TDENetworkDeviceInformation(); 00799 ~TDENetworkDeviceInformation(); 00800 00801 public: 00802 bool valid; 00803 TDENetworkConnectionStatus::TDENetworkConnectionStatus statusFlags; 00804 TQString UUID; 00805 TQString backendDriver; 00806 TQString backendDriverVersion; 00807 TQString firmwareVersion; 00808 TDENetworkDeviceCapabilityFlags::TDENetworkDeviceCapabilityFlags capabilityFlags; 00809 TDENetworkIPConfiguration ipConfiguration; 00810 bool managed; 00811 bool autoConnect; 00812 bool firmwareMissing; 00813 TDENetworkDeviceType::TDENetworkDeviceType deviceType; 00814 TQString activeConnectionUUID; 00815 TDENetworkWiFiDeviceInfo wiFiInfo; 00816 }; 00817 00818 class TDECORE_EXPORT TDENetworkHWNeighbor 00819 { 00820 public: 00821 TDENetworkHWNeighbor(); 00822 virtual ~TDENetworkHWNeighbor(); 00823 00824 public: 00825 bool valid; 00826 }; 00827 00828 class TDECORE_EXPORT TDENetworkWiFiAPInfo : public TDENetworkHWNeighbor 00829 { 00830 public: 00831 TDENetworkWiFiAPInfo(); 00832 virtual ~TDENetworkWiFiAPInfo(); 00833 00834 public: 00835 TQString friendlySSID() const; 00836 00837 public: 00838 TQByteArray SSID; 00839 TDENetworkWiFiAPFlags::TDENetworkWiFiAPFlags wpaFlags; 00840 TDENetworkWiFiAPFlags::TDENetworkWiFiAPFlags rsnFlags; 00841 unsigned int frequency; 00842 TDEMACAddress BSSID; 00843 unsigned int maxBitrate; 00844 double signalQuality; 00845 }; 00846 00847 typedef TQPtrList< TDENetworkHWNeighbor > TDENetworkHWNeighborList; 00848 00849 class TDECORE_EXPORT TDENetworkConnection 00850 { 00851 public: 00852 TDENetworkConnection(); 00853 virtual ~TDENetworkConnection(); 00854 00855 public: 00856 TDENetworkConnectionType::TDENetworkConnectionType type(); 00857 00858 public: 00859 TQString UUID; 00860 TQString friendlyName; 00861 TDENetworkIPConfiguration ipConfig; 00862 TDEMACAddress lockedHWAddress; 00863 TDEMACAddress manualHWAddress; 00864 bool readOnly; 00865 bool autoConnect; 00866 bool fullDuplex; 00867 bool requireIPV4; 00868 bool requireIPV6; 00869 TQ_UINT32 mtu; 00870 TDENetworkIEEE8021xConfiguration eapConfig; 00871 TDENetworkPPPConfiguration pppConfig; 00872 TDENetworkPPPOEConfiguration pppoeConfig; 00873 TDENetworkSerialConfiguration serialConfig; 00874 TQStringList authorizedUsers; 00875 TQString masterConnectionUUID; 00876 TDENetworkSlaveDeviceType::TDENetworkSlaveDeviceType slaveType; 00877 TQDateTime lastKnownConnection; 00878 }; 00879 00880 class TDECORE_EXPORT TDEWiredEthernetConnection : public TDENetworkConnection 00881 { 00882 public: 00883 TDEWiredEthernetConnection(); 00884 virtual ~TDEWiredEthernetConnection(); 00885 }; 00886 00887 class TDECORE_EXPORT TDEWiFiConnection : public TDENetworkConnection 00888 { 00889 public: 00890 TDEWiFiConnection(); 00891 virtual ~TDEWiFiConnection(); 00892 00893 public: 00894 TQByteArray SSID; 00895 TDEWiFiMode::TDEWiFiMode operatingMode; 00896 TDEWiFiFrequencyBand::TDEWiFiFrequencyBand bandRestriction; 00897 TQ_INT32 channelRestriction; 00898 TQ_INT32 bitRateRestriction; 00899 TQ_INT32 powerRestriction; 00900 TDEMACAddress accessPointRestriction; 00901 TDEMACAddressList blacklistedBSSIDs; 00902 TDEMACAddressList heardBSSIDs; 00903 bool isHiddenNetwork; 00904 bool securityRequired; 00905 TDENetworkWiFiSecurityConfiguration securitySettings; 00906 }; 00907 00908 class TDECORE_EXPORT TDEWiredInfinibandConnection : public TDENetworkConnection 00909 { 00910 public: 00911 TDEWiredInfinibandConnection(); 00912 virtual ~TDEWiredInfinibandConnection(); 00913 00914 public: 00915 TDENetworkInfinibandTransportMode::TDENetworkInfinibandTransportMode transportMode; 00916 }; 00917 00918 class TDECORE_EXPORT TDEVPNConnection : public TDENetworkConnection 00919 { 00920 public: 00921 TDEVPNConnection(); 00922 virtual ~TDEVPNConnection(); 00923 00924 public: 00925 TQString vpnPluginID; 00926 TQString lockedUserName; 00927 TDENetworkSettingsMap pluginData; 00928 bool secretsValid; 00929 TDENetworkSettingsMap pluginSecrets; 00930 }; 00931 00932 class TDECORE_EXPORT TDEWiMaxConnection : public TDENetworkConnection 00933 { 00934 public: 00935 TDEWiMaxConnection(); 00936 virtual ~TDEWiMaxConnection(); 00937 00938 public: 00939 TQString networkServiceProvider; 00940 }; 00941 00942 class TDECORE_EXPORT TDEVLANConnection : public TDENetworkConnection 00943 { 00944 public: 00945 TDEVLANConnection(); 00946 virtual ~TDEVLANConnection(); 00947 00948 public: 00949 TQString kernelName; 00950 TQString parentConnectionUUID; 00951 TQ_UINT32 vlanID; 00952 TDENetworkVLANFlags::TDENetworkVLANFlags vlanFlags; 00953 TDENetworkPriorityMap ingressPriorityMap; 00954 TDENetworkPriorityMap egressPriorityMap; 00955 }; 00956 00957 class TDECORE_EXPORT TDEOLPCMeshConnection : public TDENetworkConnection 00958 { 00959 public: 00960 TDEOLPCMeshConnection(); 00961 virtual ~TDEOLPCMeshConnection(); 00962 00963 public: 00964 TQByteArray SSID; 00965 TQ_INT32 channel; 00966 TQByteArray anycastDHCPHWAddress; 00967 }; 00968 00969 class TDECORE_EXPORT TDEBluetoothConnection : public TDENetworkConnection 00970 { 00971 public: 00972 TDEBluetoothConnection(); 00973 virtual ~TDEBluetoothConnection(); 00974 00975 public: 00976 TDEBluetoothConnectionType::TDEBluetoothConnectionType type; 00977 }; 00978 00979 class TDECORE_EXPORT TDEModemConnection : public TDENetworkConnection 00980 { 00981 public: 00982 TDEModemConnection(); 00983 virtual ~TDEModemConnection(); 00984 00985 public: 00986 TDEModemConnectionType::TDEModemConnectionType type; 00987 TDENetworkCDMAConfiguration cdmaConfig; 00988 TDENetworkGSMConfiguration gsmConfig; 00989 }; 00990 00991 typedef TQPtrList< TDENetworkConnection > TDENetworkConnectionList; 00992 00996 class TDENetworkEventQueueEvent_Private 00997 { 00998 public: 00999 int eventType; 01000 TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags newState; 01001 TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags previousState; 01002 TDENetworkConnectionStatus::TDENetworkConnectionStatus newConnStatus; 01003 TDENetworkConnectionStatus::TDENetworkConnectionStatus previousConnStatus; 01004 TDEMACAddress BSSID; 01005 TQString message; 01006 TQString deviceNode; 01007 TDENetworkAPEventType::TDENetworkAPEventType apevent; 01008 TDENetworkDeviceEventType::TDENetworkDeviceEventType ndevent; 01009 TDENetworkVPNEventType::TDENetworkVPNEventType vpnevent; 01010 TDENetworkGlobalEventType::TDENetworkGlobalEventType globalevent; 01011 }; 01012 typedef TQValueList<TDENetworkEventQueueEvent_Private> TDENetworkEventQueueEvent_PrivateList; 01013 01014 class TQTimer; 01015 01016 class TDECORE_EXPORT TDENetworkConnectionManager : public TQObject 01017 { 01018 Q_OBJECT 01019 01020 public: 01027 TDENetworkConnectionManager(TDENetworkDevice *networkDevice); 01028 01032 ~TDENetworkConnectionManager(); 01033 01037 virtual TQString backendName() = 0; 01038 01042 virtual TDENetworkDeviceType::TDENetworkDeviceType deviceType() = 0; 01043 01047 virtual TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags backendStatus() = 0; 01048 01052 virtual TDENetworkDeviceInformation deviceInformation() = 0; 01053 01062 virtual TDENetworkDeviceInformation deviceStatus() = 0; 01063 01070 virtual void loadConnectionInformation() = 0; 01071 01078 virtual void loadConnectionAllowedValues(TDENetworkConnection* connection) = 0; 01079 01085 virtual bool loadConnectionSecrets(TQString uuid) = 0; 01086 01092 virtual bool saveConnection(TDENetworkConnection* connection) = 0; 01093 01099 virtual bool deleteConnection(TQString uuid) = 0; 01100 01110 virtual bool verifyConnectionSettings(TDENetworkConnection* connection, TDENetworkConnectionErrorFlags::TDENetworkConnectionErrorFlags* type=NULL, TDENetworkErrorStringMap* reason=NULL) = 0; 01111 01119 virtual TDENetworkConnectionStatus::TDENetworkConnectionStatus initiateConnection(TQString uuid) = 0; 01120 01125 virtual TDENetworkConnectionStatus::TDENetworkConnectionStatus checkConnectionStatus(TQString uuid) = 0; 01126 01132 virtual TDENetworkConnectionStatus::TDENetworkConnectionStatus deactivateConnection(TQString uuid) = 0; 01133 01139 virtual TQStringList validSettings() = 0; 01140 01150 virtual TDENetworkHWNeighborList* siteSurvey() = 0; 01151 01158 virtual TQStringList connectionPhysicalDeviceUUIDs(TQString uuid) = 0; 01159 01164 virtual TDENetworkVPNTypeList availableVPNTypes() = 0; 01165 01169 virtual bool networkingEnabled() = 0; 01170 01175 virtual bool enableNetworking(bool enable) = 0; 01176 01180 virtual bool wiFiHardwareEnabled() = 0; 01181 01186 virtual bool enableWiFi(bool enable) = 0; 01187 01191 virtual bool wiFiEnabled() = 0; 01192 01197 virtual TQStringList defaultNetworkDevices() = 0; 01198 01199 signals: 01204 void networkConnectionStateChanged(TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags newState, TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags previousState); 01205 01212 void networkDeviceStateChanged(TDENetworkConnectionStatus::TDENetworkConnectionStatus newState, TDENetworkConnectionStatus::TDENetworkConnectionStatus previousState, TQString deviceNode); 01213 01218 void accessPointStatusChanged(TDEMACAddress BSSID, TDENetworkAPEventType::TDENetworkAPEventType event); 01219 01225 void networkDeviceEvent(TDENetworkDeviceEventType::TDENetworkDeviceEventType event, TQString message); 01226 01232 void vpnEvent(TDENetworkVPNEventType::TDENetworkVPNEventType event, TQString message); 01233 01238 void networkManagementEvent(TDENetworkGlobalEventType::TDENetworkGlobalEventType event); 01239 01240 public: 01254 virtual TDENetworkConnectionList* connections(); 01255 01259 TQString deviceNode(); 01260 01264 TQString deviceMACAddress(); 01265 01272 TDENetworkConnection* findConnectionByUUID(TQString uuid); 01273 01280 TDENetworkDevice* findDeviceByUUID(TQString uuid); 01281 01288 TDENetworkWiFiAPInfo* findAccessPointByBSSID(TDEMACAddress bssid); 01289 01293 static TQString friendlyConnectionTypeName(TDENetworkConnectionType::TDENetworkConnectionType type); 01294 01298 static bool validateIPAddress(TQHostAddress address); 01299 01303 static bool validateIPNeworkMask(TQHostAddress netmask); 01304 01305 protected: 01309 void clearTDENetworkConnectionList(); 01310 01314 void clearTDENetworkHWNeighborList(); 01315 01320 void internalNetworkConnectionStateChanged(TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags newState); 01321 01326 void internalNetworkDeviceStateChanged(TDENetworkConnectionStatus::TDENetworkConnectionStatus newState, TQString deviceNode=TQString::null); 01327 01332 void internalAccessPointStatusChanged(TDEMACAddress BSSID, TDENetworkAPEventType::TDENetworkAPEventType event); 01333 01338 void internalNetworkDeviceEvent(TDENetworkDeviceEventType::TDENetworkDeviceEventType event, TQString message); 01339 01344 void internalVpnEvent(TDENetworkVPNEventType::TDENetworkVPNEventType event, TQString message); 01345 01350 void internalNetworkManagementEvent(TDENetworkGlobalEventType::TDENetworkGlobalEventType event); 01351 01352 protected slots: 01353 void emitQueuedSignals(); 01354 01355 protected: 01356 TDENetworkConnectionList* m_connectionList; 01357 TDENetworkHWNeighborList* m_hwNeighborList; 01358 TDENetworkDevice* m_networkDevice; 01359 TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags m_prevConnectionStatus; 01360 TQMap<TQString, TDENetworkConnectionStatus::TDENetworkConnectionStatus> m_prevDeviceStatus; 01361 TQTimer* m_emissionTimer; 01362 TDENetworkEventQueueEvent_PrivateList m_globalEventQueueEventList; 01363 }; 01364 01365 class TDECORE_EXPORT TDEGlobalNetworkManager : public TQObject 01366 { 01367 Q_OBJECT 01368 01369 public: 01373 TDEGlobalNetworkManager(); 01374 01378 ~TDEGlobalNetworkManager(); 01379 01383 virtual TQString backendName(); 01384 01388 virtual TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags backendStatus(); 01389 01396 virtual void loadConnectionInformation(); 01397 01404 virtual void loadConnectionAllowedValues(TDENetworkConnection* connection); 01405 01411 virtual bool loadConnectionSecrets(TQString uuid); 01412 01418 virtual bool saveConnection(TDENetworkConnection* connection); 01419 01425 virtual bool deleteConnection(TQString uuid); 01426 01436 virtual bool verifyConnectionSettings(TDENetworkConnection* connection, TDENetworkConnectionErrorFlags::TDENetworkConnectionErrorFlags* type=NULL, TDENetworkErrorStringMap* reason=NULL); 01437 01443 virtual TDENetworkConnectionStatus::TDENetworkConnectionStatus initiateConnection(TQString uuid); 01444 01449 virtual TDENetworkConnectionStatus::TDENetworkConnectionStatus checkConnectionStatus(TQString uuid); 01450 01456 virtual TDENetworkConnectionStatus::TDENetworkConnectionStatus deactivateConnection(TQString uuid); 01457 01463 virtual TQStringList validSettings(); 01464 01474 virtual TDENetworkHWNeighborList* siteSurvey(); 01475 01482 virtual TQStringList connectionPhysicalDeviceUUIDs(TQString uuid); 01483 01488 virtual TDENetworkVPNTypeList availableVPNTypes(); 01489 01493 virtual bool networkingEnabled(); 01494 01499 virtual bool enableNetworking(bool enable); 01500 01504 virtual bool wiFiHardwareEnabled(); 01505 01510 virtual bool enableWiFi(bool enable); 01511 01515 virtual bool wiFiEnabled(); 01516 01521 virtual TQStringList defaultNetworkDevices(); 01522 01523 signals: 01528 void networkConnectionStateChanged(TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags newState, TDENetworkGlobalManagerFlags::TDENetworkGlobalManagerFlags previousState); 01529 01536 void networkDeviceStateChanged(TDENetworkConnectionStatus::TDENetworkConnectionStatus newState, TDENetworkConnectionStatus::TDENetworkConnectionStatus previousState, TQString deviceNode); 01537 01542 void accessPointStatusChanged(TDEMACAddress BSSID, TDENetworkAPEventType::TDENetworkAPEventType event); 01543 01549 void vpnEvent(TDENetworkVPNEventType::TDENetworkVPNEventType event, TQString message); 01550 01555 void networkManagementEvent(TDENetworkGlobalEventType::TDENetworkGlobalEventType event); 01556 01557 public: 01571 virtual TDENetworkConnectionList* connections(); 01572 01579 TDENetworkConnection* findConnectionByUUID(TQString uuid); 01580 01587 TDENetworkDevice* findDeviceByUUID(TQString uuid); 01588 01595 TDENetworkWiFiAPInfo* findAccessPointByBSSID(TDEMACAddress bssid); 01596 01597 private: 01598 TDENetworkConnectionManager* m_internalConnectionManager; 01599 }; 01600 01601 #endif // _TDENETWORKCONNECTIONS_H