commit NetworkManager-kde4 for openSUSE:Factory
Hello community, here is the log from the commit of package NetworkManager-kde4 for openSUSE:Factory checked in at Tue Nov 23 14:54:57 CET 2010. -------- --- KDE/NetworkManager-kde4/NetworkManager-kde4.changes 2010-11-03 12:22:32.000000000 +0100 +++ NetworkManager-kde4/NetworkManager-kde4.changes 2010-11-15 21:08:55.000000000 +0100 @@ -1,0 +2,5 @@ +Mon Nov 15 20:05:12 UTC 2010 - ctrippe@gmx.net + +- Add patch to fix handling of BSSID (bko238046) + +------------------------------------------------------------------- calling whatdependson for head-i586 New: ---- fix-bssid-bko238046.diff ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ NetworkManager-kde4.spec ++++++ --- /var/tmp/diff_new_pack.CTPfKW/_old 2010-11-23 14:54:47.000000000 +0100 +++ /var/tmp/diff_new_pack.CTPfKW/_new 2010-11-23 14:54:47.000000000 +0100 @@ -21,7 +21,7 @@ Name: NetworkManager-kde4 BuildRequires: NetworkManager-devel kdebase4-workspace-devel Version: 0.9.svn1192577 -Release: 1 +Release: 2 License: LGPL v2 or later BuildRoot: %{_tmppath}/%{name}-%{version}-build Group: System/GUI/KDE @@ -31,6 +31,7 @@ Source2: knetworkmanager.default.sh Patch1: no_dbusmenu.diff Patch9: code11_networkmanager_no_neverdefault.diff +Patch10: fix-bssid-bko238046.diff Recommends: %{name}-libs-lang = %{version} Requires: %{name}-libs = %{version}-%{release} Provides: NetworkManager-client @@ -133,6 +134,7 @@ %if %suse_version < 1120 %patch9 %endif +%patch10 echo "find_package(Msgfmt REQUIRED)" >> CMakeLists.txt echo "find_package(Gettext REQUIRED)" >> CMakeLists.txt echo "add_subdirectory(po)" >> CMakeLists.txt ++++++ fix-bssid-bko238046.diff ++++++ Index: libs/ui/802_11_wirelesswidget.cpp =================================================================== --- libs/ui/802_11_wirelesswidget.cpp (revision 1175103) +++ libs/ui/802_11_wirelesswidget.cpp (working copy) @@ -128,6 +128,8 @@ void Wireless80211Widget::writeConfig() if (d->ui.bssid->text() != QString::fromLatin1(":::::")) { d->setting->setBssid(d->ui.bssid->text().toAscii()); + } else { + d->setting->setBssid(QByteArray()); } d->setting->setMtu(d->ui.mtu->value()); } Index: backends/NetworkManager/settingdbus.h =================================================================== --- backends/NetworkManager/settingdbus.h (revision 1175103) +++ backends/NetworkManager/settingdbus.h (working copy) @@ -39,6 +39,10 @@ class SettingDbus virtual void fromMap(const QVariantMap &) = 0; virtual QVariantMap toMap() = 0; virtual QVariantMap toSecretsMap() = 0; + + // static methods to convert between binary and hex string MAC representation + static QByteArray macHex2Bin(const QByteArray & hexMac); + static QByteArray macBin2Hex(const QByteArray & binMac); protected: static void insertIfTrue(QVariantMap& map, const char * key, bool value); static void insertIfNonZero(QVariantMap& map, const char * key, uint value); Index: backends/NetworkManager/settings/802-11-wirelessdbus.cpp =================================================================== --- backends/NetworkManager/settings/802-11-wirelessdbus.cpp (revision 1175103) +++ backends/NetworkManager/settings/802-11-wirelessdbus.cpp (working copy) @@ -29,7 +29,7 @@ void WirelessDbus::fromMap(const QVariantMap & map setting->setChannel(map.value("channel").value<uint>()); } if (map.contains("bssid")) { - setting->setBssid(map.value("bssid").value<QByteArray>()); + setting->setBssid(SettingDbus::macBin2Hex(map.value("bssid").value<QByteArray>())); } if (map.contains("rate")) { setting->setRate(map.value("rate").value<uint>()); @@ -38,7 +38,7 @@ void WirelessDbus::fromMap(const QVariantMap & map setting->setTxpower(map.value(QLatin1String(NM_SETTING_WIRELESS_TX_POWER)).value<uint>()); } if (map.contains(QLatin1String(NM_SETTING_WIRELESS_MAC_ADDRESS))) { - setting->setMacaddress(map.value(QLatin1String(NM_SETTING_WIRELESS_MAC_ADDRESS)).value<QByteArray>()); + setting->setMacaddress(SettingDbus::macBin2Hex(map.value(QLatin1String(NM_SETTING_WIRELESS_MAC_ADDRESS)).value<QByteArray>())); } if (map.contains("mtu")) { setting->setMtu(map.value("mtu").value<uint>()); @@ -77,12 +77,12 @@ QVariantMap WirelessDbus::toMap() #endif //map.insert("channel", setting->channel()); if (!setting->bssid().isEmpty()) { - map.insert("bssid", setting->bssid()); + map.insert("bssid", SettingDbus::macHex2Bin(setting->bssid())); } //map.insert("rate", setting->rate()); //map.insert(QLatin1String(NM_SETTING_WIRELESS_TX_POWER), setting->txpower()); if (!setting->macaddress().isEmpty()) { - map.insert(QLatin1String(NM_SETTING_WIRELESS_MAC_ADDRESS), setting->macaddress()); + map.insert(QLatin1String(NM_SETTING_WIRELESS_MAC_ADDRESS), SettingDbus::macHex2Bin(setting->macaddress())); } if (setting->mtu() > 0 ) map.insert("mtu", setting->mtu()); Index: backends/NetworkManager/settings/802-3-ethernetdbus.cpp =================================================================== --- backends/NetworkManager/settings/802-3-ethernetdbus.cpp (revision 1175103) +++ backends/NetworkManager/settings/802-3-ethernetdbus.cpp (working copy) @@ -29,7 +29,7 @@ void WiredDbus::fromMap(const QVariantMap & map) setting->setAutonegotiate(map.value(QLatin1String(NM_SETTING_WIRED_AUTO_NEGOTIATE)).value<bool>()); } if (map.contains(QLatin1String(NM_SETTING_WIRED_MAC_ADDRESS))) { - setting->setMacaddress(map.value(QLatin1String(NM_SETTING_WIRED_MAC_ADDRESS)).value<QByteArray>()); + setting->setMacaddress(SettingDbus::macBin2Hex(map.value(QLatin1String(NM_SETTING_WIRED_MAC_ADDRESS)).value<QByteArray>())); } if (map.contains("mtu")) { setting->setMtu(map.value("mtu").value<uint>()); @@ -67,10 +67,10 @@ QVariantMap WiredDbus::toMap() } map.insert(QLatin1String(NM_SETTING_WIRED_AUTO_NEGOTIATE), setting->autonegotiate()); #endif - // broken - //QString mac = setting->macaddress(); - //map.insert(QLatin1String(NM_SETTING_WIRED_MAC_ADDRESS), mac.remove(':').toAscii()); - if (setting->mtu() > 0 ) { + if (!setting->macaddress().isEmpty()) { + map.insert(QLatin1String(NM_SETTING_WIRED_MAC_ADDRESS), SettingDbus::macHex2Bin(setting->macaddress())); + } + if (setting->mtu() > 0) { map.insert("mtu", setting->mtu()); } return map; Index: backends/NetworkManager/settingdbus.cpp =================================================================== --- backends/NetworkManager/settingdbus.cpp (revision 1175103) +++ backends/NetworkManager/settingdbus.cpp (working copy) @@ -18,6 +18,8 @@ You should have received a copy of the GNU Lesser License along with this library. If not, see http://www.gnu.org/licenses/. */ +#include "ctype.h" + #include "settingdbus.h" using namespace Knm; @@ -33,6 +35,53 @@ SettingDbus::~SettingDbus() } +// convert MAC from hex string to binary +// e.g. 00:11:22:dd:ee:ff -> 6-byte array +QByteArray SettingDbus::macHex2Bin(const QByteArray & hexMac) +{ + const int MAC_STR_LEN = 17; + QByteArray ba = hexMac; + + if (ba.isEmpty()) return ba; + + // Check the MAC first and correct it. + // Although fromHex() ignores invalid characters, it scans the array from + // the end; so add missing zeroes to have even number of characters. + for (int i = 0; i < MAC_STR_LEN; i++) { + char ch = i < ba.size() ? ba.at(i) : ':'; + int mod = i%3; + if (mod != 2) { + if (ch == ':') ba.insert(i-mod, "0"); + else if (!isxdigit(ch)) ba[i] = '0'; + } else { + if (ch != ':') ba.insert(i, ":"); + } + } + ba.resize(MAC_STR_LEN); + + return QByteArray::fromHex(ba); +} + +// convert binary MAC to hex string (human readable) +// e.g. 6-byte array -> 00:11:22:dd:ee:ff +QByteArray SettingDbus::macBin2Hex(const QByteArray & binMac) +{ + const int MAC_STR_LEN = 17; + QByteArray ba = binMac; + + if (ba.isEmpty()) return ba; + + ba = ba.toHex().toUpper(); + ba.insert(2, ':'); + ba.insert(5, ':'); + ba.insert(8, ':'); + ba.insert(11, ':'); + ba.insert(14, ':'); + ba.resize(MAC_STR_LEN); + + return ba; +} + void SettingDbus::insertIfTrue(QVariantMap& map, const char * key, bool setting) { if (setting) { ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org
participants (1)
-
root@hilbert.suse.de