diff --git a/0001-devic-add-interfaceFlag-and-support-WPA3.patch b/0001-devic-add-interfaceFlag-and-support-WPA3.patch new file mode 100644 index 0000000000000000000000000000000000000000..89e735e406382d47434f8d23e29f99b366ea8af2 --- /dev/null +++ b/0001-devic-add-interfaceFlag-and-support-WPA3.patch @@ -0,0 +1,310 @@ +From 6bb4c40bc53330797c301c5947d0d343172f9aa6 Mon Sep 17 00:00:00 2001 +From: liuzhilin +Date: Mon, 8 Apr 2024 17:04:04 +0800 +Subject: [PATCH] devic-add-interfaceFlag-and-support-WPA3 + +--- + autotests/activeconnectiontest.cpp | 1 + + autotests/managertest.cpp | 1 + + src/accesspoint.cpp | 12 ++++++++++++ + src/accesspoint.h | 5 +++++ + src/dbus/deviceinterface.h | 6 ++++++ + src/device.cpp | 11 ++++++++++- + src/device.h | 10 ++++++++++ + src/device_p.h | 1 + + src/fakenetwork/device.cpp | 10 ++++++++++ + src/fakenetwork/device.h | 4 ++++ + src/settings/wirelesssecuritysetting.cpp | 4 ++++ + src/settings/wirelesssecuritysetting.h | 1 + + src/utils.cpp | 2 ++ + src/utils.h | 1 + + 14 files changed, 68 insertions(+), 1 deletion(-) + +diff --git a/autotests/activeconnectiontest.cpp b/autotests/activeconnectiontest.cpp +index 40153f4..6508ac8 100644 +--- a/autotests/activeconnectiontest.cpp ++++ b/autotests/activeconnectiontest.cpp +@@ -33,6 +33,7 @@ void ActiveConnectionTest::initTestCase() + device->setFirmwareMissing(false); + device->setFirmwareVersion(QLatin1String("0.13-3")); + device->setInterface(QLatin1String("em1")); ++ device->setInterfaceFlags(1); + device->setManaged(true); + device->setUdi(QLatin1String("/sys/devices/pci0000:00/0000:00:19.0/net/em1")); + +diff --git a/autotests/managertest.cpp b/autotests/managertest.cpp +index 8b85ed5..708ff2d 100644 +--- a/autotests/managertest.cpp ++++ b/autotests/managertest.cpp +@@ -28,6 +28,7 @@ void ManagerTest::testDevices() + device->setDeviceType(1); + device->setDriver(QLatin1String("e1000e")); + device->setDriverVersion(QLatin1String("2.3.2-k")); ++ device->setInterfaceFlags(1); + device->setFirmwareMissing(false); + device->setFirmwareVersion(QLatin1String("0.13-3")); + device->setInterface(QLatin1String("em1")); +diff --git a/src/accesspoint.cpp b/src/accesspoint.cpp +index e9dd891..ad69e12 100644 +--- a/src/accesspoint.cpp ++++ b/src/accesspoint.cpp +@@ -37,6 +37,18 @@ NetworkManager::AccessPoint::Capabilities NetworkManager::AccessPointPrivate::co + if (caps & NM_802_11_AP_FLAGS_PRIVACY) { + capFlags |= AccessPoint::Privacy; + } ++ if (caps & NM_802_11_AP_FLAGS_WPS) { ++ capFlags |= AccessPoint::WPS; ++ } ++ if (caps & NM_802_11_AP_FLAGS_WPS_PBC) { ++ capFlags |= AccessPoint::WPS_PBC; ++ } ++ if (caps & NM_802_11_AP_FLAGS_WPS_PIN) { ++ capFlags |= AccessPoint::WPS_PIN; ++ } ++ if (caps & NM_802_11_AP_FLAGS_He) { ++ capFlags |= AccessPoint::He; ++ } + + return capFlags; + } +diff --git a/src/accesspoint.h b/src/accesspoint.h +index 0c2599b..159e346 100644 +--- a/src/accesspoint.h ++++ b/src/accesspoint.h +@@ -45,6 +45,10 @@ public: + enum Capability { + None = 0x0, /**< Null capability - says nothing about the access point */ + Privacy = 0x1, /**< Access point supports privacy measures */ ++ WPS = 0x2, /**< Access point supports some WPS method */ ++ WPS_PBC = 0x4, /**< Access point supports push-button WPS */ ++ WPS_PIN = 0x8, /**< Access point supports PIN-based WPS */ ++ He = 0x10, /**< Access point support high efficiency (new feature in 802.11ax) */ + }; + /** + * Flags describing the access point's capabilities according to WPA (Wifi Protected Access) +@@ -61,6 +65,7 @@ public: + KeyMgmtPsk = 0x100, + KeyMgmt8021x = 0x200, + KeyMgmtSAE = 0x400, ++ keyMgmtSae = 0x400, + KeyMgmtEapSuiteB192 = 0x2000, + }; + Q_DECLARE_FLAGS(Capabilities, Capability) +diff --git a/src/dbus/deviceinterface.h b/src/dbus/deviceinterface.h +index 49feb39..6525b3a 100644 +--- a/src/dbus/deviceinterface.h ++++ b/src/dbus/deviceinterface.h +@@ -144,6 +144,12 @@ public: + return qvariant_cast(property("IpInterface")); + } + ++ Q_PROPERTY(uint InterfaceFlags READ interfaceFlags) ++ inline uint interfaceFlags() const ++ { ++ return qvariant_cast(property("InterfaceFlags")); ++ } ++ + Q_PROPERTY(NMVariantMapList LldpNeighbors READ lldpNeighbors) + inline NMVariantMapList lldpNeighbors() const + { +diff --git a/src/device.cpp b/src/device.cpp +index ab9be9b..1e74ac9 100644 +--- a/src/device.cpp ++++ b/src/device.cpp +@@ -299,7 +299,10 @@ void NetworkManager::DevicePrivate::propertyChanged(const QString &property, con + Q_EMIT q->firmwareVersionChanged(); + } else if (property == QLatin1String("Interface")) { + interfaceName = value.toString(); +- Q_EMIT q->interfaceNameChanged(); ++ Q_EMIT q->interfaceNameChanged(); ++ } else if (property == QLatin1String("InterfaceFlags")) { ++ interfaceFlags = value.toUInt(); ++ Q_EMIT q->interfaceFlagsChanged(); + } else if (property == QLatin1String("Ip4Address")) { + ipV4Address = QHostAddress(ntohl(value.toUInt())); + Q_EMIT q->ipV4AddressChanged(); +@@ -524,6 +527,12 @@ bool NetworkManager::Device::managed() const + return d->managed; + } + ++uint NetworkManager::Device::interfaceFlags() const ++{ ++ Q_D(const Device); ++ return d->interfaceFlags; ++} ++ + uint NetworkManager::Device::mtu() const + { + Q_D(const Device); +diff --git a/src/device.h b/src/device.h +index 3995311..985d85e 100644 +--- a/src/device.h ++++ b/src/device.h +@@ -42,6 +42,7 @@ class NETWORKMANAGERQT_EXPORT Device : public QObject + Q_PROPERTY(QString firmwareVersion READ firmwareVersion) + Q_PROPERTY(QVariant genericCapabilities READ capabilitiesV) + Q_PROPERTY(QHostAddress ipV4Address READ ipV4Address) ++ Q_PROPERTY(uint InterfaceFlags READ interfaceFlags) + Q_PROPERTY(bool managed READ managed) + Q_PROPERTY(uint mtu READ mtu) + Q_PROPERTY(bool nmPluginMissing READ nmPluginMissing) +@@ -362,6 +363,10 @@ public: + * Is the device currently being managed by NetworkManager? + */ + bool managed() const; ++ /** ++ * The up or down flag for the device ++ */ ++ uint interfaceFlags() const; + /** + * Is the firmware needed by the device missing? + */ +@@ -550,6 +555,11 @@ Q_SIGNALS: + */ + void managedChanged(); + ++ /** ++ * Emitted when the up or down state of the device changed ++ */ ++ void interfaceFlagsChanged(); ++ + /** + * Emitted when the physical port ID changes. + * @see physicalPortId() +diff --git a/src/device_p.h b/src/device_p.h +index bf39c3d..a1a0c4e 100644 +--- a/src/device_p.h ++++ b/src/device_p.h +@@ -32,6 +32,7 @@ public: + Device::Type deviceType; + Device::State connectionState; + bool managed; ++ uint interfaceFlags; + mutable IpConfig ipV4Config; + QString ipV4ConfigPath; + mutable IpConfig ipV6Config; +diff --git a/src/fakenetwork/device.cpp b/src/fakenetwork/device.cpp +index 7ae027f..d7dfc84 100644 +--- a/src/fakenetwork/device.cpp ++++ b/src/fakenetwork/device.cpp +@@ -139,6 +139,11 @@ QString Device::ipInterface() const + return m_ipInterface; + } + ++uint Device::interfaceFlags() const ++{ ++ return m_interfaceFlags; ++} ++ + bool Device::managed() const + { + return m_managed; +@@ -224,6 +229,11 @@ void Device::setInterface(const QString &interface) + m_interface = interface; + } + ++void Device::setInterfaceFlags(uint interfaceFlags) ++{ ++ m_interfaceFlags = interfaceFlags; ++} ++ + void Device::setIp4Config(const QString &config) + { + m_ip4Config = QDBusObjectPath(config); +diff --git a/src/fakenetwork/device.h b/src/fakenetwork/device.h +index 58a4f14..6f333b0 100644 +--- a/src/fakenetwork/device.h ++++ b/src/fakenetwork/device.h +@@ -38,6 +38,7 @@ public: + Q_PROPERTY(QDBusObjectPath Ip4Config READ ip4Config) + Q_PROPERTY(QDBusObjectPath Ip6Config READ ip6Config) + Q_PROPERTY(QString IpInterface READ ipInterface) ++ Q_PROPERTY(uint InterfaceFlags READ interfaceFlags) + Q_PROPERTY(bool Managed READ managed) + Q_PROPERTY(uint Mtu READ mtu) + Q_PROPERTY(uint State READ state) +@@ -61,6 +62,7 @@ public: + QDBusObjectPath ip4Config() const; + QDBusObjectPath ip6Config() const; + QString ipInterface() const; ++ uint interfaceFlags() const; + bool managed() const; + uint mtu() const; + uint state() const; +@@ -83,6 +85,7 @@ public: + void setFirmwareMissing(bool firmwareMissing); + void setFirmwareVersion(const QString &firmwareVersion); + void setInterface(const QString &interface); ++ void setInterfaceFlags(uint interfaceFlags); + void setIpv4Address(int address); + void setIp4Config(const QString &config); + void setIp6Config(const QString &config); +@@ -114,6 +117,7 @@ private: + bool m_firmwareMissing; + QString m_firmwareVersion; + QString m_interface; ++ uint m_interfaceFlags; + int m_ip4Address; + QDBusObjectPath m_ip4Config; + QDBusObjectPath m_ip6Config; +diff --git a/src/settings/wirelesssecuritysetting.cpp b/src/settings/wirelesssecuritysetting.cpp +index 8d27bad..17b4d1d 100644 +--- a/src/settings/wirelesssecuritysetting.cpp ++++ b/src/settings/wirelesssecuritysetting.cpp +@@ -449,6 +449,8 @@ void NetworkManager::WirelessSecuritySetting::fromMap(const QVariantMap &map) + setKeyMgmt(WpaEap); + } else if (key == "sae") { + setKeyMgmt(SAE); ++ } else if (key == "sae") { ++ setKeyMgmt(WpaSae); + } else if (key == "wpa-eap-suite-b-192") { + setKeyMgmt(WpaEapSuiteB192); + } +@@ -587,6 +589,8 @@ QVariantMap NetworkManager::WirelessSecuritySetting::toMap() const + setting.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_KEY_MGMT), "wpa-eap"); + } else if (keyMgmt() == SAE) { + setting.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_KEY_MGMT), "sae"); ++ } else if (keyMgmt() == WpaSae) { ++ setting.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_KEY_MGMT), "sae"); + } else if (keyMgmt() == WpaEapSuiteB192) { + setting.insert(QLatin1String(NM_SETTING_WIRELESS_SECURITY_KEY_MGMT), "wpa-eap-suite-b-192"); + } +diff --git a/src/settings/wirelesssecuritysetting.h b/src/settings/wirelesssecuritysetting.h +index 9c2b0af..456021b 100644 +--- a/src/settings/wirelesssecuritysetting.h ++++ b/src/settings/wirelesssecuritysetting.h +@@ -32,6 +32,7 @@ public: + WpaPsk, + WpaEap, + SAE, ++ WpaSae, + WpaEapSuiteB192, + }; + enum AuthAlg { +diff --git a/src/utils.cpp b/src/utils.cpp +index 2acc7f2..ed07267 100644 +--- a/src/utils.cpp ++++ b/src/utils.cpp +@@ -501,6 +501,8 @@ NetworkManager::WirelessSecurityType NetworkManager::securityTypeFromConnectionS + return Wpa2Eap; + } else if (wifiSecuritySetting->keyMgmt() == WirelessSecuritySetting::SAE) { + return SAE; ++ } else if (wifiSecuritySetting->keyMgmt() == WirelessSecuritySetting::WpaSae) { ++ return WpaSae; + } else if (wifiSecuritySetting->keyMgmt() == WirelessSecuritySetting::WpaEapSuiteB192) { + return Wpa3SuiteB192; + } +diff --git a/src/utils.h b/src/utils.h +index ab2843f..dac64a7 100644 +--- a/src/utils.h ++++ b/src/utils.h +@@ -28,6 +28,7 @@ enum WirelessSecurityType { + Wpa2Psk, + Wpa2Eap, + SAE, ++ WpaSae, + Wpa3SuiteB192, + }; + +-- +2.39.3 diff --git a/kf5-networkmanager-qt.spec b/kf5-networkmanager-qt.spec index 60b60f22581642d42ebf912782108921b004f814..f9d0b843814f0a9300eebda23e936be2d252e592 100644 --- a/kf5-networkmanager-qt.spec +++ b/kf5-networkmanager-qt.spec @@ -1,9 +1,10 @@ +%undefine _ld_as_needed %undefine __cmake_in_source_build %global framework networkmanager-qt Name: kf5-%{framework} Version: 5.113.0 -Release: 2 +Release: 3 Summary: A Tier 1 KDE Frameworks 5 module that wraps NetworkManager DBus API License: LGPLv2+ @@ -13,6 +14,7 @@ URL: https://invent.kde.org/frameworks/%{framework} %global stable %stable_kf5 Source0: http://download.kde.org/%{stable}/frameworks/%{majmin}/%{framework}-%{version}.tar.xz +Patch0001: 0001-devic-add-interfaceFlag-and-support-WPA3.patch BuildRequires: extra-cmake-modules >= %{majmin} BuildRequires: kf5-rpm-macros >= %{majmin} @@ -39,7 +41,6 @@ that use NetworkManager. %prep %autosetup -p1 -n %{framework}-%{version} - %build %cmake_kf5 @@ -64,6 +65,9 @@ that use NetworkManager. %changelog +* Wed Aug 28 2024 pangqing - 5.113.0-3 +- modify macros (fix dde-network-core build error) + * Fri Nov 15 2024 ChenYanpan - 5.113.0-2 - use %cmake_build and %cmake_install to fix build failure