summaryrefslogtreecommitdiffhomepage
path: root/android/src/main
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-03-19 16:29:02 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-03-24 16:01:26 +0000
commit4ad07b885eed42e2511b8dbcb59e24d366d26f75 (patch)
tree9ec5f9a40ad2f7c6d7e508974d44c1c0ecea88cf /android/src/main
parent3c54992c343097dcdb329f02e8fc51ca4866796c (diff)
downloadmullvadvpn-4ad07b885eed42e2511b8dbcb59e24d366d26f75.tar.xz
mullvadvpn-4ad07b885eed42e2511b8dbcb59e24d366d26f75.zip
Add support for IPv6 tunnel addresses
Diffstat (limited to 'android/src/main')
-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)")
+ }
+ }
}