- CopyMem (\r
- ((EFI_IPv4_ADDRESS *) &ServerIp),\r
- &((DHCPV4_OP_SERVER_IP *) DhcpRxBuf->OpAdds.PktOptAdds[OP_DHCP_SERVER_IP_IX - 1])->Ip,\r
- sizeof (EFI_IPv4_ADDRESS)\r
- );\r
+ ServerIp.Addr[0] = DhcpRxBuf->u.Dhcpv4.siaddr;\r
+ if (ServerIp.Addr[0] == 0) {\r
+ //\r
+ // next server address is NULL, use option 54.\r
+ //\r
+ CopyMem (\r
+ ((EFI_IPv4_ADDRESS *) &ServerIp),\r
+ &((DHCPV4_OP_SERVER_IP *) DhcpRxBuf->OpAdds.PktOptAdds[OP_DHCP_SERVER_IP_IX - 1])->Ip,\r
+ sizeof (EFI_IPv4_ADDRESS)\r
+ );\r
+ }\r