]> git.proxmox.com Git - mirror_edk2.git/blobdiff - StdLib/EfiSocketLib/Tcp4.c
Choose a better subnet mask value for the IPv4 address.
[mirror_edk2.git] / StdLib / EfiSocketLib / Tcp4.c
index e7924fa429bc713d3dd7ff7c85903bf20941bd99..34e60e2a7f7a951a3b4ee02a084e2f7af9f74938 100644 (file)
@@ -790,6 +790,8 @@ EslTcp4Listen (
     //  Mark the socket as configured\r
     //\r
     pSocket->bConfigured = TRUE;\r
+    Status = EFI_SUCCESS;\r
+    pSocket->errno = 0;\r
 \r
     //\r
     //  All done\r
@@ -1155,9 +1157,9 @@ EslTcp4LocalAddressSet (
     }\r
     else {\r
       pAccessPoint->SubnetMask.Addr[0] = 0xff;\r
-      pAccessPoint->SubnetMask.Addr[1] = 0xff;\r
-      pAccessPoint->SubnetMask.Addr[2] = 0xff;\r
-      pAccessPoint->SubnetMask.Addr[3] = 0xff;\r
+      pAccessPoint->SubnetMask.Addr[1] = ( 128 <= pAccessPoint->StationAddress.Addr[0]) ? 0xff : 0;\r
+      pAccessPoint->SubnetMask.Addr[2] = ( 192 <= pAccessPoint->StationAddress.Addr[0]) ? 0xff : 0;\r
+      pAccessPoint->SubnetMask.Addr[3] = ( 224 <= pAccessPoint->StationAddress.Addr[0]) ? 0xff : 0;\r
     }\r
 \r
     //\r