This commit is contained in:
stasoid 2025-01-02 11:40:21 +00:00 committed by GitHub
commit 26d9fd3bcb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 145 additions and 5 deletions

View 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

View file

@ -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 {