Removed a useless temporary from router setting.
Use option 6, DHO_DOMAIN_NAME_SERVERS to get name servers from dhcp
server.
Fix wrong variable in nameserver setting.
Router and Nameserver now correctly acquired from DHCP.
Modified: trunk/reactos/subsys/system/dhcp/dhclient.c
_____
Modified: trunk/reactos/subsys/system/dhcp/dhclient.c
--- trunk/reactos/subsys/system/dhcp/dhclient.c 2005-04-22 12:43:16 UTC
(rev 14740)
+++ trunk/reactos/subsys/system/dhcp/dhclient.c 2005-04-22 12:46:27 UTC
(rev 14741)
@@ -437,12 +437,12 @@
}
void set_name_servers( struct client_lease *new_lease ) {
- if( new_lease->options[DHO_NAME_SERVERS].len ) {
+ if( new_lease->options[DHO_DOMAIN_NAME_SERVERS].len ) {
HKEY RegKey;
struct iaddr nameserver;
char *nsbuf;
int i, addrs =
- new_lease->options[DHO_NAME_SERVERS].len / sizeof(ULONG);
+ new_lease->options[DHO_DOMAIN_NAME_SERVERS].len /
sizeof(ULONG);
nsbuf = malloc( addrs * sizeof(IP_ADDRESS_STRING) );
nsbuf[0] = 0;
@@ -452,9 +452,10 @@
"SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters",
0, KEY_WRITE, &RegKey ) ) {
for( i = 0; i < addrs; i++ ) {
+ nameserver.len = sizeof(ULONG);
memcpy( nameserver.iabuf,
- new_lease->options[DHO_NAME_SERVERS].data +
- (addrs * sizeof(ULONG)), sizeof(ULONG) );
+
new_lease->options[DHO_DOMAIN_NAME_SERVERS].data +
+ (i * sizeof(ULONG)), sizeof(ULONG) );
strcat( nsbuf, piaddr(nameserver) );
if( i != addrs-1 ) strcat( nsbuf, "," );
}
@@ -475,6 +476,7 @@
if( Adapter->NteContext )
DeleteIPAddress( Adapter->NteContext );
+ /* Set up our default router if we got one from the DHCP server */
if( new_lease->options[DHO_SUBNET_MASK].len ) {
NTSTATUS Status;
@@ -496,22 +498,19 @@
if( new_lease->options[DHO_ROUTERS].len ) {
MIB_IPFORWARDROW RouterMib;
NTSTATUS Status;
- struct iaddr router;
- memcpy( netmask.iabuf,
- new_lease->options[DHO_ROUTERS].data,
- new_lease->options[DHO_ROUTERS].len );
-
RouterMib.dwForwardDest = 0; /* Default route */
RouterMib.dwForwardMask = 0;
RouterMib.dwForwardMetric1 = 1;
if( old_default_route ) {
+ /* If we set a default route before, delete it before
continuing */
RouterMib.dwForwardDest = old_default_route;
DeleteIpForwardEntry( &RouterMib );
}
- RouterMib.dwForwardNextHop = *((ULONG*)router.iabuf);
+ RouterMib.dwForwardNextHop =
+ *((ULONG*)new_lease->options[DHO_ROUTERS].data);
Status = CreateIpForwardEntry( &RouterMib );