diff options
Diffstat (limited to 'src/android')
-rw-r--r-- | src/android/app/src/main/java/org/citron/citron_emu/NativeLibrary.kt | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/android/app/src/main/java/org/citron/citron_emu/NativeLibrary.kt b/src/android/app/src/main/java/org/citron/citron_emu/NativeLibrary.kt index fc63dc276..c61230906 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/NativeLibrary.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/NativeLibrary.kt @@ -21,6 +21,7 @@ import org.citron.citron_emu.utils.Log import org.citron.citron_emu.model.InstallResult import org.citron.citron_emu.model.Patch import org.citron.citron_emu.model.GameVerificationResult +import java.net.NetworkInterface /** * Class which contains methods that interact @@ -459,4 +460,29 @@ object NativeLibrary { * Checks if all necessary keys are present for decryption */ external fun areKeysPresent(): Boolean + + fun getNetworkInterfaces(): Array<String> { + val interfaceList = mutableListOf<String>() + try { + NetworkInterface.getNetworkInterfaces()?.toList()?.forEach { iface -> + if (iface.isUp && !iface.isLoopback) { + iface.inetAddresses.toList() + .filterNot { it.isLoopbackAddress } + .forEach { addr -> + interfaceList.add("${iface.name};${addr.hostAddress}") + } + } + } + } catch (e: Exception) { + Log.error("[NativeLibrary] Failed to enumerate network interfaces: ${e.message}") + } + + // Always ensure we have at least a loopback interface + if (interfaceList.isEmpty()) { + Log.warning("[NativeLibrary] No interfaces found, adding loopback fallback") + interfaceList.add("lo;127.0.0.1") + } + + return interfaceList.toTypedArray() + } } |