Force to set ipv6 method to auto

This commit is contained in:
Florian RICHER 2024-05-19 01:20:22 +02:00 committed by Devin Lin
parent 17e92e72fc
commit 24d5a2f223
4 changed files with 18 additions and 1 deletions

View file

@ -370,6 +370,9 @@ QCoro::Task<void> Modem::addProfile(QString name, QString apn, QString username,
gsmSetting->setInitialized(true);
NetworkManager::Ipv6Setting::Ptr ipv6Setting = settings->setting(NetworkManager::Setting::Ipv6).dynamicCast<NetworkManager::Ipv6Setting>();
ipv6Setting->setMethod(NetworkManager::Ipv6Setting::ConfigMethod::Automatic);
QDBusReply<QDBusObjectPath> reply = co_await NetworkManager::addAndActivateConnection(settings->toMap(), m_nmModem->uni(), "");
if (!reply.isValid()) {
qWarning() << QStringLiteral("Error adding connection:") << reply.error().message();
@ -420,6 +423,9 @@ QCoro::Task<void> Modem::updateProfile(QString connectionUni, QString name, QStr
gsmSetting->setInitialized(true);
NetworkManager::Ipv6Setting::Ptr ipv6Setting = conSettings->setting(NetworkManager::Setting::Ipv6).dynamicCast<NetworkManager::Ipv6Setting>();
ipv6Setting->setMethod(NetworkManager::Ipv6Setting::ConfigMethod::Automatic);
QDBusReply<void> reply = con->update(conSettings->toMap());
if (!reply.isValid()) {
qWarning() << QStringLiteral("Error updating connection settings for") << connectionUni << QStringLiteral(":") << reply.error().message()

View file

@ -14,6 +14,7 @@
#include <NetworkManagerQt/CdmaSetting>
#include <NetworkManagerQt/ConnectionSettings>
#include <NetworkManagerQt/GsmSetting>
#include <NetworkManagerQt/Ipv6Setting>
#include <NetworkManagerQt/Manager>
#include <NetworkManagerQt/ModemDevice>
#include <NetworkManagerQt/Settings>

View file

@ -18,6 +18,7 @@
#include <NetworkManagerQt/CdmaSetting>
#include <NetworkManagerQt/ConnectionSettings>
#include <NetworkManagerQt/GsmSetting>
#include <NetworkManagerQt/Ipv6Setting>
#include <NetworkManagerQt/Manager>
#include <NetworkManagerQt/Settings>
@ -96,6 +97,14 @@ QCoro::Task<void> AutoDetectAPN::checkAndAddAutodetectedAPN()
gsmSetting->setHomeOnly(false); // TODO respect modem roaming settings?
gsmSetting->setInitialized(true);
if (
detectedAPN.protocol == QStringLiteral("IPV6")
|| detectedAPN.protocol == QStringLiteral("IPV4V6")
) {
NetworkManager::Ipv6Setting::Ptr ipv6Setting = settings->setting(NetworkManager::Setting::Ipv6).dynamicCast<NetworkManager::Ipv6Setting>();
ipv6Setting->setMethod(NetworkManager::Ipv6Setting::ConfigMethod::Automatic);
}
QDBusReply<QDBusObjectPath> reply = co_await NetworkManager::addAndActivateConnection(settings->toMap(), nmModem->uni(), "");
if (!reply.isValid()) {
qCWarning(LOGGING_CATEGORY) << "Error adding autodetected connection:" << reply.error().message();
@ -152,7 +161,7 @@ std::optional<AutoDetectAPN::APNEntry> AutoDetectAPN::findAPN(const QString &ope
QString mccmnc = element.attribute("mcc") + element.attribute("mnc");
if (mccmnc == operatorCode) {
APNEntry entry{element.attribute("apn"), element.attribute("carrier")};
APNEntry entry{element.attribute("apn"), element.attribute("carrier"), element.attribute("protocol", "IPV4V6")};
candidates.push_back(entry);
// check if we have an MVNO match and prioritize that

View file

@ -21,6 +21,7 @@ public:
struct APNEntry {
QString apn;
QString carrier;
QString protocol;
};
std::optional<APNEntry> findAPN(const QString &operatorCode, const QString &gid1, const QString &spn, const QString &imsi) const;