From c4a0dbfb20f01dbc41ad8a064fb4284a98fdb138 Mon Sep 17 00:00:00 2001 From: Timotej Leginus Date: Sun, 11 Jun 2023 03:04:32 +0200 Subject: [PATCH] Supports manual network IF loading and network IF can be acquired via Kotlin --- .../org/yuzu/yuzu_emu/utils/NetworkHelper.kt | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/NetworkHelper.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/NetworkHelper.kt index b5b32b5aad..bfb80b5014 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/NetworkHelper.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/NetworkHelper.kt @@ -1,20 +1,36 @@ +// SPDX-FileCopyrightText: 2023 yuzu Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + package org.yuzu.yuzu_emu.utils import android.content.Context import android.net.ConnectivityManager - - - +import androidx.preference.PreferenceManager object NetworkHelper { fun setRoutes(context: Context) { val connectivity = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager - val lp = connectivity.getLinkProperties(connectivity.activeNetwork) + val lp = connectivity.getLinkProperties(connectivity.activeNetwork) ?: return - // lp.routes + val ifName = lp.interfaceName + val addr = lp.linkAddresses[0] + val cidr = addr.prefixLength + val bits = 0xffffffff xor ((1 shl 32 - cidr)).toLong() - 1 + val mask = String.format( + "%d.%d.%d.%d", + bits and 0x0000000000ff000000L shr 24, + bits and 0x000000000000ff0000L shr 16, + bits and 0x00000000000000ff00L shr 8, + bits and 0x0000000000000000ffL shr 0 + ) + val gw = lp.routes.last { it.isDefaultRoute }.gateway?.hostAddress + + val settingFormattedRoute = "$ifName;$addr;$mask;$gw" + + // TODO set this value to settings } } \ No newline at end of file