summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMarkus Pettersson <markus.pettersson@mullvad.net>2025-07-16 11:01:14 +0200
committerMarkus Pettersson <markus.pettersson@mullvad.net>2025-07-16 11:01:14 +0200
commiteb37f45de40a72e3bb2dc2fa3366a3f8441072e9 (patch)
treeafad922e4e407896ab0ad66ce1d2139345170460
parent3fc75ac1e71704fa82f322fed91cacab6c962bbe (diff)
parent7df1d3037bed7d6abfcac7f39dca4962d9f6c9af (diff)
downloadmullvadvpn-eb37f45de40a72e3bb2dc2fa3366a3f8441072e9.tar.xz
mullvadvpn-eb37f45de40a72e3bb2dc2fa3366a3f8441072e9.zip
Merge branch 'show-obfuscation-feature-indicator-when-connected-over-quic-des-2267'
-rw-r--r--android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/mapper/ToDomain.kt1
-rw-r--r--desktop/packages/mullvad-vpn/src/main/grpc-type-convertions.ts2
-rw-r--r--desktop/packages/mullvad-vpn/src/renderer/components/main-view/FeatureIndicators.tsx1
-rw-r--r--desktop/packages/mullvad-vpn/src/shared/daemon-rpc-types.ts1
-rw-r--r--mullvad-management-interface/proto/management_interface.proto17
-rw-r--r--mullvad-management-interface/src/types/conversions/features.rs2
-rw-r--r--mullvad-types/src/features.rs24
7 files changed, 30 insertions, 18 deletions
diff --git a/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/mapper/ToDomain.kt b/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/mapper/ToDomain.kt
index 6c8544950f..be817feb04 100644
--- a/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/mapper/ToDomain.kt
+++ b/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/mapper/ToDomain.kt
@@ -717,6 +717,7 @@ internal fun ManagementInterface.FeatureIndicator.toDomain() =
ManagementInterface.FeatureIndicator.SHADOWSOCKS -> FeatureIndicator.SHADOWSOCKS
ManagementInterface.FeatureIndicator.MULTIHOP -> FeatureIndicator.MULTIHOP
ManagementInterface.FeatureIndicator.DAITA_MULTIHOP -> FeatureIndicator.DAITA_MULTIHOP
+ ManagementInterface.FeatureIndicator.QUIC,
ManagementInterface.FeatureIndicator.LOCKDOWN_MODE,
ManagementInterface.FeatureIndicator.BRIDGE_MODE,
ManagementInterface.FeatureIndicator.CUSTOM_MSS_FIX,
diff --git a/desktop/packages/mullvad-vpn/src/main/grpc-type-convertions.ts b/desktop/packages/mullvad-vpn/src/main/grpc-type-convertions.ts
index c5c6ccf4d2..6d8ebcb17b 100644
--- a/desktop/packages/mullvad-vpn/src/main/grpc-type-convertions.ts
+++ b/desktop/packages/mullvad-vpn/src/main/grpc-type-convertions.ts
@@ -396,6 +396,8 @@ function convertFromFeatureIndicator(
return FeatureIndicator.daitaMultihop;
case grpcTypes.FeatureIndicator.SHADOWSOCKS:
return FeatureIndicator.shadowsocks;
+ case grpcTypes.FeatureIndicator.QUIC:
+ return FeatureIndicator.quic;
}
}
diff --git a/desktop/packages/mullvad-vpn/src/renderer/components/main-view/FeatureIndicators.tsx b/desktop/packages/mullvad-vpn/src/renderer/components/main-view/FeatureIndicators.tsx
index c98bb0bc62..f1d5595b66 100644
--- a/desktop/packages/mullvad-vpn/src/renderer/components/main-view/FeatureIndicators.tsx
+++ b/desktop/packages/mullvad-vpn/src/renderer/components/main-view/FeatureIndicators.tsx
@@ -254,6 +254,7 @@ function getFeatureIndicatorLabel(indicator: FeatureIndicator) {
);
case FeatureIndicator.udp2tcp:
case FeatureIndicator.shadowsocks:
+ case FeatureIndicator.quic:
return messages.pgettext('wireguard-settings-view', 'Obfuscation');
case FeatureIndicator.multihop:
// TRANSLATORS: This refers to the multihop setting in the VPN settings view. This is
diff --git a/desktop/packages/mullvad-vpn/src/shared/daemon-rpc-types.ts b/desktop/packages/mullvad-vpn/src/shared/daemon-rpc-types.ts
index 45ed498237..63ec8d0b9b 100644
--- a/desktop/packages/mullvad-vpn/src/shared/daemon-rpc-types.ts
+++ b/desktop/packages/mullvad-vpn/src/shared/daemon-rpc-types.ts
@@ -232,6 +232,7 @@ export enum FeatureIndicator {
lockdownMode,
udp2tcp,
shadowsocks,
+ quic,
lanSharing,
dnsContentBlockers,
customDns,
diff --git a/mullvad-management-interface/proto/management_interface.proto b/mullvad-management-interface/proto/management_interface.proto
index b55ecd65f7..199f4f2000 100644
--- a/mullvad-management-interface/proto/management_interface.proto
+++ b/mullvad-management-interface/proto/management_interface.proto
@@ -322,14 +322,15 @@ enum FeatureIndicator {
LOCKDOWN_MODE = 4;
UDP_2_TCP = 5;
SHADOWSOCKS = 6;
- LAN_SHARING = 7;
- DNS_CONTENT_BLOCKERS = 8;
- CUSTOM_DNS = 9;
- SERVER_IP_OVERRIDE = 10;
- CUSTOM_MTU = 11;
- CUSTOM_MSS_FIX = 12;
- DAITA = 13;
- DAITA_MULTIHOP = 14;
+ QUIC = 7;
+ LAN_SHARING = 8;
+ DNS_CONTENT_BLOCKERS = 9;
+ CUSTOM_DNS = 10;
+ SERVER_IP_OVERRIDE = 11;
+ CUSTOM_MTU = 12;
+ CUSTOM_MSS_FIX = 13;
+ DAITA = 14;
+ DAITA_MULTIHOP = 15;
}
message ObfuscationEndpoint {
diff --git a/mullvad-management-interface/src/types/conversions/features.rs b/mullvad-management-interface/src/types/conversions/features.rs
index bc1d6aa05a..c37f1e37ac 100644
--- a/mullvad-management-interface/src/types/conversions/features.rs
+++ b/mullvad-management-interface/src/types/conversions/features.rs
@@ -11,6 +11,7 @@ impl From<mullvad_types::features::FeatureIndicator> for proto::FeatureIndicator
mullvad_types::features::FeatureIndicator::LockdownMode => LockdownMode,
mullvad_types::features::FeatureIndicator::Udp2Tcp => Udp2Tcp,
mullvad_types::features::FeatureIndicator::Shadowsocks => Shadowsocks,
+ mullvad_types::features::FeatureIndicator::Quic => Quic,
mullvad_types::features::FeatureIndicator::LanSharing => LanSharing,
mullvad_types::features::FeatureIndicator::DnsContentBlockers => DnsContentBlockers,
mullvad_types::features::FeatureIndicator::CustomDns => CustomDns,
@@ -33,6 +34,7 @@ impl From<proto::FeatureIndicator> for mullvad_types::features::FeatureIndicator
proto::FeatureIndicator::LockdownMode => Self::LockdownMode,
proto::FeatureIndicator::Udp2Tcp => Self::Udp2Tcp,
proto::FeatureIndicator::Shadowsocks => Self::Shadowsocks,
+ proto::FeatureIndicator::Quic => Self::Quic,
proto::FeatureIndicator::LanSharing => Self::LanSharing,
proto::FeatureIndicator::DnsContentBlockers => Self::DnsContentBlockers,
proto::FeatureIndicator::CustomDns => Self::CustomDns,
diff --git a/mullvad-types/src/features.rs b/mullvad-types/src/features.rs
index e0722668c9..c181a52dbb 100644
--- a/mullvad-types/src/features.rs
+++ b/mullvad-types/src/features.rs
@@ -73,6 +73,7 @@ pub enum FeatureIndicator {
LockdownMode,
Udp2Tcp,
Shadowsocks,
+ Quic,
LanSharing,
DnsContentBlockers,
CustomDns,
@@ -99,6 +100,7 @@ impl FeatureIndicator {
FeatureIndicator::LockdownMode => "Lockdown Mode",
FeatureIndicator::Udp2Tcp => "Udp2Tcp",
FeatureIndicator::Shadowsocks => "Shadowsocks",
+ FeatureIndicator::Quic => "Quic",
FeatureIndicator::LanSharing => "LAN Sharing",
FeatureIndicator::DnsContentBlockers => "Dns Content Blocker",
FeatureIndicator::CustomDns => "Custom Dns",
@@ -168,16 +170,16 @@ pub fn compute_feature_indicators(
}
TunnelType::Wireguard => {
let quantum_resistant = endpoint.quantum_resistant;
- let udp_tcp = endpoint
- .obfuscation
- .as_ref()
- .filter(|obfuscation| obfuscation.obfuscation_type == ObfuscationType::Udp2Tcp)
- .is_some();
- let shadowsocks = endpoint
- .obfuscation
- .as_ref()
- .filter(|obfuscation| obfuscation.obfuscation_type == ObfuscationType::Shadowsocks)
- .is_some();
+
+ let has_obfuscation = |obfs| {
+ endpoint
+ .obfuscation
+ .iter()
+ .any(|obfuscation| obfuscation.obfuscation_type == obfs)
+ };
+ let udp_tcp = has_obfuscation(ObfuscationType::Udp2Tcp);
+ let shadowsocks = has_obfuscation(ObfuscationType::Shadowsocks);
+ let quic = has_obfuscation(ObfuscationType::Quic);
let mtu = settings.tunnel_options.wireguard.mtu.is_some();
@@ -208,6 +210,7 @@ pub fn compute_feature_indicators(
(multihop, FeatureIndicator::Multihop),
(udp_tcp, FeatureIndicator::Udp2Tcp),
(shadowsocks, FeatureIndicator::Shadowsocks),
+ (quic, FeatureIndicator::Quic),
(mtu, FeatureIndicator::CustomMtu),
#[cfg(daita)]
(daita, FeatureIndicator::Daita),
@@ -451,6 +454,7 @@ mod tests {
FeatureIndicator::LockdownMode => {}
FeatureIndicator::Udp2Tcp => {}
FeatureIndicator::Shadowsocks => {}
+ FeatureIndicator::Quic => {}
FeatureIndicator::LanSharing => {}
FeatureIndicator::DnsContentBlockers => {}
FeatureIndicator::CustomDns => {}