From 0bd6afd1a8932d182d7a24943aeb493c2b338fa8 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sat, 18 Apr 2026 16:51:17 +0200 Subject: [PATCH] [DHCPCSVC] Set the AddressType value for network interfaces AddressType 0: Static address, DHCP provided address or static address from alternate configuration AddressType 1: Automatic Private IP Address (APIPA) --- base/services/dhcpcsvc/dhcp/dhclient.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/base/services/dhcpcsvc/dhcp/dhclient.c b/base/services/dhcpcsvc/dhcp/dhclient.c index e8127db5b93..97e9db7b7fc 100644 --- a/base/services/dhcpcsvc/dhcp/dhclient.c +++ b/base/services/dhcpcsvc/dhcp/dhclient.c @@ -605,6 +605,8 @@ void setup_adapter( PDHCP_ADAPTER Adapter, struct client_lease *new_lease ) { RegSetValueExA(hkey, "LeaseTerminatesTime", 0, REG_DWORD, (LPBYTE)&new_lease->expiry, sizeof(DWORD)); RegSetValueExA(hkey, "T1", 0, REG_DWORD, (LPBYTE)&new_lease->renewal, sizeof(DWORD)); RegSetValueExA(hkey, "T2", 0, REG_DWORD, (LPBYTE)&new_lease->rebind, sizeof(DWORD)); + DWORD dwAddressType = 0; + RegSetValueExA(hkey, "AddressType", 0, REG_DWORD, (LPBYTE)&dwAddressType, sizeof(DWORD)); } if( !NT_SUCCESS(Status) ) @@ -684,6 +686,8 @@ reset_adapter( PDHCP_ADAPTER Adapter) { RegSetValueExA(hkey, "T1", 0, REG_DWORD, (LPBYTE)&new_time, sizeof(DWORD)); new_time = cur_time + lease - (lease / 8); RegSetValueExA(hkey, "T2", 0, REG_DWORD, (LPBYTE)&new_time, sizeof(DWORD)); + DWORD dwAddressType = 0; + RegSetValueExA(hkey, "AddressType", 0, REG_DWORD, (LPBYTE)&dwAddressType, sizeof(DWORD)); } if( Adapter->RouterMib.dwForwardNextHop ) { @@ -1230,6 +1234,7 @@ state_panic(void *ipp) DWORD lease = 0; time_t cur_time, never_time = 0x7FFFFFFF; struct in_addr addr; + DWORD dwAddressType = 0; note("No DHCPOFFERS received."); @@ -1327,6 +1332,7 @@ state_panic(void *ipp) RegSetValueExA(hKey, "LeaseTerminatesTime", 0, REG_DWORD, (LPBYTE)&never_time, sizeof(DWORD)); RegSetValueExA(hKey, "T1", 0, REG_DWORD, (LPBYTE)&cur_time, sizeof(DWORD)); RegSetValueExA(hKey, "T2", 0, REG_DWORD, (LPBYTE)&cur_time, sizeof(DWORD)); + RegSetValueExA(hKey, "AddressType", 0, REG_DWORD, (LPBYTE)&dwAddressType, sizeof(DWORD)); } } else @@ -1383,6 +1389,8 @@ state_panic(void *ipp) RegSetValueExA(hKey, "LeaseTerminatesTime", 0, REG_DWORD, (LPBYTE)&never_time, sizeof(DWORD)); RegSetValueExA(hKey, "T1", 0, REG_DWORD, (LPBYTE)&cur_time, sizeof(DWORD)); RegSetValueExA(hKey, "T2", 0, REG_DWORD, (LPBYTE)&cur_time, sizeof(DWORD)); + dwAddressType = 1; + RegSetValueExA(hKey, "AddressType", 0, REG_DWORD, (LPBYTE)&dwAddressType, sizeof(DWORD)); } goto done;