From 0f7c1f0169b4cdd32883ab269e299d7ac24014d1 Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Sun, 28 Dec 2025 23:49:14 +0100 Subject: [PATCH 1/4] Feature: Add fallback ip detection --- .../NetworkConnectionWidgetViewModel.cs | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/Source/NETworkManager/ViewModels/NetworkConnectionWidgetViewModel.cs b/Source/NETworkManager/ViewModels/NetworkConnectionWidgetViewModel.cs index 634a5b401e..ce70c23767 100644 --- a/Source/NETworkManager/ViewModels/NetworkConnectionWidgetViewModel.cs +++ b/Source/NETworkManager/ViewModels/NetworkConnectionWidgetViewModel.cs @@ -10,6 +10,7 @@ using System.Windows.Input; using log4net; using NetworkInterface = NETworkManager.Models.Network.NetworkInterface; +using System.Net.Sockets; namespace NETworkManager.ViewModels; @@ -760,6 +761,14 @@ private Task CheckConnectionComputerAsync(CancellationToken ct) await NetworkInterface.DetectLocalIPAddressBasedOnRoutingAsync( IPAddress.Parse(SettingsManager.Current.Dashboard_PublicIPv4Address)); + if (detectedLocalIPv4Address == null) + { + Log.Debug("CheckConnectionComputerAsync - Local IPv4 address detection via routing failed, trying network interfaces..."); + + detectedLocalIPv4Address = await NetworkInterface.DetectLocalIPAddressFromNetworkInterfaceAsync( + AddressFamily.InterNetwork); + } + if (detectedLocalIPv4Address != null) { Log.Debug("CheckConnectionComputerAsync - Local IPv4 address detected: " + detectedLocalIPv4Address); @@ -787,6 +796,14 @@ await NetworkInterface.DetectLocalIPAddressBasedOnRoutingAsync( await NetworkInterface.DetectLocalIPAddressBasedOnRoutingAsync( IPAddress.Parse(SettingsManager.Current.Dashboard_PublicIPv6Address)); + if (detectedLocalIPv6Address == null) + { + Log.Debug("CheckConnectionComputerAsync - Local IPv6 address detection via routing failed, trying network interfaces..."); + + detectedLocalIPv6Address ??= await NetworkInterface.DetectLocalIPAddressFromNetworkInterfaceAsync( + AddressFamily.InterNetworkV6); + } + if (detectedLocalIPv6Address != null) { Log.Debug("CheckConnectionComputerAsync - Local IPv6 address detected: " + detectedLocalIPv6Address); @@ -896,6 +913,9 @@ private Task CheckConnectionRouterAsync(CancellationToken ct) await NetworkInterface.DetectLocalIPAddressBasedOnRoutingAsync( IPAddress.Parse(SettingsManager.Current.Dashboard_PublicIPv4Address)); + detectedLocalIPv4Address ??= await NetworkInterface.DetectLocalIPAddressFromNetworkInterfaceAsync( + AddressFamily.InterNetwork); + if (detectedLocalIPv4Address != null) { Log.Debug("CheckConnectionRouterAsync - Computer IPv4 address detected: " + detectedLocalIPv4Address); @@ -939,6 +959,9 @@ await NetworkInterface.DetectGatewayFromLocalIPAddressAsync( await NetworkInterface.DetectLocalIPAddressBasedOnRoutingAsync( IPAddress.Parse(SettingsManager.Current.Dashboard_PublicIPv6Address)); + detectedComputerIPv6 ??= await NetworkInterface.DetectLocalIPAddressFromNetworkInterfaceAsync( + AddressFamily.InterNetworkV6); + if (detectedComputerIPv6 != null) { Log.Debug("CheckConnectionRouterAsync - Computer IPv6 address detected: " + detectedComputerIPv6); From a454acb256d23d92c3c057ed4681de7884618c37 Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Sun, 28 Dec 2025 23:57:37 +0100 Subject: [PATCH 2/4] Update NetworkConnectionWidgetViewModel.cs --- .../ViewModels/NetworkConnectionWidgetViewModel.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/NETworkManager/ViewModels/NetworkConnectionWidgetViewModel.cs b/Source/NETworkManager/ViewModels/NetworkConnectionWidgetViewModel.cs index ce70c23767..afac966bef 100644 --- a/Source/NETworkManager/ViewModels/NetworkConnectionWidgetViewModel.cs +++ b/Source/NETworkManager/ViewModels/NetworkConnectionWidgetViewModel.cs @@ -800,7 +800,7 @@ await NetworkInterface.DetectLocalIPAddressBasedOnRoutingAsync( { Log.Debug("CheckConnectionComputerAsync - Local IPv6 address detection via routing failed, trying network interfaces..."); - detectedLocalIPv6Address ??= await NetworkInterface.DetectLocalIPAddressFromNetworkInterfaceAsync( + detectedLocalIPv6Address = await NetworkInterface.DetectLocalIPAddressFromNetworkInterfaceAsync( AddressFamily.InterNetworkV6); } From 4265a3792caa93d66258ce25255d878b97eb6fb7 Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Sun, 28 Dec 2025 23:59:36 +0100 Subject: [PATCH 3/4] Docs: #3296 --- Website/docs/changelog/next-release.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Website/docs/changelog/next-release.md b/Website/docs/changelog/next-release.md index a0ea9553d6..db4f8873e5 100644 --- a/Website/docs/changelog/next-release.md +++ b/Website/docs/changelog/next-release.md @@ -56,6 +56,10 @@ Release date: **xx.xx.2025** - Settings format migrated from `XML` to `JSON`. The settings file will be automatically converted on first start after the update. [#3282](https://github.com/BornToBeRoot/NETworkManager/pull/3282) - Create a daily backup of the settings file before saving changes. Up to `10` backup files are kept in the `Backups` subfolder of the settings directory. [#3283](https://github.com/BornToBeRoot/NETworkManager/pull/3283) +**Dashboard** + +- Enhance local IP detection logic: If local IP cannot be determined via routing, now iterates over active network adapters and selects the first valid IPv4/IPv6 address (with link-local addresses (`169.254.x.x`, `fe80::..`) given lower priority). [#3296](https://github.com/BornToBeRoot/NETworkManager/pull/3296) + **IP Scanner** - Improved local subnet detection: If local IP cannot be determined via routing, now iterates over active network adapters and selects the first valid IPv4 address (with link-local addresses (`169.254.x.x`) given lower priority). [#3288](https://github.com/BornToBeRoot/NETworkManager/pull/3288) From 6d32377ce4b272dc8ae67766d843412e4f2c81d3 Mon Sep 17 00:00:00 2001 From: BornToBeRoot <16019165+BornToBeRoot@users.noreply.github.com> Date: Mon, 29 Dec 2025 00:04:27 +0100 Subject: [PATCH 4/4] Update Dragablz --- Source/3rdparty/Dragablz | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/3rdparty/Dragablz b/Source/3rdparty/Dragablz index bb3801fbd3..c38f6d588d 160000 --- a/Source/3rdparty/Dragablz +++ b/Source/3rdparty/Dragablz @@ -1 +1 @@ -Subproject commit bb3801fbd33a979ed64b44b1945dbd9edca5c98d +Subproject commit c38f6d588dd4dabb6ab9e52029bf31b13171089b