mirror of
https://github.com/reactos/reactos.git
synced 2025-03-01 03:45:16 +00:00
[WS2_32] Add inet_pton, inet_ntop
This commit is contained in:
parent
56229b7a06
commit
454de56c6b
3 changed files with 146 additions and 2 deletions
|
@ -492,3 +492,143 @@ WSANtohs(IN SOCKET s,
|
|||
return SOCKET_ERROR;
|
||||
}
|
||||
|
||||
PCSTR
|
||||
WSAAPI
|
||||
inet_ntop(
|
||||
_In_ INT Family,
|
||||
_In_ const VOID *pAddr,
|
||||
_Out_writes_(StringBufSize) PSTR pStringBuf,
|
||||
_In_ size_t StringBufSize)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
ULONG BufSize = StringBufSize;
|
||||
|
||||
switch (Family)
|
||||
{
|
||||
case AF_INET:
|
||||
Status = RtlIpv4AddressToStringExA(pAddr, 0, pStringBuf, &BufSize);
|
||||
break;
|
||||
case AF_INET6:
|
||||
Status = RtlIpv6AddressToStringExA(pAddr, 0, 0, pStringBuf, &BufSize);
|
||||
break;
|
||||
default:
|
||||
SetLastError(WSAEAFNOSUPPORT);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastError(WSAEINVAL);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return pStringBuf;
|
||||
}
|
||||
|
||||
PCWSTR
|
||||
WSAAPI
|
||||
InetNtopW(
|
||||
_In_ INT Family,
|
||||
_In_ const VOID *pAddr,
|
||||
_Out_writes_(StringBufSize) PWSTR pStringBuf,
|
||||
_In_ size_t StringBufSize)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
ULONG BufSize = StringBufSize;
|
||||
|
||||
switch (Family)
|
||||
{
|
||||
case AF_INET:
|
||||
Status = RtlIpv4AddressToStringExW(pAddr, 0, pStringBuf, &BufSize);
|
||||
break;
|
||||
case AF_INET6:
|
||||
Status = RtlIpv6AddressToStringExW(pAddr, 0, 0, pStringBuf, &BufSize);
|
||||
break;
|
||||
default:
|
||||
SetLastError(WSAEAFNOSUPPORT);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastError(WSAEINVAL);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return pStringBuf;
|
||||
}
|
||||
|
||||
INT
|
||||
WSAAPI
|
||||
inet_pton(
|
||||
_In_ INT Family,
|
||||
_In_ PCSTR pszAddrString,
|
||||
_Out_writes_bytes_(sizeof(IN_ADDR6)) PVOID pAddrBuf)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
PCSTR ch;
|
||||
|
||||
if (!pszAddrString || !pAddrBuf)
|
||||
{
|
||||
SetLastError(WSAEFAULT);
|
||||
return -1;
|
||||
}
|
||||
|
||||
switch (Family)
|
||||
{
|
||||
case AF_INET:
|
||||
Status = RtlIpv4StringToAddressA(pszAddrString, TRUE, &ch, pAddrBuf);
|
||||
break;
|
||||
case AF_INET6:
|
||||
Status = RtlIpv6StringToAddressA(pszAddrString, &ch, pAddrBuf);
|
||||
break;
|
||||
default:
|
||||
SetLastError(WSAEAFNOSUPPORT);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!NT_SUCCESS(Status) || (*ch != 0))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
INT
|
||||
WSAAPI
|
||||
InetPtonW(
|
||||
_In_ INT Family,
|
||||
_In_ PCWSTR pszAddrString,
|
||||
_Out_writes_bytes_(sizeof(IN_ADDR6)) PVOID pAddrBuf)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
PCWSTR ch;
|
||||
|
||||
if (!pszAddrString || !pAddrBuf)
|
||||
{
|
||||
SetLastError(WSAEFAULT);
|
||||
return -1;
|
||||
}
|
||||
|
||||
switch (Family)
|
||||
{
|
||||
case AF_INET:
|
||||
Status = RtlIpv4StringToAddressW(pszAddrString, TRUE, &ch, pAddrBuf);
|
||||
break;
|
||||
case AF_INET6:
|
||||
Status = RtlIpv6StringToAddressW(pszAddrString, &ch, pAddrBuf);
|
||||
break;
|
||||
default:
|
||||
SetLastError(WSAEAFNOSUPPORT);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!NT_SUCCESS(Status) || (*ch != 0))
|
||||
{
|
||||
SetLastError(WSAEINVAL); /* Only unicode version sets this error */
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -115,3 +115,7 @@
|
|||
23 stdcall socket(long long long)
|
||||
@ stdcall GetAddrInfoW(wstr wstr ptr ptr)
|
||||
@ stdcall GetNameInfoW(ptr long wstr long wstr long long)
|
||||
@ stdcall -version=0x600+ inet_ntop(long ptr ptr long)
|
||||
@ stdcall -version=0x600+ InetNtopW(long ptr ptr long)
|
||||
@ stdcall -version=0x600+ inet_pton(long str ptr)
|
||||
@ stdcall -version=0x600+ InetPtonW(long wstr ptr)
|
||||
|
|
|
@ -451,7 +451,7 @@ PCSTR
|
|||
WSAAPI
|
||||
inet_ntop(
|
||||
_In_ INT Family,
|
||||
_In_ PVOID pAddr,
|
||||
_In_ const VOID *pAddr,
|
||||
_Out_writes_(StringBufSize) PSTR pStringBuf,
|
||||
_In_ size_t StringBufSize);
|
||||
|
||||
|
@ -459,7 +459,7 @@ PCWSTR
|
|||
WSAAPI
|
||||
InetNtopW(
|
||||
_In_ INT Family,
|
||||
_In_ PVOID pAddr,
|
||||
_In_ const VOID *pAddr,
|
||||
_Out_writes_(StringBufSize) PWSTR pStringBuf,
|
||||
_In_ size_t StringBufSize);
|
||||
|
||||
|
|
Loading…
Reference in a new issue