From 05fa675d5abfe7ff72987a8dff9299cfbc570db8 Mon Sep 17 00:00:00 2001 From: Yihong Wu Date: Fri, 16 Sep 2022 17:25:11 +0900 Subject: [PATCH] Exclude inactive routes in Windows routing management --- src/Mayaqua/Network.c | 11 ++++++++++- src/Mayaqua/Network.h | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/Mayaqua/Network.c b/src/Mayaqua/Network.c index 83c4d283..b0765976 100644 --- a/src/Mayaqua/Network.c +++ b/src/Mayaqua/Network.c @@ -9414,7 +9414,15 @@ RETRY: { e = ZeroMallocFast(sizeof(ROUTE_ENTRY)); Win32IpForwardRow2ToRouteEntry(e, &p->Table[i]); - Add(o, e); + + if (e->Active) + { + Add(o, e); + } + else + { + FreeRouteEntry(e); + } } FreeMibTable(p); @@ -9573,6 +9581,7 @@ void Win32IpForwardRow2ToRouteEntry(ROUTE_ENTRY *entry, void *ip_forward_row) { entry->IfMetric = p->Metric; entry->Metric = r->Metric + p->Metric; + entry->Active = p->Connected; } else { diff --git a/src/Mayaqua/Network.h b/src/Mayaqua/Network.h index daa9464f..c4a04391 100644 --- a/src/Mayaqua/Network.h +++ b/src/Mayaqua/Network.h @@ -293,6 +293,7 @@ struct ROUTE_ENTRY UINT IfMetric; UINT InterfaceID; UINT64 InnerScore; + bool Active; }; // Routing table