mirror of
https://github.com/reactos/reactos.git
synced 2025-07-30 16:12:02 +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;
|
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)
|
23 stdcall socket(long long long)
|
||||||
@ stdcall GetAddrInfoW(wstr wstr ptr ptr)
|
@ stdcall GetAddrInfoW(wstr wstr ptr ptr)
|
||||||
@ stdcall GetNameInfoW(ptr long wstr long wstr long long)
|
@ 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
|
WSAAPI
|
||||||
inet_ntop(
|
inet_ntop(
|
||||||
_In_ INT Family,
|
_In_ INT Family,
|
||||||
_In_ PVOID pAddr,
|
_In_ const VOID *pAddr,
|
||||||
_Out_writes_(StringBufSize) PSTR pStringBuf,
|
_Out_writes_(StringBufSize) PSTR pStringBuf,
|
||||||
_In_ size_t StringBufSize);
|
_In_ size_t StringBufSize);
|
||||||
|
|
||||||
|
@ -459,7 +459,7 @@ PCWSTR
|
||||||
WSAAPI
|
WSAAPI
|
||||||
InetNtopW(
|
InetNtopW(
|
||||||
_In_ INT Family,
|
_In_ INT Family,
|
||||||
_In_ PVOID pAddr,
|
_In_ const VOID *pAddr,
|
||||||
_Out_writes_(StringBufSize) PWSTR pStringBuf,
|
_Out_writes_(StringBufSize) PWSTR pStringBuf,
|
||||||
_In_ size_t StringBufSize);
|
_In_ size_t StringBufSize);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue