summaryrefslogtreecommitdiff
path: root/src/android
diff options
context:
space:
mode:
Diffstat (limited to 'src/android')
-rw-r--r--src/android/app/src/main/java/org/citron/citron_emu/NativeLibrary.kt26
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()
+ }
}