diff options
| author | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2024-12-02 10:46:36 +0100 |
|---|---|---|
| committer | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2024-12-02 11:05:06 +0100 |
| commit | e0ef5463c2087f073fbf86a347903644aa4543ed (patch) | |
| tree | 0308fdc27a7800608898ca00b96c959b2b87f81f /android/lib/daemon-grpc | |
| parent | 64a5704fd0dc57cc73669251da43d4285fa42e92 (diff) | |
| download | mullvadvpn-e0ef5463c2087f073fbf86a347903644aa4543ed.tar.xz mullvadvpn-e0ef5463c2087f073fbf86a347903644aa4543ed.zip | |
Implement support for daita with multihop
Diffstat (limited to 'android/lib/daemon-grpc')
3 files changed, 19 insertions, 12 deletions
diff --git a/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/ManagementService.kt b/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/ManagementService.kt index bd27574cbe..d4cedd1e61 100644 --- a/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/ManagementService.kt +++ b/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/ManagementService.kt @@ -123,6 +123,7 @@ import net.mullvad.mullvadvpn.lib.model.WebsiteAuthToken import net.mullvad.mullvadvpn.lib.model.WireguardEndpointData as ModelWireguardEndpointData import net.mullvad.mullvadvpn.lib.model.addresses import net.mullvad.mullvadvpn.lib.model.customOptions +import net.mullvad.mullvadvpn.lib.model.enabled import net.mullvad.mullvadvpn.lib.model.entryLocation import net.mullvad.mullvadvpn.lib.model.isMultihopEnabled import net.mullvad.mullvadvpn.lib.model.location @@ -507,17 +508,12 @@ class ManagementService( .mapEmpty() suspend fun setDaitaEnabled(enabled: Boolean): Either<SetDaitaSettingsError, Unit> = - Either.catch { - val daitaSettings = - ManagementInterface.DaitaSettings.newBuilder() - .setEnabled(enabled) - // Before Multihop is supported on Android, calling `setDirectOnly` with - // false will cause undefined behaviour. Will be fixed by as part of - // DROID-1412. - .setDirectOnly(true) - .build() - grpc.setDaitaSettings(daitaSettings) - } + Either.catch { grpc.setEnableDaita(BoolValue.of(enabled)) } + .mapLeft(SetDaitaSettingsError::Unknown) + .mapEmpty() + + suspend fun setDaitaDirectOnly(enabled: Boolean): Either<SetDaitaSettingsError, Unit> = + Either.catch { grpc.setDaitaDirectOnly(BoolValue.of(enabled)) } .mapLeft(SetDaitaSettingsError::Unknown) .mapEmpty() diff --git a/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/mapper/FromDomain.kt b/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/mapper/FromDomain.kt index b3fe88bdc8..f62124a171 100644 --- a/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/mapper/FromDomain.kt +++ b/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/mapper/FromDomain.kt @@ -8,6 +8,7 @@ import net.mullvad.mullvadvpn.lib.model.Constraint import net.mullvad.mullvadvpn.lib.model.CustomDnsOptions import net.mullvad.mullvadvpn.lib.model.CustomList import net.mullvad.mullvadvpn.lib.model.CustomListId +import net.mullvad.mullvadvpn.lib.model.DaitaSettings import net.mullvad.mullvadvpn.lib.model.DefaultDnsOptions import net.mullvad.mullvadvpn.lib.model.DnsOptions import net.mullvad.mullvadvpn.lib.model.DnsState @@ -253,3 +254,9 @@ internal fun ShadowsocksSettings.fromDomain(): ManagementInterface.ShadowsocksSe is Constraint.Only -> ManagementInterface.ShadowsocksSettings.newBuilder().setPort(port.value.value).build() } + +internal fun DaitaSettings.fromDomain(): ManagementInterface.DaitaSettings = + ManagementInterface.DaitaSettings.newBuilder() + .setEnabled(enabled) + .setDirectOnly(directOnly) + .build() 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 0412871f43..c7f47b0c29 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 @@ -26,6 +26,7 @@ import net.mullvad.mullvadvpn.lib.model.CustomDnsOptions import net.mullvad.mullvadvpn.lib.model.CustomList import net.mullvad.mullvadvpn.lib.model.CustomListId import net.mullvad.mullvadvpn.lib.model.CustomListName +import net.mullvad.mullvadvpn.lib.model.DaitaSettings import net.mullvad.mullvadvpn.lib.model.DefaultDnsOptions import net.mullvad.mullvadvpn.lib.model.Device import net.mullvad.mullvadvpn.lib.model.DeviceId @@ -436,9 +437,12 @@ internal fun ManagementInterface.TunnelOptions.WireguardOptions.toDomain(): Wire WireguardTunnelOptions( mtu = if (hasMtu()) Mtu(mtu) else null, quantumResistant = quantumResistant.toDomain(), - daita = daita.enabled, + daitaSettings = daita.toDomain(), ) +internal fun ManagementInterface.DaitaSettings.toDomain(): DaitaSettings = + DaitaSettings(enabled = enabled, directOnly = directOnly) + internal fun ManagementInterface.QuantumResistantState.toDomain(): QuantumResistantState = when (state) { ManagementInterface.QuantumResistantState.State.AUTO -> QuantumResistantState.Auto |
