[ros-diffs] [cgutman] 39995: - Add support for manually setting the adapter's network address

cgutman at svn.reactos.org cgutman at svn.reactos.org
Fri Mar 13 00:29:24 CET 2009


Author: cgutman
Date: Fri Mar 13 02:29:23 2009
New Revision: 39995

URL: http://svn.reactos.org/svn/reactos?rev=39995&view=rev
Log:
 - Add support for manually setting the adapter's network address

Modified:
    branches/aicom-network-fixes/drivers/network/dd/pcnet/pcnet.c

Modified: branches/aicom-network-fixes/drivers/network/dd/pcnet/pcnet.c
URL: http://svn.reactos.org/svn/reactos/branches/aicom-network-fixes/drivers/network/dd/pcnet/pcnet.c?rev=39995&r1=39994&r2=39995&view=diff
==============================================================================
--- branches/aicom-network-fixes/drivers/network/dd/pcnet/pcnet.c [iso-8859-1] (original)
+++ branches/aicom-network-fixes/drivers/network/dd/pcnet/pcnet.c [iso-8859-1] Fri Mar 13 02:29:23 2009
@@ -830,6 +830,9 @@
   PADAPTER Adapter = 0;
   NDIS_STATUS Status = NDIS_STATUS_FAILURE;
   BOOLEAN InterruptRegistered = FALSE;
+  NDIS_HANDLE ConfigurationHandle;
+  UINT *RegNetworkAddress = 0;
+  UINT RegNetworkAddressLength = 0;
 
   ASSERT_IRQL_EQUAL(PASSIVE_LEVEL);
 
@@ -923,6 +926,25 @@
 
       /* set up the initialization block */
       MiPrepareInitializationBlock(Adapter);
+
+      /* see if someone set a network address manually */
+      NdisOpenConfiguration(&Status, &ConfigurationHandle, WrapperConfigurationContext);
+      if (Status == NDIS_STATUS_SUCCESS)
+      {
+         NdisReadNetworkAddress(&Status, (PVOID *)&RegNetworkAddress, &RegNetworkAddressLength, ConfigurationHandle);
+         if(Status == NDIS_STATUS_SUCCESS && RegNetworkAddressLength == 6)
+         {
+             int i;
+             DPRINT("NdisReadNetworkAddress returned successfully, address %x:%x:%x:%x:%x:%x\n",
+                     RegNetworkAddress[0], RegNetworkAddress[1], RegNetworkAddress[2], RegNetworkAddress[3],
+                     RegNetworkAddress[4], RegNetworkAddress[5]);
+
+             for(i = 0; i < 6; i++)
+                 Adapter->InitializationBlockVirt->PADR[i] = RegNetworkAddress[i];
+         }
+
+         NdisCloseConfiguration(ConfigurationHandle);
+      }
 
       DPRINT("Interrupt registered successfully\n");
 



More information about the Ros-diffs mailing list