https://git.reactos.org/?p=reactos.git;a=commitdiff;h=89b685007a4265d764845…
commit 89b685007a4265d764845e42afa5e8b20894d9be
Author: Hervé Poussineau <hpoussin(a)reactos.org>
AuthorDate: Wed Dec 13 19:56:52 2023 +0100
Commit: Hervé Poussineau <hpoussin(a)reactos.org>
CommitDate: Sat Jan 13 15:23:46 2024 +0100
[TCPIP] Call netif_set_link_up/netif_set_link_down after link status change
- Update TCP cached information only after updating adapter information
(so that TCPUpdateInterfaceIPInformation/TCPUpdateInterfaceLinkStatus
gets new status)
- Call netif_set_link_up/netif_set_link_down in TCPUpdateInterfaceLinkStatus
This fixes a lwIP requirement:
2007-07-13 Jared Grubb (integrated by Frédéric Bernon)
* [...] Be carefull for port maintainers to add the NETIF_FLAG_LINK_UP
flag (like in ethernetif.c) if you want to be sure to be compatible with
future changes...
---
drivers/network/tcpip/datalink/lan.c | 8 ++++----
drivers/network/tcpip/ip/transport/tcp/if.c | 3 +--
2 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/drivers/network/tcpip/datalink/lan.c b/drivers/network/tcpip/datalink/lan.c
index ccd0f555ef5..1da4e2129d6 100644
--- a/drivers/network/tcpip/datalink/lan.c
+++ b/drivers/network/tcpip/datalink/lan.c
@@ -750,10 +750,6 @@ BOOLEAN ReconfigureAdapter(PRECONFIGURE_CONTEXT Context)
Context->Adapter->CompletingReset = FALSE;
- /* Update the IP and link status information cached in TCP */
- TCPUpdateInterfaceIPInformation(Interface);
- TCPUpdateInterfaceLinkStatus(Interface);
-
if (Context->State == LAN_STATE_STARTED)
{
/* Get maximum link speed */
@@ -791,6 +787,10 @@ BOOLEAN ReconfigureAdapter(PRECONFIGURE_CONTEXT Context)
Adapter->State = Context->State;
+ /* Update the IP and link status information cached in TCP */
+ TCPUpdateInterfaceIPInformation(Interface);
+ TCPUpdateInterfaceLinkStatus(Interface);
+
return TRUE;
}
diff --git a/drivers/network/tcpip/ip/transport/tcp/if.c
b/drivers/network/tcpip/ip/transport/tcp/if.c
index aba55d23abd..e69c3667fc3 100644
--- a/drivers/network/tcpip/ip/transport/tcp/if.c
+++ b/drivers/network/tcpip/ip/transport/tcp/if.c
@@ -6,6 +6,7 @@
#include "lwip/ip.h"
#include "lwip/api.h"
#include "lwip/tcpip.h"
+#include <ipifcons.h>
err_t
TCPSendDataCallback(struct netif *netif, struct pbuf *p, struct ip_addr *dest)
@@ -80,7 +81,6 @@ TCPSendDataCallback(struct netif *netif, struct pbuf *p, struct ip_addr
*dest)
VOID
TCPUpdateInterfaceLinkStatus(PIP_INTERFACE IF)
{
-#if 0
ULONG OperationalStatus;
GetInterfaceConnectionStatus(IF, &OperationalStatus);
@@ -89,7 +89,6 @@ TCPUpdateInterfaceLinkStatus(PIP_INTERFACE IF)
netif_set_link_up(IF->TCPContext);
else
netif_set_link_down(IF->TCPContext);
-#endif
}
err_t