Merge 0c76fc27da
into 3eefa464ee
This commit is contained in:
commit
26d9fd3bcb
2 changed files with 145 additions and 5 deletions
136
Libraries/LibCore/SockAddr-Win.h
Normal file
136
Libraries/LibCore/SockAddr-Win.h
Normal file
|
@ -0,0 +1,136 @@
|
|||
/*
|
||||
* Copyright (c) 2024, stasoid <stasoid@yahoo.com>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
typedef int INT;
|
||||
typedef unsigned long ULONG;
|
||||
typedef unsigned short USHORT;
|
||||
typedef char CHAR;
|
||||
typedef unsigned char UCHAR;
|
||||
typedef const CHAR* PCSTR;
|
||||
typedef USHORT ADDRESS_FAMILY;
|
||||
|
||||
#define WINAPI_FAMILY_PARTITION(x) 1
|
||||
#define FAR
|
||||
#include <inaddr.h>
|
||||
#undef WINAPI_FAMILY_PARTITION
|
||||
|
||||
#include <afunix.h>
|
||||
|
||||
#define AF_UNSPEC 0
|
||||
#define AF_LOCAL 1 // AF_UNIX
|
||||
#define AF_INET 2
|
||||
#define AF_INET6 23
|
||||
|
||||
#define SOCK_STREAM 1
|
||||
#define SOCK_DGRAM 2
|
||||
|
||||
#define INADDR_LOOPBACK 0x7f000001
|
||||
|
||||
enum IPPROTO {
|
||||
IPPROTO_TCP = 6
|
||||
};
|
||||
|
||||
#define INET_ADDRSTRLEN 22
|
||||
#define INET6_ADDRSTRLEN 65
|
||||
|
||||
struct in6_addr {
|
||||
union {
|
||||
UCHAR Byte[16];
|
||||
USHORT Word[8];
|
||||
} u;
|
||||
};
|
||||
|
||||
struct SCOPE_ID {
|
||||
union {
|
||||
struct {
|
||||
ULONG Zone : 28;
|
||||
ULONG Level : 4;
|
||||
} u;
|
||||
ULONG Value;
|
||||
} u;
|
||||
};
|
||||
|
||||
struct sockaddr_in6 {
|
||||
ADDRESS_FAMILY sin6_family;
|
||||
USHORT sin6_port;
|
||||
ULONG sin6_flowinfo;
|
||||
in6_addr sin6_addr;
|
||||
union {
|
||||
ULONG sin6_scope_id;
|
||||
SCOPE_ID sin6_scope_struct;
|
||||
};
|
||||
};
|
||||
|
||||
struct sockaddr_in {
|
||||
ADDRESS_FAMILY sin_family;
|
||||
USHORT sin_port;
|
||||
IN_ADDR sin_addr;
|
||||
CHAR sin_zero[8];
|
||||
};
|
||||
|
||||
struct sockaddr {
|
||||
ADDRESS_FAMILY sa_family;
|
||||
CHAR sa_data[14];
|
||||
};
|
||||
using SOCKADDR = sockaddr;
|
||||
using LPSOCKADDR = sockaddr*;
|
||||
|
||||
struct addrinfo {
|
||||
int ai_flags;
|
||||
int ai_family;
|
||||
int ai_socktype;
|
||||
int ai_protocol;
|
||||
size_t ai_addrlen;
|
||||
char* ai_canonname;
|
||||
sockaddr* ai_addr;
|
||||
addrinfo* ai_next;
|
||||
};
|
||||
using ADDRINFOA = addrinfo;
|
||||
using PADDRINFOA = addrinfo*;
|
||||
|
||||
struct SOCKET_ADDRESS {
|
||||
sockaddr* lpSockaddr;
|
||||
INT iSockaddrLength;
|
||||
};
|
||||
|
||||
struct SOCKET_ADDRESS_LIST {
|
||||
INT iAddressCount;
|
||||
SOCKET_ADDRESS Address[1];
|
||||
};
|
||||
using PSOCKET_ADDRESS_LIST = SOCKET_ADDRESS_LIST*;
|
||||
|
||||
struct CSADDR_INFO {
|
||||
SOCKET_ADDRESS LocalAddr;
|
||||
SOCKET_ADDRESS RemoteAddr;
|
||||
INT iSocketType;
|
||||
INT iProtocol;
|
||||
};
|
||||
using LPCSADDR_INFO = CSADDR_INFO*;
|
||||
|
||||
struct WSABUF {
|
||||
ULONG len;
|
||||
CHAR* buf;
|
||||
};
|
||||
using LPWSABUF = WSABUF*;
|
||||
|
||||
struct WSAMSG {
|
||||
LPSOCKADDR name;
|
||||
INT namelen;
|
||||
LPWSABUF lpBuffers;
|
||||
ULONG dwBufferCount;
|
||||
WSABUF Control;
|
||||
ULONG dwFlags;
|
||||
};
|
||||
using LPWSAMSG = WSAMSG*;
|
||||
|
||||
extern "C" __stdcall INT getaddrinfo(PCSTR pNodeName, PCSTR pServiceName, const ADDRINFOA* pHints, PADDRINFOA* ppResult);
|
||||
extern "C" __stdcall void freeaddrinfo(PADDRINFOA pAddrInfo);
|
||||
extern "C" __stdcall PCSTR inet_ntop(int Family, void const* pAddr, char* pStringBuf, size_t StringBufSize);
|
||||
extern "C" __stdcall USHORT htons(USHORT hostshort);
|
||||
|
||||
#define _WS2DEF_ // don't include ws2def.h
|
|
@ -9,11 +9,15 @@
|
|||
|
||||
#include <AK/IPv4Address.h>
|
||||
#include <AK/IPv6Address.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <netinet/in.h>
|
||||
#include <string.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/un.h>
|
||||
|
||||
#ifndef AK_OS_WINDOWS
|
||||
# include <arpa/inet.h>
|
||||
# include <netinet/in.h>
|
||||
# include <sys/socket.h>
|
||||
# include <sys/un.h>
|
||||
#else
|
||||
# include "SockAddr-Win.h"
|
||||
#endif
|
||||
|
||||
namespace Core {
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue