summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--android/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt13
1 files changed, 12 insertions, 1 deletions
diff --git a/android/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt b/android/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt
index e2ea8c5818..a36e0b1db6 100644
--- a/android/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt
+++ b/android/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt
@@ -1,6 +1,9 @@
package net.mullvad.talpid
import android.net.VpnService
+import java.net.Inet4Address
+import java.net.Inet6Address
+import java.net.InetAddress
import net.mullvad.talpid.tun_provider.TunConfig
open class TalpidVpnService : VpnService() {
@@ -17,7 +20,7 @@ open class TalpidVpnService : VpnService() {
fun createTun(config: TunConfig): Int {
val builder = Builder().apply {
for (address in config.addresses) {
- addAddress(address, 32)
+ addAddress(address, prefixForAddress(address))
}
for (dnsServer in config.dnsServers) {
@@ -40,4 +43,12 @@ open class TalpidVpnService : VpnService() {
fun bypass(socket: Int): Boolean {
return protect(socket)
}
+
+ private fun prefixForAddress(address: InetAddress): Int {
+ when (address) {
+ is Inet4Address -> return 32
+ is Inet6Address -> return 128
+ else -> throw RuntimeException("Invalid IP address (not IPv4 nor IPv6)")
+ }
+ }
}