Index: lib/rtl/network.c =================================================================== --- lib/rtl/network.c (revision 66266) +++ lib/rtl/network.c (working copy) @@ -337,7 +337,7 @@ } /* -* @unimplemented +* @implemented */ NTSTATUS NTAPI @@ -346,8 +346,25 @@ OUT struct in_addr *Address, OUT PUSHORT Port) { - UNIMPLEMENTED; - return STATUS_NOT_IMPLEMENTED; + LPCWSTR CurrentChar; + if( !AddressString || !Address || !Port || !NT_SUCCESS(RtlIpv4StringToAddressW( AddressString, Strict, &CurrentChar, Address ) ) ) + return STATUS_INVALID_PARAMETER; + if( !*CurrentChar ) + { + *Port = 0; + return STATUS_SUCCESS; + } + if( *CurrentChar != ':' ) + return STATUS_INVALID_PARAMETER; + ++CurrentChar; + + DWORD convertedPort = 0; + NTSTATUS Status = RtlpStringToUlong(CurrentChar, FALSE, &CurrentChar, &convertedPort); + + if (!NT_SUCCESS(Status) || *CurrentChar || !convertedPort || convertedPort > 0xffff) + return STATUS_INVALID_PARAMETER; + *Port = WN2H(convertedPort); + return STATUS_SUCCESS; } /*