]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcDhcp.c
Use default UNDI information if NII protocol not exists.
[mirror_edk2.git] / MdeModulePkg / Universal / Network / UefiPxeBcDxe / PxeBcDhcp.c
index 59bd95f13a98c37374b9a2f28a607dc931e2efbd..95f6e9d4df612920e8e462c52873fcdfd99e261d 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   Support for PxeBc dhcp functions.\r
   \r
-Copyright (c) 2007 - 2008, Intel Corporation.<BR>                                                         \r
+Copyright (c) 2007 - 2009, Intel Corporation.<BR>                                                         \r
 All rights reserved. This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
@@ -766,6 +766,7 @@ PxeBcSelectOffer (
 \r
 **/\r
 EFI_STATUS\r
+EFIAPI\r
 PxeBcDhcpCallBack (\r
   IN EFI_DHCP4_PROTOCOL                * This,\r
   IN VOID                              *Context,\r
@@ -1018,9 +1019,15 @@ PxeBcBuildDhcpOptions (
   OptList[Index]->OpCode  = PXEBC_PXE_DHCP4_TAG_UNDI;\r
   OptList[Index]->Length  = sizeof (PXEBC_DHCP4_OPTION_UNDI);\r
   OptEnt.Undi             = (PXEBC_DHCP4_OPTION_UNDI *) OptList[Index]->Data;\r
-  OptEnt.Undi->Type       = Private->Nii->Type;\r
-  OptEnt.Undi->MajorVer   = Private->Nii->MajorVer;\r
-  OptEnt.Undi->MinorVer   = Private->Nii->MinorVer;\r
+  if (Private->Nii != NULL) {\r
+    OptEnt.Undi->Type       = Private->Nii->Type;\r
+    OptEnt.Undi->MajorVer   = Private->Nii->MajorVer;\r
+    OptEnt.Undi->MinorVer   = Private->Nii->MinorVer;\r
+  } else {\r
+    OptEnt.Undi->Type       = DEFAULT_UNDI_TYPE;\r
+    OptEnt.Undi->MajorVer   = DEFAULT_UNDI_MAJOR;\r
+    OptEnt.Undi->MinorVer   = DEFAULT_UNDI_MINOR;\r
+  }\r
 \r
   Index++;\r
   OptList[Index] = GET_NEXT_DHCP_OPTION (OptList[Index - 1]);\r
@@ -1044,9 +1051,16 @@ PxeBcBuildDhcpOptions (
   OptEnt.Clid             = (PXEBC_DHCP4_OPTION_CLID *) OptList[Index]->Data;\r
   CopyMem (OptEnt.Clid, DEFAULT_CLASS_ID_DATA, sizeof (PXEBC_DHCP4_OPTION_CLID));\r
   CvtNum (SYS_ARCH, OptEnt.Clid->ArchitectureType, sizeof (OptEnt.Clid->ArchitectureType));\r
-  CopyMem (OptEnt.Clid->InterfaceName, Private->Nii->StringId, sizeof (OptEnt.Clid->InterfaceName));\r
-  CvtNum (Private->Nii->MajorVer, OptEnt.Clid->UndiMajor, sizeof (OptEnt.Clid->UndiMajor));\r
-  CvtNum (Private->Nii->MinorVer, OptEnt.Clid->UndiMinor, sizeof (OptEnt.Clid->UndiMinor));\r
+\r
+  if (Private->Nii != NULL) {\r
+    // \r
+    // If NII protocol exists, update DHCP option data\r
+    //\r
+    CopyMem (OptEnt.Clid->InterfaceName, Private->Nii->StringId, sizeof (OptEnt.Clid->InterfaceName));\r
+    CvtNum (Private->Nii->MajorVer, OptEnt.Clid->UndiMajor, sizeof (OptEnt.Clid->UndiMajor));\r
+    CvtNum (Private->Nii->MinorVer, OptEnt.Clid->UndiMinor, sizeof (OptEnt.Clid->UndiMinor));\r
+  }\r
+\r
   Index++;\r
 \r
   return Index;\r