zig/lib/std / os/windows/ws2_32.zig

const std = @import("../../std.zig");
const assert = std.debug.assert;
const windows = std.os.windows;

const WINAPI = windows.WINAPI;
const OVERLAPPED = windows.OVERLAPPED;
const WORD = windows.WORD;
const DWORD = windows.DWORD;
const GUID = windows.GUID;
const USHORT = windows.USHORT;
const WCHAR = windows.WCHAR;
const BOOL = windows.BOOL;
const HANDLE = windows.HANDLE;
const timeval = windows.timeval;
const HWND = windows.HWND;
const INT = windows.INT;
const SHORT = windows.SHORT;
const CHAR = windows.CHAR;
const ULONG = windows.ULONG;
const LPARAM = windows.LPARAM;
const FARPROC = windows.FARPROC;

SOCKET

pub const SOCKET = *opaque {};

INVALID_SOCKET

pub const INVALID_SOCKET = @as(SOCKET, @ptrFromInt(~@as(usize, 0)));

GROUP

pub const GROUP = u32;

ADDRESS_FAMILY

pub const ADDRESS_FAMILY = u16;

WSAEVENT

pub const WSAEVENT = HANDLE;

// Microsoft use the signed c_int for this, but it should never be negative

socklen_t

pub const socklen_t = u32;

LM_HB_Extension

pub const LM_HB_Extension = 128;

LM_HB1_PnP

pub const LM_HB1_PnP = 1;

LM_HB1_PDA_Palmtop

pub const LM_HB1_PDA_Palmtop = 2;

LM_HB1_Computer

pub const LM_HB1_Computer = 4;

LM_HB1_Printer

pub const LM_HB1_Printer = 8;

LM_HB1_Modem

pub const LM_HB1_Modem = 16;

LM_HB1_Fax

pub const LM_HB1_Fax = 32;

LM_HB1_LANAccess

pub const LM_HB1_LANAccess = 64;

LM_HB2_Telephony

pub const LM_HB2_Telephony = 1;

LM_HB2_FileServer

pub const LM_HB2_FileServer = 2;

ATMPROTO_AALUSER

pub const ATMPROTO_AALUSER = 0;

ATMPROTO_AAL1

pub const ATMPROTO_AAL1 = 1;

ATMPROTO_AAL2

pub const ATMPROTO_AAL2 = 2;

ATMPROTO_AAL34

pub const ATMPROTO_AAL34 = 3;

ATMPROTO_AAL5

pub const ATMPROTO_AAL5 = 5;

SAP_FIELD_ABSENT

pub const SAP_FIELD_ABSENT = 4294967294;

SAP_FIELD_ANY

pub const SAP_FIELD_ANY = 4294967295;

SAP_FIELD_ANY_AESA_SEL

pub const SAP_FIELD_ANY_AESA_SEL = 4294967290;

SAP_FIELD_ANY_AESA_REST

pub const SAP_FIELD_ANY_AESA_REST = 4294967291;

ATM_E164

pub const ATM_E164 = 1;

ATM_NSAP

pub const ATM_NSAP = 2;

ATM_AESA

pub const ATM_AESA = 2;

ATM_ADDR_SIZE

pub const ATM_ADDR_SIZE = 20;

BLLI_L2_ISO_1745

pub const BLLI_L2_ISO_1745 = 1;

BLLI_L2_Q921

pub const BLLI_L2_Q921 = 2;

BLLI_L2_X25L

pub const BLLI_L2_X25L = 6;

BLLI_L2_X25M

pub const BLLI_L2_X25M = 7;

BLLI_L2_ELAPB

pub const BLLI_L2_ELAPB = 8;

BLLI_L2_HDLC_ARM

pub const BLLI_L2_HDLC_ARM = 9;

BLLI_L2_HDLC_NRM

pub const BLLI_L2_HDLC_NRM = 10;

BLLI_L2_HDLC_ABM

pub const BLLI_L2_HDLC_ABM = 11;

BLLI_L2_LLC

pub const BLLI_L2_LLC = 12;

BLLI_L2_X75

pub const BLLI_L2_X75 = 13;

BLLI_L2_Q922

pub const BLLI_L2_Q922 = 14;

BLLI_L2_USER_SPECIFIED

pub const BLLI_L2_USER_SPECIFIED = 16;

BLLI_L2_ISO_7776

pub const BLLI_L2_ISO_7776 = 17;

BLLI_L3_X25

pub const BLLI_L3_X25 = 6;

BLLI_L3_ISO_8208

pub const BLLI_L3_ISO_8208 = 7;

BLLI_L3_X223

pub const BLLI_L3_X223 = 8;

BLLI_L3_SIO_8473

pub const BLLI_L3_SIO_8473 = 9;

BLLI_L3_T70

pub const BLLI_L3_T70 = 10;

BLLI_L3_ISO_TR9577

pub const BLLI_L3_ISO_TR9577 = 11;

BLLI_L3_USER_SPECIFIED

pub const BLLI_L3_USER_SPECIFIED = 16;

BLLI_L3_IPI_SNAP

pub const BLLI_L3_IPI_SNAP = 128;

BLLI_L3_IPI_IP

pub const BLLI_L3_IPI_IP = 204;

BHLI_ISO

pub const BHLI_ISO = 0;

BHLI_UserSpecific

pub const BHLI_UserSpecific = 1;

BHLI_HighLayerProfile

pub const BHLI_HighLayerProfile = 2;

BHLI_VendorSpecificAppId

pub const BHLI_VendorSpecificAppId = 3;

AAL5_MODE_MESSAGE

pub const AAL5_MODE_MESSAGE = 1;

AAL5_MODE_STREAMING

pub const AAL5_MODE_STREAMING = 2;

AAL5_SSCS_NULL

pub const AAL5_SSCS_NULL = 0;

AAL5_SSCS_SSCOP_ASSURED

pub const AAL5_SSCS_SSCOP_ASSURED = 1;

AAL5_SSCS_SSCOP_NON_ASSURED

pub const AAL5_SSCS_SSCOP_NON_ASSURED = 2;

AAL5_SSCS_FRAME_RELAY

pub const AAL5_SSCS_FRAME_RELAY = 4;

BCOB_A

pub const BCOB_A = 1;

BCOB_C

pub const BCOB_C = 3;

BCOB_X

pub const BCOB_X = 16;

TT_NOIND

pub const TT_NOIND = 0;

TT_CBR

pub const TT_CBR = 4;

TT_VBR

pub const TT_VBR = 8;

TR_NOIND

pub const TR_NOIND = 0;

TR_END_TO_END

pub const TR_END_TO_END = 1;

TR_NO_END_TO_END

pub const TR_NO_END_TO_END = 2;

CLIP_NOT

pub const CLIP_NOT = 0;

CLIP_SUS

pub const CLIP_SUS = 32;

UP_P2P

pub const UP_P2P = 0;

UP_P2MP

pub const UP_P2MP = 1;

BLLI_L2_MODE_NORMAL

pub const BLLI_L2_MODE_NORMAL = 64;

BLLI_L2_MODE_EXT

pub const BLLI_L2_MODE_EXT = 128;

BLLI_L3_MODE_NORMAL

pub const BLLI_L3_MODE_NORMAL = 64;

BLLI_L3_MODE_EXT

pub const BLLI_L3_MODE_EXT = 128;

BLLI_L3_PACKET_16

pub const BLLI_L3_PACKET_16 = 4;

BLLI_L3_PACKET_32

pub const BLLI_L3_PACKET_32 = 5;

BLLI_L3_PACKET_64

pub const BLLI_L3_PACKET_64 = 6;

BLLI_L3_PACKET_128

pub const BLLI_L3_PACKET_128 = 7;

BLLI_L3_PACKET_256

pub const BLLI_L3_PACKET_256 = 8;

BLLI_L3_PACKET_512

pub const BLLI_L3_PACKET_512 = 9;

BLLI_L3_PACKET_1024

pub const BLLI_L3_PACKET_1024 = 10;

BLLI_L3_PACKET_2048

pub const BLLI_L3_PACKET_2048 = 11;

BLLI_L3_PACKET_4096

pub const BLLI_L3_PACKET_4096 = 12;

PI_ALLOWED

pub const PI_ALLOWED = 0;

PI_RESTRICTED

pub const PI_RESTRICTED = 64;

PI_NUMBER_NOT_AVAILABLE

pub const PI_NUMBER_NOT_AVAILABLE = 128;

SI_USER_NOT_SCREENED

pub const SI_USER_NOT_SCREENED = 0;

SI_USER_PASSED

pub const SI_USER_PASSED = 1;

SI_USER_FAILED

pub const SI_USER_FAILED = 2;

SI_NETWORK

pub const SI_NETWORK = 3;

CAUSE_LOC_USER

pub const CAUSE_LOC_USER = 0;

CAUSE_LOC_PRIVATE_LOCAL

pub const CAUSE_LOC_PRIVATE_LOCAL = 1;

CAUSE_LOC_PUBLIC_LOCAL

pub const CAUSE_LOC_PUBLIC_LOCAL = 2;

CAUSE_LOC_TRANSIT_NETWORK

pub const CAUSE_LOC_TRANSIT_NETWORK = 3;

CAUSE_LOC_PUBLIC_REMOTE

pub const CAUSE_LOC_PUBLIC_REMOTE = 4;

CAUSE_LOC_PRIVATE_REMOTE

pub const CAUSE_LOC_PRIVATE_REMOTE = 5;

CAUSE_LOC_INTERNATIONAL_NETWORK

pub const CAUSE_LOC_INTERNATIONAL_NETWORK = 7;

CAUSE_LOC_BEYOND_INTERWORKING

pub const CAUSE_LOC_BEYOND_INTERWORKING = 10;

CAUSE_UNALLOCATED_NUMBER

pub const CAUSE_UNALLOCATED_NUMBER = 1;

CAUSE_NO_ROUTE_TO_TRANSIT_NETWORK

pub const CAUSE_NO_ROUTE_TO_TRANSIT_NETWORK = 2;

CAUSE_NO_ROUTE_TO_DESTINATION

pub const CAUSE_NO_ROUTE_TO_DESTINATION = 3;

CAUSE_VPI_VCI_UNACCEPTABLE

pub const CAUSE_VPI_VCI_UNACCEPTABLE = 10;

CAUSE_NORMAL_CALL_CLEARING

pub const CAUSE_NORMAL_CALL_CLEARING = 16;

CAUSE_USER_BUSY

pub const CAUSE_USER_BUSY = 17;

CAUSE_NO_USER_RESPONDING

pub const CAUSE_NO_USER_RESPONDING = 18;

CAUSE_CALL_REJECTED

pub const CAUSE_CALL_REJECTED = 21;

CAUSE_NUMBER_CHANGED

pub const CAUSE_NUMBER_CHANGED = 22;

CAUSE_USER_REJECTS_CLIR

pub const CAUSE_USER_REJECTS_CLIR = 23;

CAUSE_DESTINATION_OUT_OF_ORDER

pub const CAUSE_DESTINATION_OUT_OF_ORDER = 27;

CAUSE_INVALID_NUMBER_FORMAT

pub const CAUSE_INVALID_NUMBER_FORMAT = 28;

CAUSE_STATUS_ENQUIRY_RESPONSE

pub const CAUSE_STATUS_ENQUIRY_RESPONSE = 30;

CAUSE_NORMAL_UNSPECIFIED

pub const CAUSE_NORMAL_UNSPECIFIED = 31;

CAUSE_VPI_VCI_UNAVAILABLE

pub const CAUSE_VPI_VCI_UNAVAILABLE = 35;

CAUSE_NETWORK_OUT_OF_ORDER

pub const CAUSE_NETWORK_OUT_OF_ORDER = 38;

CAUSE_TEMPORARY_FAILURE

pub const CAUSE_TEMPORARY_FAILURE = 41;

CAUSE_ACCESS_INFORMAION_DISCARDED

pub const CAUSE_ACCESS_INFORMAION_DISCARDED = 43;

CAUSE_NO_VPI_VCI_AVAILABLE

pub const CAUSE_NO_VPI_VCI_AVAILABLE = 45;

CAUSE_RESOURCE_UNAVAILABLE

pub const CAUSE_RESOURCE_UNAVAILABLE = 47;

CAUSE_QOS_UNAVAILABLE

pub const CAUSE_QOS_UNAVAILABLE = 49;

CAUSE_USER_CELL_RATE_UNAVAILABLE

pub const CAUSE_USER_CELL_RATE_UNAVAILABLE = 51;

CAUSE_BEARER_CAPABILITY_UNAUTHORIZED

pub const CAUSE_BEARER_CAPABILITY_UNAUTHORIZED = 57;

CAUSE_BEARER_CAPABILITY_UNAVAILABLE

pub const CAUSE_BEARER_CAPABILITY_UNAVAILABLE = 58;

CAUSE_OPTION_UNAVAILABLE

pub const CAUSE_OPTION_UNAVAILABLE = 63;

CAUSE_BEARER_CAPABILITY_UNIMPLEMENTED

pub const CAUSE_BEARER_CAPABILITY_UNIMPLEMENTED = 65;

CAUSE_UNSUPPORTED_TRAFFIC_PARAMETERS

pub const CAUSE_UNSUPPORTED_TRAFFIC_PARAMETERS = 73;

CAUSE_INVALID_CALL_REFERENCE

pub const CAUSE_INVALID_CALL_REFERENCE = 81;

CAUSE_CHANNEL_NONEXISTENT

pub const CAUSE_CHANNEL_NONEXISTENT = 82;

CAUSE_INCOMPATIBLE_DESTINATION

pub const CAUSE_INCOMPATIBLE_DESTINATION = 88;

CAUSE_INVALID_ENDPOINT_REFERENCE

pub const CAUSE_INVALID_ENDPOINT_REFERENCE = 89;

CAUSE_INVALID_TRANSIT_NETWORK_SELECTION

pub const CAUSE_INVALID_TRANSIT_NETWORK_SELECTION = 91;

CAUSE_TOO_MANY_PENDING_ADD_PARTY

pub const CAUSE_TOO_MANY_PENDING_ADD_PARTY = 92;

CAUSE_AAL_PARAMETERS_UNSUPPORTED

pub const CAUSE_AAL_PARAMETERS_UNSUPPORTED = 93;

CAUSE_MANDATORY_IE_MISSING

pub const CAUSE_MANDATORY_IE_MISSING = 96;

CAUSE_UNIMPLEMENTED_MESSAGE_TYPE

pub const CAUSE_UNIMPLEMENTED_MESSAGE_TYPE = 97;

CAUSE_UNIMPLEMENTED_IE

pub const CAUSE_UNIMPLEMENTED_IE = 99;

CAUSE_INVALID_IE_CONTENTS

pub const CAUSE_INVALID_IE_CONTENTS = 100;

CAUSE_INVALID_STATE_FOR_MESSAGE

pub const CAUSE_INVALID_STATE_FOR_MESSAGE = 101;

CAUSE_RECOVERY_ON_TIMEOUT

pub const CAUSE_RECOVERY_ON_TIMEOUT = 102;

CAUSE_INCORRECT_MESSAGE_LENGTH

pub const CAUSE_INCORRECT_MESSAGE_LENGTH = 104;

CAUSE_PROTOCOL_ERROR

pub const CAUSE_PROTOCOL_ERROR = 111;

CAUSE_COND_UNKNOWN

pub const CAUSE_COND_UNKNOWN = 0;

CAUSE_COND_PERMANENT

pub const CAUSE_COND_PERMANENT = 1;

CAUSE_COND_TRANSIENT

pub const CAUSE_COND_TRANSIENT = 2;

CAUSE_REASON_USER

pub const CAUSE_REASON_USER = 0;

CAUSE_REASON_IE_MISSING

pub const CAUSE_REASON_IE_MISSING = 4;

CAUSE_REASON_IE_INSUFFICIENT

pub const CAUSE_REASON_IE_INSUFFICIENT = 8;

CAUSE_PU_PROVIDER

pub const CAUSE_PU_PROVIDER = 0;

CAUSE_PU_USER

pub const CAUSE_PU_USER = 8;

CAUSE_NA_NORMAL

pub const CAUSE_NA_NORMAL = 0;

CAUSE_NA_ABNORMAL

pub const CAUSE_NA_ABNORMAL = 4;

QOS_CLASS0

pub const QOS_CLASS0 = 0;

QOS_CLASS1

pub const QOS_CLASS1 = 1;

QOS_CLASS2

pub const QOS_CLASS2 = 2;

QOS_CLASS3

pub const QOS_CLASS3 = 3;

QOS_CLASS4

pub const QOS_CLASS4 = 4;

TNS_TYPE_NATIONAL

pub const TNS_TYPE_NATIONAL = 64;

TNS_PLAN_CARRIER_ID_CODE

pub const TNS_PLAN_CARRIER_ID_CODE = 1;

SIO_GET_NUMBER_OF_ATM_DEVICES

pub const SIO_GET_NUMBER_OF_ATM_DEVICES = 1343619073;

SIO_GET_ATM_ADDRESS

pub const SIO_GET_ATM_ADDRESS = 3491102722;

SIO_ASSOCIATE_PVC

pub const SIO_ASSOCIATE_PVC = 2417360899;

SIO_GET_ATM_CONNECTION_ID

pub const SIO_GET_ATM_CONNECTION_ID = 1343619076;

RIO_MSG_DONT_NOTIFY

pub const RIO_MSG_DONT_NOTIFY = 1;

RIO_MSG_DEFER

pub const RIO_MSG_DEFER = 2;

RIO_MSG_WAITALL

pub const RIO_MSG_WAITALL = 4;

RIO_MSG_COMMIT_ONLY

pub const RIO_MSG_COMMIT_ONLY = 8;

RIO_MAX_CQ_SIZE

pub const RIO_MAX_CQ_SIZE = 134217728;

RIO_CORRUPT_CQ

pub const RIO_CORRUPT_CQ = 4294967295;

WINDOWS_AF_IRDA

pub const WINDOWS_AF_IRDA = 26;

WCE_AF_IRDA

pub const WCE_AF_IRDA = 22;

IRDA_PROTO_SOCK_STREAM

pub const IRDA_PROTO_SOCK_STREAM = 1;

IRLMP_ENUMDEVICES

pub const IRLMP_ENUMDEVICES = 16;

IRLMP_IAS_SET

pub const IRLMP_IAS_SET = 17;

IRLMP_IAS_QUERY

pub const IRLMP_IAS_QUERY = 18;

IRLMP_SEND_PDU_LEN

pub const IRLMP_SEND_PDU_LEN = 19;

IRLMP_EXCLUSIVE_MODE

pub const IRLMP_EXCLUSIVE_MODE = 20;

IRLMP_IRLPT_MODE

pub const IRLMP_IRLPT_MODE = 21;

IRLMP_9WIRE_MODE

pub const IRLMP_9WIRE_MODE = 22;

IRLMP_TINYTP_MODE

pub const IRLMP_TINYTP_MODE = 23;

IRLMP_PARAMETERS

pub const IRLMP_PARAMETERS = 24;

IRLMP_DISCOVERY_MODE

pub const IRLMP_DISCOVERY_MODE = 25;

IRLMP_SHARP_MODE

pub const IRLMP_SHARP_MODE = 32;

IAS_ATTRIB_NO_CLASS

pub const IAS_ATTRIB_NO_CLASS = 16;

IAS_ATTRIB_NO_ATTRIB

pub const IAS_ATTRIB_NO_ATTRIB = 0;

IAS_ATTRIB_INT

pub const IAS_ATTRIB_INT = 1;

IAS_ATTRIB_OCTETSEQ

pub const IAS_ATTRIB_OCTETSEQ = 2;

IAS_ATTRIB_STR

pub const IAS_ATTRIB_STR = 3;

IAS_MAX_USER_STRING

pub const IAS_MAX_USER_STRING = 256;

IAS_MAX_OCTET_STRING

pub const IAS_MAX_OCTET_STRING = 1024;

IAS_MAX_CLASSNAME

pub const IAS_MAX_CLASSNAME = 64;

IAS_MAX_ATTRIBNAME

pub const IAS_MAX_ATTRIBNAME = 256;

LmCharSetASCII

pub const LmCharSetASCII = 0;

LmCharSetISO_8859_1

pub const LmCharSetISO_8859_1 = 1;

LmCharSetISO_8859_2

pub const LmCharSetISO_8859_2 = 2;

LmCharSetISO_8859_3

pub const LmCharSetISO_8859_3 = 3;

LmCharSetISO_8859_4

pub const LmCharSetISO_8859_4 = 4;

LmCharSetISO_8859_5

pub const LmCharSetISO_8859_5 = 5;

LmCharSetISO_8859_6

pub const LmCharSetISO_8859_6 = 6;

LmCharSetISO_8859_7

pub const LmCharSetISO_8859_7 = 7;

LmCharSetISO_8859_8

pub const LmCharSetISO_8859_8 = 8;

LmCharSetISO_8859_9

pub const LmCharSetISO_8859_9 = 9;

LmCharSetUNICODE

pub const LmCharSetUNICODE = 255;

LM_BAUD_1200

pub const LM_BAUD_1200 = 1200;

LM_BAUD_2400

pub const LM_BAUD_2400 = 2400;

LM_BAUD_9600

pub const LM_BAUD_9600 = 9600;

LM_BAUD_19200

pub const LM_BAUD_19200 = 19200;

LM_BAUD_38400

pub const LM_BAUD_38400 = 38400;

LM_BAUD_57600

pub const LM_BAUD_57600 = 57600;

LM_BAUD_115200

pub const LM_BAUD_115200 = 115200;

LM_BAUD_576K

pub const LM_BAUD_576K = 576000;

LM_BAUD_1152K

pub const LM_BAUD_1152K = 1152000;

LM_BAUD_4M

pub const LM_BAUD_4M = 4000000;

LM_BAUD_16M

pub const LM_BAUD_16M = 16000000;

IPX_PTYPE

pub const IPX_PTYPE = 16384;

IPX_FILTERPTYPE

pub const IPX_FILTERPTYPE = 16385;

IPX_STOPFILTERPTYPE

pub const IPX_STOPFILTERPTYPE = 16387;

IPX_DSTYPE

pub const IPX_DSTYPE = 16386;

IPX_EXTENDED_ADDRESS

pub const IPX_EXTENDED_ADDRESS = 16388;

IPX_RECVHDR

pub const IPX_RECVHDR = 16389;

IPX_MAXSIZE

pub const IPX_MAXSIZE = 16390;

IPX_ADDRESS

pub const IPX_ADDRESS = 16391;

IPX_GETNETINFO

pub const IPX_GETNETINFO = 16392;

IPX_GETNETINFO_NORIP

pub const IPX_GETNETINFO_NORIP = 16393;

IPX_SPXGETCONNECTIONSTATUS

pub const IPX_SPXGETCONNECTIONSTATUS = 16395;

IPX_ADDRESS_NOTIFY

pub const IPX_ADDRESS_NOTIFY = 16396;

IPX_MAX_ADAPTER_NUM

pub const IPX_MAX_ADAPTER_NUM = 16397;

IPX_RERIPNETNUMBER

pub const IPX_RERIPNETNUMBER = 16398;

IPX_RECEIVE_BROADCAST

pub const IPX_RECEIVE_BROADCAST = 16399;

IPX_IMMEDIATESPXACK

pub const IPX_IMMEDIATESPXACK = 16400;

MAX_MCAST_TTL

pub const MAX_MCAST_TTL = 255;

RM_OPTIONSBASE

pub const RM_OPTIONSBASE = 1000;

RM_RATE_WINDOW_SIZE

pub const RM_RATE_WINDOW_SIZE = 1001;

RM_SET_MESSAGE_BOUNDARY

pub const RM_SET_MESSAGE_BOUNDARY = 1002;

RM_FLUSHCACHE

pub const RM_FLUSHCACHE = 1003;

RM_SENDER_WINDOW_ADVANCE_METHOD

pub const RM_SENDER_WINDOW_ADVANCE_METHOD = 1004;

RM_SENDER_STATISTICS

pub const RM_SENDER_STATISTICS = 1005;

RM_LATEJOIN

pub const RM_LATEJOIN = 1006;

RM_SET_SEND_IF

pub const RM_SET_SEND_IF = 1007;

RM_ADD_RECEIVE_IF

pub const RM_ADD_RECEIVE_IF = 1008;

RM_DEL_RECEIVE_IF

pub const RM_DEL_RECEIVE_IF = 1009;

RM_SEND_WINDOW_ADV_RATE

pub const RM_SEND_WINDOW_ADV_RATE = 1010;

RM_USE_FEC

pub const RM_USE_FEC = 1011;

RM_SET_MCAST_TTL

pub const RM_SET_MCAST_TTL = 1012;

RM_RECEIVER_STATISTICS

pub const RM_RECEIVER_STATISTICS = 1013;

RM_HIGH_SPEED_INTRANET_OPT

pub const RM_HIGH_SPEED_INTRANET_OPT = 1014;

SENDER_DEFAULT_RATE_KBITS_PER_SEC

pub const SENDER_DEFAULT_RATE_KBITS_PER_SEC = 56;

SENDER_DEFAULT_WINDOW_ADV_PERCENTAGE

pub const SENDER_DEFAULT_WINDOW_ADV_PERCENTAGE = 15;

MAX_WINDOW_INCREMENT_PERCENTAGE

pub const MAX_WINDOW_INCREMENT_PERCENTAGE = 25;

SENDER_DEFAULT_LATE_JOINER_PERCENTAGE

pub const SENDER_DEFAULT_LATE_JOINER_PERCENTAGE = 0;

SENDER_MAX_LATE_JOINER_PERCENTAGE

pub const SENDER_MAX_LATE_JOINER_PERCENTAGE = 75;

BITS_PER_BYTE

pub const BITS_PER_BYTE = 8;

LOG2_BITS_PER_BYTE

pub const LOG2_BITS_PER_BYTE = 3;

SOCKET_DEFAULT2_QM_POLICY

pub const SOCKET_DEFAULT2_QM_POLICY = GUID.parse("{aec2ef9c-3a4d-4d3e-8842-239942e39a47}");

REAL_TIME_NOTIFICATION_CAPABILITY

pub const REAL_TIME_NOTIFICATION_CAPABILITY = GUID.parse("{6b59819a-5cae-492d-a901-2a3c2c50164f}");

REAL_TIME_NOTIFICATION_CAPABILITY_EX

pub const REAL_TIME_NOTIFICATION_CAPABILITY_EX = GUID.parse("{6843da03-154a-4616-a508-44371295f96b}");

ASSOCIATE_NAMERES_CONTEXT

pub const ASSOCIATE_NAMERES_CONTEXT = GUID.parse("{59a38b67-d4fe-46e1-ba3c-87ea74ca3049}");

WSAID_CONNECTEX

pub const WSAID_CONNECTEX = GUID{
    .Data1 = 0x25a207b9,
    .Data2 = 0xddf3,
    .Data3 = 0x4660,
    .Data4 = [8]u8{ 0x8e, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e },
};

WSAID_ACCEPTEX

pub const WSAID_ACCEPTEX = GUID{
    .Data1 = 0xb5367df1,
    .Data2 = 0xcbac,
    .Data3 = 0x11cf,
    .Data4 = [8]u8{ 0x95, 0xca, 0x00, 0x80, 0x5f, 0x48, 0xa1, 0x92 },
};

WSAID_GETACCEPTEXSOCKADDRS

pub const WSAID_GETACCEPTEXSOCKADDRS = GUID{
    .Data1 = 0xb5367df2,
    .Data2 = 0xcbac,
    .Data3 = 0x11cf,
    .Data4 = [8]u8{ 0x95, 0xca, 0x00, 0x80, 0x5f, 0x48, 0xa1, 0x92 },
};

WSAID_WSARECVMSG

pub const WSAID_WSARECVMSG = GUID{
    .Data1 = 0xf689d7c8,
    .Data2 = 0x6f1f,
    .Data3 = 0x436b,
    .Data4 = [8]u8{ 0x8a, 0x53, 0xe5, 0x4f, 0xe3, 0x51, 0xc3, 0x22 },
};

WSAID_WSAPOLL

pub const WSAID_WSAPOLL = GUID{
    .Data1 = 0x18C76F85,
    .Data2 = 0xDC66,
    .Data3 = 0x4964,
    .Data4 = [8]u8{ 0x97, 0x2E, 0x23, 0xC2, 0x72, 0x38, 0x31, 0x2B },
};

WSAID_WSASENDMSG

pub const WSAID_WSASENDMSG = GUID{
    .Data1 = 0xa441e712,
    .Data2 = 0x754f,
    .Data3 = 0x43ca,
    .Data4 = [8]u8{ 0x84, 0xa7, 0x0d, 0xee, 0x44, 0xcf, 0x60, 0x6d },
};

TCP_INITIAL_RTO_DEFAULT_RTT

pub const TCP_INITIAL_RTO_DEFAULT_RTT = 0;

TCP_INITIAL_RTO_DEFAULT_MAX_SYN_RETRANSMISSIONS

pub const TCP_INITIAL_RTO_DEFAULT_MAX_SYN_RETRANSMISSIONS = 0;

SOCKET_SETTINGS_GUARANTEE_ENCRYPTION

pub const SOCKET_SETTINGS_GUARANTEE_ENCRYPTION = 1;

SOCKET_SETTINGS_ALLOW_INSECURE

pub const SOCKET_SETTINGS_ALLOW_INSECURE = 2;

SOCKET_SETTINGS_IPSEC_SKIP_FILTER_INSTANTIATION

pub const SOCKET_SETTINGS_IPSEC_SKIP_FILTER_INSTANTIATION = 1;

SOCKET_SETTINGS_IPSEC_OPTIONAL_PEER_NAME_VERIFICATION

pub const SOCKET_SETTINGS_IPSEC_OPTIONAL_PEER_NAME_VERIFICATION = 2;

SOCKET_SETTINGS_IPSEC_ALLOW_FIRST_INBOUND_PKT_UNENCRYPTED

pub const SOCKET_SETTINGS_IPSEC_ALLOW_FIRST_INBOUND_PKT_UNENCRYPTED = 4;

SOCKET_SETTINGS_IPSEC_PEER_NAME_IS_RAW_FORMAT

pub const SOCKET_SETTINGS_IPSEC_PEER_NAME_IS_RAW_FORMAT = 8;

SOCKET_QUERY_IPSEC2_ABORT_CONNECTION_ON_FIELD_CHANGE

pub const SOCKET_QUERY_IPSEC2_ABORT_CONNECTION_ON_FIELD_CHANGE = 1;

SOCKET_QUERY_IPSEC2_FIELD_MASK_MM_SA_ID

pub const SOCKET_QUERY_IPSEC2_FIELD_MASK_MM_SA_ID = 1;

SOCKET_QUERY_IPSEC2_FIELD_MASK_QM_SA_ID

pub const SOCKET_QUERY_IPSEC2_FIELD_MASK_QM_SA_ID = 2;

SOCKET_INFO_CONNECTION_SECURED

pub const SOCKET_INFO_CONNECTION_SECURED = 1;

SOCKET_INFO_CONNECTION_ENCRYPTED

pub const SOCKET_INFO_CONNECTION_ENCRYPTED = 2;

SOCKET_INFO_CONNECTION_IMPERSONATED

pub const SOCKET_INFO_CONNECTION_IMPERSONATED = 4;

IN4ADDR_LOOPBACK

pub const IN4ADDR_LOOPBACK = 16777343;

IN4ADDR_LOOPBACKPREFIX_LENGTH

pub const IN4ADDR_LOOPBACKPREFIX_LENGTH = 8;

IN4ADDR_LINKLOCALPREFIX_LENGTH

pub const IN4ADDR_LINKLOCALPREFIX_LENGTH = 16;

IN4ADDR_MULTICASTPREFIX_LENGTH

pub const IN4ADDR_MULTICASTPREFIX_LENGTH = 4;

IFF_UP

pub const IFF_UP = 1;

IFF_BROADCAST

pub const IFF_BROADCAST = 2;

IFF_LOOPBACK

pub const IFF_LOOPBACK = 4;

IFF_POINTTOPOINT

pub const IFF_POINTTOPOINT = 8;

IFF_MULTICAST

pub const IFF_MULTICAST = 16;

IP_OPTIONS

pub const IP_OPTIONS = 1;

IP_HDRINCL

pub const IP_HDRINCL = 2;

IP_TOS

pub const IP_TOS = 3;

IP_TTL

pub const IP_TTL = 4;

IP_MULTICAST_IF

pub const IP_MULTICAST_IF = 9;

IP_MULTICAST_TTL

pub const IP_MULTICAST_TTL = 10;

IP_MULTICAST_LOOP

pub const IP_MULTICAST_LOOP = 11;

IP_ADD_MEMBERSHIP

pub const IP_ADD_MEMBERSHIP = 12;

IP_DROP_MEMBERSHIP

pub const IP_DROP_MEMBERSHIP = 13;

IP_DONTFRAGMENT

pub const IP_DONTFRAGMENT = 14;

IP_ADD_SOURCE_MEMBERSHIP

pub const IP_ADD_SOURCE_MEMBERSHIP = 15;

IP_DROP_SOURCE_MEMBERSHIP

pub const IP_DROP_SOURCE_MEMBERSHIP = 16;

IP_BLOCK_SOURCE

pub const IP_BLOCK_SOURCE = 17;

IP_UNBLOCK_SOURCE

pub const IP_UNBLOCK_SOURCE = 18;

IP_PKTINFO

pub const IP_PKTINFO = 19;

IP_HOPLIMIT

pub const IP_HOPLIMIT = 21;

IP_RECVTTL

pub const IP_RECVTTL = 21;

IP_RECEIVE_BROADCAST

pub const IP_RECEIVE_BROADCAST = 22;

IP_RECVIF

pub const IP_RECVIF = 24;

IP_RECVDSTADDR

pub const IP_RECVDSTADDR = 25;

IP_IFLIST

pub const IP_IFLIST = 28;

IP_ADD_IFLIST

pub const IP_ADD_IFLIST = 29;

IP_DEL_IFLIST

pub const IP_DEL_IFLIST = 30;

IP_UNICAST_IF

pub const IP_UNICAST_IF = 31;

IP_RTHDR

pub const IP_RTHDR = 32;

IP_GET_IFLIST

pub const IP_GET_IFLIST = 33;

IP_RECVRTHDR

pub const IP_RECVRTHDR = 38;

IP_TCLASS

pub const IP_TCLASS = 39;

IP_RECVTCLASS

pub const IP_RECVTCLASS = 40;

IP_RECVTOS

pub const IP_RECVTOS = 40;

IP_ORIGINAL_ARRIVAL_IF

pub const IP_ORIGINAL_ARRIVAL_IF = 47;

IP_ECN

pub const IP_ECN = 50;

IP_PKTINFO_EX

pub const IP_PKTINFO_EX = 51;

IP_WFP_REDIRECT_RECORDS

pub const IP_WFP_REDIRECT_RECORDS = 60;

IP_WFP_REDIRECT_CONTEXT

pub const IP_WFP_REDIRECT_CONTEXT = 70;

IP_MTU_DISCOVER

pub const IP_MTU_DISCOVER = 71;

IP_MTU

pub const IP_MTU = 73;

IP_NRT_INTERFACE

pub const IP_NRT_INTERFACE = 74;

IP_RECVERR

pub const IP_RECVERR = 75;

IP_USER_MTU

pub const IP_USER_MTU = 76;

IP_UNSPECIFIED_TYPE_OF_SERVICE

pub const IP_UNSPECIFIED_TYPE_OF_SERVICE = -1;

IN6ADDR_LINKLOCALPREFIX_LENGTH

pub const IN6ADDR_LINKLOCALPREFIX_LENGTH = 64;

IN6ADDR_MULTICASTPREFIX_LENGTH

pub const IN6ADDR_MULTICASTPREFIX_LENGTH = 8;

IN6ADDR_SOLICITEDNODEMULTICASTPREFIX_LENGTH

pub const IN6ADDR_SOLICITEDNODEMULTICASTPREFIX_LENGTH = 104;

IN6ADDR_V4MAPPEDPREFIX_LENGTH

pub const IN6ADDR_V4MAPPEDPREFIX_LENGTH = 96;

IN6ADDR_6TO4PREFIX_LENGTH

pub const IN6ADDR_6TO4PREFIX_LENGTH = 16;

IN6ADDR_TEREDOPREFIX_LENGTH

pub const IN6ADDR_TEREDOPREFIX_LENGTH = 32;

MCAST_JOIN_GROUP

pub const MCAST_JOIN_GROUP = 41;

MCAST_LEAVE_GROUP

pub const MCAST_LEAVE_GROUP = 42;

MCAST_BLOCK_SOURCE

pub const MCAST_BLOCK_SOURCE = 43;

MCAST_UNBLOCK_SOURCE

pub const MCAST_UNBLOCK_SOURCE = 44;

MCAST_JOIN_SOURCE_GROUP

pub const MCAST_JOIN_SOURCE_GROUP = 45;

MCAST_LEAVE_SOURCE_GROUP

pub const MCAST_LEAVE_SOURCE_GROUP = 46;

IPV6_HOPOPTS

pub const IPV6_HOPOPTS = 1;

IPV6_HDRINCL

pub const IPV6_HDRINCL = 2;

IPV6_UNICAST_HOPS

pub const IPV6_UNICAST_HOPS = 4;

IPV6_MULTICAST_IF

pub const IPV6_MULTICAST_IF = 9;

IPV6_MULTICAST_HOPS

pub const IPV6_MULTICAST_HOPS = 10;

IPV6_MULTICAST_LOOP

pub const IPV6_MULTICAST_LOOP = 11;

IPV6_ADD_MEMBERSHIP

pub const IPV6_ADD_MEMBERSHIP = 12;

IPV6_DROP_MEMBERSHIP

pub const IPV6_DROP_MEMBERSHIP = 13;

IPV6_DONTFRAG

pub const IPV6_DONTFRAG = 14;

IPV6_PKTINFO

pub const IPV6_PKTINFO = 19;

IPV6_HOPLIMIT

pub const IPV6_HOPLIMIT = 21;

IPV6_PROTECTION_LEVEL

pub const IPV6_PROTECTION_LEVEL = 23;

IPV6_RECVIF

pub const IPV6_RECVIF = 24;

IPV6_RECVDSTADDR

pub const IPV6_RECVDSTADDR = 25;

IPV6_CHECKSUM

pub const IPV6_CHECKSUM = 26;

IPV6_V6ONLY

pub const IPV6_V6ONLY = 27;

IPV6_IFLIST

pub const IPV6_IFLIST = 28;

IPV6_ADD_IFLIST

pub const IPV6_ADD_IFLIST = 29;

IPV6_DEL_IFLIST

pub const IPV6_DEL_IFLIST = 30;

IPV6_UNICAST_IF

pub const IPV6_UNICAST_IF = 31;

IPV6_RTHDR

pub const IPV6_RTHDR = 32;

IPV6_GET_IFLIST

pub const IPV6_GET_IFLIST = 33;

IPV6_RECVRTHDR

pub const IPV6_RECVRTHDR = 38;

IPV6_TCLASS

pub const IPV6_TCLASS = 39;

IPV6_RECVTCLASS

pub const IPV6_RECVTCLASS = 40;

IPV6_ECN

pub const IPV6_ECN = 50;

IPV6_PKTINFO_EX

pub const IPV6_PKTINFO_EX = 51;

IPV6_WFP_REDIRECT_RECORDS

pub const IPV6_WFP_REDIRECT_RECORDS = 60;

IPV6_WFP_REDIRECT_CONTEXT

pub const IPV6_WFP_REDIRECT_CONTEXT = 70;

IPV6_MTU_DISCOVER

pub const IPV6_MTU_DISCOVER = 71;

IPV6_MTU

pub const IPV6_MTU = 72;

IPV6_NRT_INTERFACE

pub const IPV6_NRT_INTERFACE = 74;

IPV6_RECVERR

pub const IPV6_RECVERR = 75;

IPV6_USER_MTU

pub const IPV6_USER_MTU = 76;

IP_UNSPECIFIED_HOP_LIMIT

pub const IP_UNSPECIFIED_HOP_LIMIT = -1;

PROTECTION_LEVEL_UNRESTRICTED

pub const PROTECTION_LEVEL_UNRESTRICTED = 10;

PROTECTION_LEVEL_EDGERESTRICTED

pub const PROTECTION_LEVEL_EDGERESTRICTED = 20;

PROTECTION_LEVEL_RESTRICTED

pub const PROTECTION_LEVEL_RESTRICTED = 30;

INET_ADDRSTRLEN

pub const INET_ADDRSTRLEN = 22;

INET6_ADDRSTRLEN

pub const INET6_ADDRSTRLEN = 65;

TCP

pub const TCP = struct {
    pub const NODELAY = 1;
    pub const EXPEDITED_1122 = 2;
    pub const OFFLOAD_NO_PREFERENCE = 0;
    pub const OFFLOAD_NOT_PREFERRED = 1;
    pub const OFFLOAD_PREFERRED = 2;
    pub const KEEPALIVE = 3;
    pub const MAXSEG = 4;
    pub const MAXRT = 5;
    pub const STDURG = 6;
    pub const NOURG = 7;
    pub const ATMARK = 8;
    pub const NOSYNRETRIES = 9;
    pub const TIMESTAMPS = 10;
    pub const OFFLOAD_PREFERENCE = 11;
    pub const CONGESTION_ALGORITHM = 12;
    pub const DELAY_FIN_ACK = 13;
    pub const MAXRTMS = 14;
    pub const FASTOPEN = 15;
    pub const KEEPCNT = 16;
    pub const KEEPINTVL = 17;
    pub const FAIL_CONNECT_ON_ICMP_ERROR = 18;
    pub const ICMP_ERROR_INFO = 19;
    pub const BSDURGENT = 28672;
};

UDP_SEND_MSG_SIZE

pub const UDP_SEND_MSG_SIZE = 2;

UDP_RECV_MAX_COALESCED_SIZE

pub const UDP_RECV_MAX_COALESCED_SIZE = 3;

UDP_COALESCED_INFO

pub const UDP_COALESCED_INFO = 3;

AF

pub const AF = struct {
    pub const UNSPEC = 0;
    pub const UNIX = 1;
    pub const INET = 2;
    pub const IMPLINK = 3;
    pub const PUP = 4;
    pub const CHAOS = 5;
    pub const NS = 6;
    pub const IPX = 6;
    pub const ISO = 7;
    pub const ECMA = 8;
    pub const DATAKIT = 9;
    pub const CCITT = 10;
    pub const SNA = 11;
    pub const DECnet = 12;
    pub const DLI = 13;
    pub const LAT = 14;
    pub const HYLINK = 15;
    pub const APPLETALK = 16;
    pub const NETBIOS = 17;
    pub const VOICEVIEW = 18;
    pub const FIREFOX = 19;
    pub const UNKNOWN1 = 20;
    pub const BAN = 21;
    pub const ATM = 22;
    pub const INET6 = 23;
    pub const CLUSTER = 24;
    pub const @"12844" = 25;
    pub const IRDA = 26;
    pub const NETDES = 28;
    pub const MAX = 29;
    pub const TCNPROCESS = 29;
    pub const TCNMESSAGE = 30;
    pub const ICLFXBM = 31;
    pub const LINK = 33;
    pub const HYPERV = 34;
};

SOCK

pub const SOCK = struct {
    pub const STREAM = 1;
    pub const DGRAM = 2;
    pub const RAW = 3;
    pub const RDM = 4;
    pub const SEQPACKET = 5;

    pub const CLOEXEC = 0x10000;
    pub const NONBLOCK = 0x20000;
};

SOL

WARNING: this flag is not supported by windows socket functions directly, it is only supported by std.os.socket. Be sure that this value does not share any bits with any of the SOCK values. WARNING: this flag is not supported by windows socket functions directly, it is only supported by std.os.socket. Be sure that this value does not share any bits with any of the SOCK values.

pub const SOL = struct {
    pub const IRLMP = 255;
    pub const SOCKET = 65535;
};

SO

pub const SO = struct {
    pub const DEBUG = 1;
    pub const ACCEPTCONN = 2;
    pub const REUSEADDR = 4;
    pub const KEEPALIVE = 8;
    pub const DONTROUTE = 16;
    pub const BROADCAST = 32;
    pub const USELOOPBACK = 64;
    pub const LINGER = 128;
    pub const OOBINLINE = 256;
    pub const SNDBUF = 4097;
    pub const RCVBUF = 4098;
    pub const SNDLOWAT = 4099;
    pub const RCVLOWAT = 4100;
    pub const SNDTIMEO = 4101;
    pub const RCVTIMEO = 4102;
    pub const ERROR = 4103;
    pub const TYPE = 4104;
    pub const BSP_STATE = 4105;
    pub const GROUP_ID = 8193;
    pub const GROUP_PRIORITY = 8194;
    pub const MAX_MSG_SIZE = 8195;
    pub const CONDITIONAL_ACCEPT = 12290;
    pub const PAUSE_ACCEPT = 12291;
    pub const COMPARTMENT_ID = 12292;
    pub const RANDOMIZE_PORT = 12293;
    pub const PORT_SCALABILITY = 12294;
    pub const REUSE_UNICASTPORT = 12295;
    pub const REUSE_MULTICASTPORT = 12296;
    pub const ORIGINAL_DST = 12303;
    pub const PROTOCOL_INFOA = 8196;
    pub const PROTOCOL_INFOW = 8197;
    pub const CONNDATA = 28672;
    pub const CONNOPT = 28673;
    pub const DISCDATA = 28674;
    pub const DISCOPT = 28675;
    pub const CONNDATALEN = 28676;
    pub const CONNOPTLEN = 28677;
    pub const DISCDATALEN = 28678;
    pub const DISCOPTLEN = 28679;
    pub const OPENTYPE = 28680;
    pub const SYNCHRONOUS_ALERT = 16;
    pub const SYNCHRONOUS_NONALERT = 32;
    pub const MAXDG = 28681;
    pub const MAXPATHDG = 28682;
    pub const UPDATE_ACCEPT_CONTEXT = 28683;
    pub const CONNECT_TIME = 28684;
    pub const UPDATE_CONNECT_CONTEXT = 28688;
};

WSK_SO_BASE

pub const WSK_SO_BASE = 16384;

IOC_UNIX

pub const IOC_UNIX = 0;

IOC_WS2

pub const IOC_WS2 = 134217728;

IOC_PROTOCOL

pub const IOC_PROTOCOL = 268435456;

IOC_VENDOR

pub const IOC_VENDOR = 402653184;

SIO_GET_EXTENSION_FUNCTION_POINTER

pub const SIO_GET_EXTENSION_FUNCTION_POINTER = IOC_OUT | IOC_IN | IOC_WS2 | 6;

SIO_BSP_HANDLE

pub const SIO_BSP_HANDLE = IOC_OUT | IOC_WS2 | 27;

SIO_BSP_HANDLE_SELECT

pub const SIO_BSP_HANDLE_SELECT = IOC_OUT | IOC_WS2 | 28;

SIO_BSP_HANDLE_POLL

pub const SIO_BSP_HANDLE_POLL = IOC_OUT | IOC_WS2 | 29;

SIO_BASE_HANDLE

pub const SIO_BASE_HANDLE = IOC_OUT | IOC_WS2 | 34;

IPPORT_TCPMUX

pub const IPPORT_TCPMUX = 1;

IPPORT_ECHO

pub const IPPORT_ECHO = 7;

IPPORT_DISCARD

pub const IPPORT_DISCARD = 9;

IPPORT_SYSTAT

pub const IPPORT_SYSTAT = 11;

IPPORT_DAYTIME

pub const IPPORT_DAYTIME = 13;

IPPORT_NETSTAT

pub const IPPORT_NETSTAT = 15;

IPPORT_QOTD

pub const IPPORT_QOTD = 17;

IPPORT_MSP

pub const IPPORT_MSP = 18;

IPPORT_CHARGEN

pub const IPPORT_CHARGEN = 19;

IPPORT_FTP_DATA

pub const IPPORT_FTP_DATA = 20;

IPPORT_FTP

pub const IPPORT_FTP = 21;

IPPORT_TELNET

pub const IPPORT_TELNET = 23;

IPPORT_SMTP

pub const IPPORT_SMTP = 25;

IPPORT_TIMESERVER

pub const IPPORT_TIMESERVER = 37;

IPPORT_NAMESERVER

pub const IPPORT_NAMESERVER = 42;

IPPORT_WHOIS

pub const IPPORT_WHOIS = 43;

IPPORT_MTP

pub const IPPORT_MTP = 57;

IPPORT_TFTP

pub const IPPORT_TFTP = 69;

IPPORT_RJE

pub const IPPORT_RJE = 77;

IPPORT_FINGER

pub const IPPORT_FINGER = 79;

IPPORT_TTYLINK

pub const IPPORT_TTYLINK = 87;

IPPORT_SUPDUP

pub const IPPORT_SUPDUP = 95;

IPPORT_POP3

pub const IPPORT_POP3 = 110;

IPPORT_NTP

pub const IPPORT_NTP = 123;

IPPORT_EPMAP

pub const IPPORT_EPMAP = 135;

IPPORT_NETBIOS_NS

pub const IPPORT_NETBIOS_NS = 137;

IPPORT_NETBIOS_DGM

pub const IPPORT_NETBIOS_DGM = 138;

IPPORT_NETBIOS_SSN

pub const IPPORT_NETBIOS_SSN = 139;

IPPORT_IMAP

pub const IPPORT_IMAP = 143;

IPPORT_SNMP

pub const IPPORT_SNMP = 161;

IPPORT_SNMP_TRAP

pub const IPPORT_SNMP_TRAP = 162;

IPPORT_IMAP3

pub const IPPORT_IMAP3 = 220;

IPPORT_LDAP

pub const IPPORT_LDAP = 389;

IPPORT_HTTPS

pub const IPPORT_HTTPS = 443;

IPPORT_MICROSOFT_DS

pub const IPPORT_MICROSOFT_DS = 445;

IPPORT_EXECSERVER

pub const IPPORT_EXECSERVER = 512;

IPPORT_LOGINSERVER

pub const IPPORT_LOGINSERVER = 513;

IPPORT_CMDSERVER

pub const IPPORT_CMDSERVER = 514;

IPPORT_EFSSERVER

pub const IPPORT_EFSSERVER = 520;

IPPORT_BIFFUDP

pub const IPPORT_BIFFUDP = 512;

IPPORT_WHOSERVER

pub const IPPORT_WHOSERVER = 513;

IPPORT_ROUTESERVER

pub const IPPORT_ROUTESERVER = 520;

IPPORT_RESERVED

pub const IPPORT_RESERVED = 1024;

IPPORT_REGISTERED_MAX

pub const IPPORT_REGISTERED_MAX = 49151;

IPPORT_DYNAMIC_MIN

pub const IPPORT_DYNAMIC_MIN = 49152;

IPPORT_DYNAMIC_MAX

pub const IPPORT_DYNAMIC_MAX = 65535;

IN_CLASSA_NET

pub const IN_CLASSA_NET = 4278190080;

IN_CLASSA_NSHIFT

pub const IN_CLASSA_NSHIFT = 24;

IN_CLASSA_HOST

pub const IN_CLASSA_HOST = 16777215;

IN_CLASSA_MAX

pub const IN_CLASSA_MAX = 128;

IN_CLASSB_NET

pub const IN_CLASSB_NET = 4294901760;

IN_CLASSB_NSHIFT

pub const IN_CLASSB_NSHIFT = 16;

IN_CLASSB_HOST

pub const IN_CLASSB_HOST = 65535;

IN_CLASSB_MAX

pub const IN_CLASSB_MAX = 65536;

IN_CLASSC_NET

pub const IN_CLASSC_NET = 4294967040;

IN_CLASSC_NSHIFT

pub const IN_CLASSC_NSHIFT = 8;

IN_CLASSC_HOST

pub const IN_CLASSC_HOST = 255;

IN_CLASSD_NET

pub const IN_CLASSD_NET = 4026531840;

IN_CLASSD_NSHIFT

pub const IN_CLASSD_NSHIFT = 28;

IN_CLASSD_HOST

pub const IN_CLASSD_HOST = 268435455;

INADDR_LOOPBACK

pub const INADDR_LOOPBACK = 2130706433;

INADDR_NONE

pub const INADDR_NONE = 4294967295;

IOCPARM_MASK

pub const IOCPARM_MASK = 127;

IOC_VOID

pub const IOC_VOID = 536870912;

IOC_OUT

pub const IOC_OUT = 1073741824;

IOC_IN

pub const IOC_IN = 2147483648;

MSG

pub const MSG = struct {
    pub const TRUNC = 256;
    pub const CTRUNC = 512;
    pub const BCAST = 1024;
    pub const MCAST = 2048;
    pub const ERRQUEUE = 4096;

    pub const PEEK = 2;
    pub const WAITALL = 8;
    pub const PUSH_IMMEDIATE = 32;
    pub const PARTIAL = 32768;
    pub const INTERRUPT = 16;
    pub const MAXIOVLEN = 16;
};

AI

pub const AI = struct {
    pub const PASSIVE = 1;
    pub const CANONNAME = 2;
    pub const NUMERICHOST = 4;
    pub const NUMERICSERV = 8;
    pub const DNS_ONLY = 16;
    pub const ALL = 256;
    pub const ADDRCONFIG = 1024;
    pub const V4MAPPED = 2048;
    pub const NON_AUTHORITATIVE = 16384;
    pub const SECURE = 32768;
    pub const RETURN_PREFERRED_NAMES = 65536;
    pub const FQDN = 131072;
    pub const FILESERVER = 262144;
    pub const DISABLE_IDN_ENCODING = 524288;
    pub const EXTENDED = 2147483648;
    pub const RESOLUTION_HANDLE = 1073741824;
};

FIONBIO

pub const FIONBIO = -2147195266;

ADDRINFOEX_VERSION_2

pub const ADDRINFOEX_VERSION_2 = 2;

ADDRINFOEX_VERSION_3

pub const ADDRINFOEX_VERSION_3 = 3;

ADDRINFOEX_VERSION_4

pub const ADDRINFOEX_VERSION_4 = 4;

NS_ALL

pub const NS_ALL = 0;

NS_SAP

pub const NS_SAP = 1;

NS_NDS

pub const NS_NDS = 2;

NS_PEER_BROWSE

pub const NS_PEER_BROWSE = 3;

NS_SLP

pub const NS_SLP = 5;

NS_DHCP

pub const NS_DHCP = 6;

NS_TCPIP_LOCAL

pub const NS_TCPIP_LOCAL = 10;

NS_TCPIP_HOSTS

pub const NS_TCPIP_HOSTS = 11;

NS_DNS

pub const NS_DNS = 12;

NS_NETBT

pub const NS_NETBT = 13;

NS_WINS

pub const NS_WINS = 14;

NS_NLA

pub const NS_NLA = 15;

NS_NBP

pub const NS_NBP = 20;

NS_MS

pub const NS_MS = 30;

NS_STDA

pub const NS_STDA = 31;

NS_NTDS

pub const NS_NTDS = 32;

NS_EMAIL

pub const NS_EMAIL = 37;

NS_X500

pub const NS_X500 = 40;

NS_NIS

pub const NS_NIS = 41;

NS_NISPLUS

pub const NS_NISPLUS = 42;

NS_WRQ

pub const NS_WRQ = 50;

NS_NETDES

pub const NS_NETDES = 60;

NI_NOFQDN

pub const NI_NOFQDN = 1;

NI_NUMERICHOST

pub const NI_NUMERICHOST = 2;

NI_NAMEREQD

pub const NI_NAMEREQD = 4;

NI_NUMERICSERV

pub const NI_NUMERICSERV = 8;

NI_DGRAM

pub const NI_DGRAM = 16;

NI_MAXHOST

pub const NI_MAXHOST = 1025;

NI_MAXSERV

pub const NI_MAXSERV = 32;

INCL_WINSOCK_API_PROTOTYPES

pub const INCL_WINSOCK_API_PROTOTYPES = 1;

INCL_WINSOCK_API_TYPEDEFS

pub const INCL_WINSOCK_API_TYPEDEFS = 0;

FD_SETSIZE

pub const FD_SETSIZE = 64;

IMPLINK_IP

pub const IMPLINK_IP = 155;

IMPLINK_LOWEXPER

pub const IMPLINK_LOWEXPER = 156;

IMPLINK_HIGHEXPER

pub const IMPLINK_HIGHEXPER = 158;

WSADESCRIPTION_LEN

pub const WSADESCRIPTION_LEN = 256;

WSASYS_STATUS_LEN

pub const WSASYS_STATUS_LEN = 128;

SOCKET_ERROR

pub const SOCKET_ERROR = -1;

FROM_PROTOCOL_INFO

pub const FROM_PROTOCOL_INFO = -1;

PVD_CONFIG

pub const PVD_CONFIG = 12289;

SOMAXCONN

pub const SOMAXCONN = 2147483647;

MAXGETHOSTSTRUCT

pub const MAXGETHOSTSTRUCT = 1024;

FD_READ_BIT

pub const FD_READ_BIT = 0;

FD_WRITE_BIT

pub const FD_WRITE_BIT = 1;

FD_OOB_BIT

pub const FD_OOB_BIT = 2;

FD_ACCEPT_BIT

pub const FD_ACCEPT_BIT = 3;

FD_CONNECT_BIT

pub const FD_CONNECT_BIT = 4;

FD_CLOSE_BIT

pub const FD_CLOSE_BIT = 5;

FD_QOS_BIT

pub const FD_QOS_BIT = 6;

FD_GROUP_QOS_BIT

pub const FD_GROUP_QOS_BIT = 7;

FD_ROUTING_INTERFACE_CHANGE_BIT

pub const FD_ROUTING_INTERFACE_CHANGE_BIT = 8;

FD_ADDRESS_LIST_CHANGE_BIT

pub const FD_ADDRESS_LIST_CHANGE_BIT = 9;

FD_MAX_EVENTS

pub const FD_MAX_EVENTS = 10;

CF_ACCEPT

pub const CF_ACCEPT = 0;

CF_REJECT

pub const CF_REJECT = 1;

CF_DEFER

pub const CF_DEFER = 2;

SD_RECEIVE

pub const SD_RECEIVE = 0;

SD_SEND

pub const SD_SEND = 1;

SD_BOTH

pub const SD_BOTH = 2;

SG_UNCONSTRAINED_GROUP

pub const SG_UNCONSTRAINED_GROUP = 1;

SG_CONSTRAINED_GROUP

pub const SG_CONSTRAINED_GROUP = 2;

MAX_PROTOCOL_CHAIN

pub const MAX_PROTOCOL_CHAIN = 7;

BASE_PROTOCOL

pub const BASE_PROTOCOL = 1;

LAYERED_PROTOCOL

pub const LAYERED_PROTOCOL = 0;

WSAPROTOCOL_LEN

pub const WSAPROTOCOL_LEN = 255;

PFL_MULTIPLE_PROTO_ENTRIES

pub const PFL_MULTIPLE_PROTO_ENTRIES = 1;

PFL_RECOMMENDED_PROTO_ENTRY

pub const PFL_RECOMMENDED_PROTO_ENTRY = 2;

PFL_HIDDEN

pub const PFL_HIDDEN = 4;

PFL_MATCHES_PROTOCOL_ZERO

pub const PFL_MATCHES_PROTOCOL_ZERO = 8;

PFL_NETWORKDIRECT_PROVIDER

pub const PFL_NETWORKDIRECT_PROVIDER = 16;

XP1_CONNECTIONLESS

pub const XP1_CONNECTIONLESS = 1;

XP1_GUARANTEED_DELIVERY

pub const XP1_GUARANTEED_DELIVERY = 2;

XP1_GUARANTEED_ORDER

pub const XP1_GUARANTEED_ORDER = 4;

XP1_MESSAGE_ORIENTED

pub const XP1_MESSAGE_ORIENTED = 8;

XP1_PSEUDO_STREAM

pub const XP1_PSEUDO_STREAM = 16;

XP1_GRACEFUL_CLOSE

pub const XP1_GRACEFUL_CLOSE = 32;

XP1_EXPEDITED_DATA

pub const XP1_EXPEDITED_DATA = 64;

XP1_CONNECT_DATA

pub const XP1_CONNECT_DATA = 128;

XP1_DISCONNECT_DATA

pub const XP1_DISCONNECT_DATA = 256;

XP1_SUPPORT_BROADCAST

pub const XP1_SUPPORT_BROADCAST = 512;

XP1_SUPPORT_MULTIPOINT

pub const XP1_SUPPORT_MULTIPOINT = 1024;

XP1_MULTIPOINT_CONTROL_PLANE

pub const XP1_MULTIPOINT_CONTROL_PLANE = 2048;

XP1_MULTIPOINT_DATA_PLANE

pub const XP1_MULTIPOINT_DATA_PLANE = 4096;

XP1_QOS_SUPPORTED

pub const XP1_QOS_SUPPORTED = 8192;

XP1_INTERRUPT

pub const XP1_INTERRUPT = 16384;

XP1_UNI_SEND

pub const XP1_UNI_SEND = 32768;

XP1_UNI_RECV

pub const XP1_UNI_RECV = 65536;

XP1_IFS_HANDLES

pub const XP1_IFS_HANDLES = 131072;

XP1_PARTIAL_MESSAGE

pub const XP1_PARTIAL_MESSAGE = 262144;

XP1_SAN_SUPPORT_SDP

pub const XP1_SAN_SUPPORT_SDP = 524288;

BIGENDIAN

pub const BIGENDIAN = 0;

LITTLEENDIAN

pub const LITTLEENDIAN = 1;

SECURITY_PROTOCOL_NONE

pub const SECURITY_PROTOCOL_NONE = 0;

JL_SENDER_ONLY

pub const JL_SENDER_ONLY = 1;

JL_RECEIVER_ONLY

pub const JL_RECEIVER_ONLY = 2;

JL_BOTH

pub const JL_BOTH = 4;

WSA_FLAG_OVERLAPPED

pub const WSA_FLAG_OVERLAPPED = 1;

WSA_FLAG_MULTIPOINT_C_ROOT

pub const WSA_FLAG_MULTIPOINT_C_ROOT = 2;

WSA_FLAG_MULTIPOINT_C_LEAF

pub const WSA_FLAG_MULTIPOINT_C_LEAF = 4;

WSA_FLAG_MULTIPOINT_D_ROOT

pub const WSA_FLAG_MULTIPOINT_D_ROOT = 8;

WSA_FLAG_MULTIPOINT_D_LEAF

pub const WSA_FLAG_MULTIPOINT_D_LEAF = 16;

WSA_FLAG_ACCESS_SYSTEM_SECURITY

pub const WSA_FLAG_ACCESS_SYSTEM_SECURITY = 64;

WSA_FLAG_NO_HANDLE_INHERIT

pub const WSA_FLAG_NO_HANDLE_INHERIT = 128;

WSA_FLAG_REGISTERED_IO

pub const WSA_FLAG_REGISTERED_IO = 256;

TH_NETDEV

pub const TH_NETDEV = 1;

TH_TAPI

pub const TH_TAPI = 2;

SERVICE_MULTIPLE

pub const SERVICE_MULTIPLE = 1;

NS_LOCALNAME

pub const NS_LOCALNAME = 19;

RES_UNUSED_1

pub const RES_UNUSED_1 = 1;

RES_FLUSH_CACHE

pub const RES_FLUSH_CACHE = 2;

RES_SERVICE

pub const RES_SERVICE = 4;

LUP_DEEP

pub const LUP_DEEP = 1;

LUP_CONTAINERS

pub const LUP_CONTAINERS = 2;

LUP_NOCONTAINERS

pub const LUP_NOCONTAINERS = 4;

LUP_NEAREST

pub const LUP_NEAREST = 8;

LUP_RETURN_NAME

pub const LUP_RETURN_NAME = 16;

LUP_RETURN_TYPE

pub const LUP_RETURN_TYPE = 32;

LUP_RETURN_VERSION

pub const LUP_RETURN_VERSION = 64;

LUP_RETURN_COMMENT

pub const LUP_RETURN_COMMENT = 128;

LUP_RETURN_ADDR

pub const LUP_RETURN_ADDR = 256;

LUP_RETURN_BLOB

pub const LUP_RETURN_BLOB = 512;

LUP_RETURN_ALIASES

pub const LUP_RETURN_ALIASES = 1024;

LUP_RETURN_QUERY_STRING

pub const LUP_RETURN_QUERY_STRING = 2048;

LUP_RETURN_ALL

pub const LUP_RETURN_ALL = 4080;

LUP_RES_SERVICE

pub const LUP_RES_SERVICE = 32768;

LUP_FLUSHCACHE

pub const LUP_FLUSHCACHE = 4096;

LUP_FLUSHPREVIOUS

pub const LUP_FLUSHPREVIOUS = 8192;

LUP_NON_AUTHORITATIVE

pub const LUP_NON_AUTHORITATIVE = 16384;

LUP_SECURE

pub const LUP_SECURE = 32768;

LUP_RETURN_PREFERRED_NAMES

pub const LUP_RETURN_PREFERRED_NAMES = 65536;

LUP_DNS_ONLY

pub const LUP_DNS_ONLY = 131072;

LUP_ADDRCONFIG

pub const LUP_ADDRCONFIG = 1048576;

LUP_DUAL_ADDR

pub const LUP_DUAL_ADDR = 2097152;

LUP_FILESERVER

pub const LUP_FILESERVER = 4194304;

LUP_DISABLE_IDN_ENCODING

pub const LUP_DISABLE_IDN_ENCODING = 8388608;

LUP_API_ANSI

pub const LUP_API_ANSI = 16777216;

LUP_RESOLUTION_HANDLE

pub const LUP_RESOLUTION_HANDLE = 2147483648;

RESULT_IS_ALIAS

pub const RESULT_IS_ALIAS = 1;

RESULT_IS_ADDED

pub const RESULT_IS_ADDED = 16;

RESULT_IS_CHANGED

pub const RESULT_IS_CHANGED = 32;

RESULT_IS_DELETED

pub const RESULT_IS_DELETED = 64;

POLL

pub const POLL = struct {
    pub const RDNORM = 256;
    pub const RDBAND = 512;
    pub const PRI = 1024;
    pub const WRNORM = 16;
    pub const WRBAND = 32;
    pub const ERR = 1;
    pub const HUP = 2;
    pub const NVAL = 4;
};

TF_DISCONNECT

pub const TF_DISCONNECT = 1;

TF_REUSE_SOCKET

pub const TF_REUSE_SOCKET = 2;

TF_WRITE_BEHIND

pub const TF_WRITE_BEHIND = 4;

TF_USE_DEFAULT_WORKER

pub const TF_USE_DEFAULT_WORKER = 0;

TF_USE_SYSTEM_THREAD

pub const TF_USE_SYSTEM_THREAD = 16;

TF_USE_KERNEL_APC

pub const TF_USE_KERNEL_APC = 32;

TP_ELEMENT_MEMORY

pub const TP_ELEMENT_MEMORY = 1;

TP_ELEMENT_FILE

pub const TP_ELEMENT_FILE = 2;

TP_ELEMENT_EOP

pub const TP_ELEMENT_EOP = 4;

NLA_ALLUSERS_NETWORK

pub const NLA_ALLUSERS_NETWORK = 1;

NLA_FRIENDLY_NAME

pub const NLA_FRIENDLY_NAME = 2;

WSPDESCRIPTION_LEN

pub const WSPDESCRIPTION_LEN = 255;

WSS_OPERATION_IN_PROGRESS

pub const WSS_OPERATION_IN_PROGRESS = 259;

LSP_SYSTEM

pub const LSP_SYSTEM = 2147483648;

LSP_INSPECTOR

pub const LSP_INSPECTOR = 1;

LSP_REDIRECTOR

pub const LSP_REDIRECTOR = 2;

LSP_PROXY

pub const LSP_PROXY = 4;

LSP_FIREWALL

pub const LSP_FIREWALL = 8;

LSP_INBOUND_MODIFY

pub const LSP_INBOUND_MODIFY = 16;

LSP_OUTBOUND_MODIFY

pub const LSP_OUTBOUND_MODIFY = 32;

LSP_CRYPTO_COMPRESS

pub const LSP_CRYPTO_COMPRESS = 64;

LSP_LOCAL_CACHE

pub const LSP_LOCAL_CACHE = 128;

IPPROTO

pub const IPPROTO = struct {
    pub const IP = 0;
    pub const ICMP = 1;
    pub const IGMP = 2;
    pub const GGP = 3;
    pub const TCP = 6;
    pub const PUP = 12;
    pub const UDP = 17;
    pub const IDP = 22;
    pub const ND = 77;
    pub const RM = 113;
    pub const RAW = 255;
    pub const MAX = 256;
};

IP_DEFAULT_MULTICAST_TTL

pub const IP_DEFAULT_MULTICAST_TTL = 1;

IP_DEFAULT_MULTICAST_LOOP

pub const IP_DEFAULT_MULTICAST_LOOP = 1;

IP_MAX_MEMBERSHIPS

pub const IP_MAX_MEMBERSHIPS = 20;

FD_READ

pub const FD_READ = 1;

FD_WRITE

pub const FD_WRITE = 2;

FD_OOB

pub const FD_OOB = 4;

FD_ACCEPT

pub const FD_ACCEPT = 8;

FD_CONNECT

pub const FD_CONNECT = 16;

FD_CLOSE

pub const FD_CLOSE = 32;

SERVICE_RESOURCE

pub const SERVICE_RESOURCE = 1;

SERVICE_SERVICE

pub const SERVICE_SERVICE = 2;

SERVICE_LOCAL

pub const SERVICE_LOCAL = 4;

SERVICE_FLAG_DEFER

pub const SERVICE_FLAG_DEFER = 1;

SERVICE_FLAG_HARD

pub const SERVICE_FLAG_HARD = 2;

PROP_COMMENT

pub const PROP_COMMENT = 1;

PROP_LOCALE

pub const PROP_LOCALE = 2;

PROP_DISPLAY_HINT

pub const PROP_DISPLAY_HINT = 4;

PROP_VERSION

pub const PROP_VERSION = 8;

PROP_START_TIME

pub const PROP_START_TIME = 16;

PROP_MACHINE

pub const PROP_MACHINE = 32;

PROP_ADDRESSES

pub const PROP_ADDRESSES = 256;

PROP_SD

pub const PROP_SD = 512;

PROP_ALL

pub const PROP_ALL = 2147483648;

SERVICE_ADDRESS_FLAG_RPC_CN

pub const SERVICE_ADDRESS_FLAG_RPC_CN = 1;

SERVICE_ADDRESS_FLAG_RPC_DG

pub const SERVICE_ADDRESS_FLAG_RPC_DG = 2;

SERVICE_ADDRESS_FLAG_RPC_NB

pub const SERVICE_ADDRESS_FLAG_RPC_NB = 4;

NS_DEFAULT

pub const NS_DEFAULT = 0;

NS_VNS

pub const NS_VNS = 50;

NSTYPE_HIERARCHICAL

pub const NSTYPE_HIERARCHICAL = 1;

NSTYPE_DYNAMIC

pub const NSTYPE_DYNAMIC = 2;

NSTYPE_ENUMERABLE

pub const NSTYPE_ENUMERABLE = 4;

NSTYPE_WORKGROUP

pub const NSTYPE_WORKGROUP = 8;

XP_CONNECTIONLESS

pub const XP_CONNECTIONLESS = 1;

XP_GUARANTEED_DELIVERY

pub const XP_GUARANTEED_DELIVERY = 2;

XP_GUARANTEED_ORDER

pub const XP_GUARANTEED_ORDER = 4;

XP_MESSAGE_ORIENTED

pub const XP_MESSAGE_ORIENTED = 8;

XP_PSEUDO_STREAM

pub const XP_PSEUDO_STREAM = 16;

XP_GRACEFUL_CLOSE

pub const XP_GRACEFUL_CLOSE = 32;

XP_EXPEDITED_DATA

pub const XP_EXPEDITED_DATA = 64;

XP_CONNECT_DATA

pub const XP_CONNECT_DATA = 128;

XP_DISCONNECT_DATA

pub const XP_DISCONNECT_DATA = 256;

XP_SUPPORTS_BROADCAST

pub const XP_SUPPORTS_BROADCAST = 512;

XP_SUPPORTS_MULTICAST

pub const XP_SUPPORTS_MULTICAST = 1024;

XP_BANDWIDTH_ALLOCATION

pub const XP_BANDWIDTH_ALLOCATION = 2048;

XP_FRAGMENTATION

pub const XP_FRAGMENTATION = 4096;

XP_ENCRYPTS

pub const XP_ENCRYPTS = 8192;

RES_SOFT_SEARCH

pub const RES_SOFT_SEARCH = 1;

RES_FIND_MULTIPLE

pub const RES_FIND_MULTIPLE = 2;

SET_SERVICE_PARTIAL_SUCCESS

pub const SET_SERVICE_PARTIAL_SUCCESS = 1;

UDP_NOCHECKSUM

pub const UDP_NOCHECKSUM = 1;

UDP_CHECKSUM_COVERAGE

pub const UDP_CHECKSUM_COVERAGE = 20;

GAI_STRERROR_BUFFER_SIZE

pub const GAI_STRERROR_BUFFER_SIZE = 1024;

LPCONDITIONPROC

pub const LPCONDITIONPROC = *const fn (
    lpCallerId: *WSABUF,
    lpCallerData: *WSABUF,
    lpSQOS: *QOS,
    lpGQOS: *QOS,
    lpCalleeId: *WSABUF,
    lpCalleeData: *WSABUF,
    g: *u32,
    dwCallbackData: usize,
) callconv(WINAPI) i32;

LPWSAOVERLAPPED_COMPLETION_ROUTINE

pub const LPWSAOVERLAPPED_COMPLETION_ROUTINE = *const fn (
    dwError: u32,
    cbTransferred: u32,
    lpOverlapped: *OVERLAPPED,
    dwFlags: u32,
) callconv(WINAPI) void;

FLOWSPEC

pub const FLOWSPEC = extern struct {
    TokenRate: u32,
    TokenBucketSize: u32,
    PeakBandwidth: u32,
    Latency: u32,
    DelayVariation: u32,
    ServiceType: u32,
    MaxSduSize: u32,
    MinimumPolicedSize: u32,
};

QOS

pub const QOS = extern struct {
    SendingFlowspec: FLOWSPEC,
    ReceivingFlowspec: FLOWSPEC,
    ProviderSpecific: WSABUF,
};

SOCKET_ADDRESS

pub const SOCKET_ADDRESS = extern struct {
    lpSockaddr: *sockaddr,
    iSockaddrLength: i32,
};

SOCKET_ADDRESS_LIST

pub const SOCKET_ADDRESS_LIST = extern struct {
    iAddressCount: i32,
    Address: [1]SOCKET_ADDRESS,
};

WSADATA

pub const WSADATA = if (@sizeOf(usize) == @sizeOf(u64))
    extern struct {
        wVersion: WORD,
        wHighVersion: WORD,
        iMaxSockets: u16,
        iMaxUdpDg: u16,
        lpVendorInfo: *u8,
        szDescription: [WSADESCRIPTION_LEN + 1]u8,
        szSystemStatus: [WSASYS_STATUS_LEN + 1]u8,
    }
else
    extern struct {
        wVersion: WORD,
        wHighVersion: WORD,
        szDescription: [WSADESCRIPTION_LEN + 1]u8,
        szSystemStatus: [WSASYS_STATUS_LEN + 1]u8,
        iMaxSockets: u16,
        iMaxUdpDg: u16,
        lpVendorInfo: *u8,
    };

WSAPROTOCOLCHAIN

pub const WSAPROTOCOLCHAIN = extern struct {
    ChainLen: c_int,
    ChainEntries: [MAX_PROTOCOL_CHAIN]DWORD,
};

WSAPROTOCOL_INFOA

pub const WSAPROTOCOL_INFOA = extern struct {
    dwServiceFlags1: DWORD,
    dwServiceFlags2: DWORD,
    dwServiceFlags3: DWORD,
    dwServiceFlags4: DWORD,
    dwProviderFlags: DWORD,
    ProviderId: GUID,
    dwCatalogEntryId: DWORD,
    ProtocolChain: WSAPROTOCOLCHAIN,
    iVersion: c_int,
    iAddressFamily: c_int,
    iMaxSockAddr: c_int,
    iMinSockAddr: c_int,
    iSocketType: c_int,
    iProtocol: c_int,
    iProtocolMaxOffset: c_int,
    iNetworkByteOrder: c_int,
    iSecurityScheme: c_int,
    dwMessageSize: DWORD,
    dwProviderReserved: DWORD,
    szProtocol: [WSAPROTOCOL_LEN + 1]CHAR,
};

WSAPROTOCOL_INFOW

pub const WSAPROTOCOL_INFOW = extern struct {
    dwServiceFlags1: DWORD,
    dwServiceFlags2: DWORD,
    dwServiceFlags3: DWORD,
    dwServiceFlags4: DWORD,
    dwProviderFlags: DWORD,
    ProviderId: GUID,
    dwCatalogEntryId: DWORD,
    ProtocolChain: WSAPROTOCOLCHAIN,
    iVersion: c_int,
    iAddressFamily: c_int,
    iMaxSockAddr: c_int,
    iMinSockAddr: c_int,
    iSocketType: c_int,
    iProtocol: c_int,
    iProtocolMaxOffset: c_int,
    iNetworkByteOrder: c_int,
    iSecurityScheme: c_int,
    dwMessageSize: DWORD,
    dwProviderReserved: DWORD,
    szProtocol: [WSAPROTOCOL_LEN + 1]WCHAR,
};

sockproto

pub const sockproto = extern struct {
    sp_family: u16,
    sp_protocol: u16,
};

linger

pub const linger = extern struct {
    l_onoff: u16,
    l_linger: u16,
};

WSANETWORKEVENTS

pub const WSANETWORKEVENTS = extern struct {
    lNetworkEvents: i32,
    iErrorCode: [10]i32,
};

addrinfo

pub const addrinfo = addrinfoa;

addrinfoa

pub const addrinfoa = extern struct {
    flags: i32,
    family: i32,
    socktype: i32,
    protocol: i32,
    addrlen: usize,
    canonname: ?[*:0]u8,
    addr: ?*sockaddr,
    next: ?*addrinfo,
};

addrinfoexA

pub const addrinfoexA = extern struct {
    ai_flags: i32,
    ai_family: i32,
    ai_socktype: i32,
    ai_protocol: i32,
    ai_addrlen: usize,
    ai_canonname: [*:0]u8,
    ai_addr: *sockaddr,
    ai_blob: *anyopaque,
    ai_bloblen: usize,
    ai_provider: *GUID,
    ai_next: *addrinfoexA,
};

sockaddr

pub const sockaddr = extern struct {
    family: ADDRESS_FAMILY,
    data: [14]u8,

    pub const SS_MAXSIZE = 128;
    pub const storage = extern struct {
        family: ADDRESS_FAMILY align(8),
        padding: [SS_MAXSIZE - @sizeOf(ADDRESS_FAMILY)]u8 = undefined,

        comptime {
            assert(@sizeOf(storage) == SS_MAXSIZE);
            assert(@alignOf(storage) == 8);
        }
    };

    pub const in = extern struct {
        family: ADDRESS_FAMILY = AF.INET,
        port: USHORT,
        addr: u32,
        zero: [8]u8 = [8]u8{ 0, 0, 0, 0, 0, 0, 0, 0 },
    };

    pub const in6 = extern struct {
        family: ADDRESS_FAMILY = AF.INET6,
        port: USHORT,
        flowinfo: u32,
        addr: [16]u8,
        scope_id: u32,
    };

    pub const un = extern struct {
        family: ADDRESS_FAMILY = AF.UNIX,
        path: [108]u8,
    };
};

WSABUF

IPv4 socket address IPv6 socket address UNIX domain socket address

pub const WSABUF = extern struct {
    len: ULONG,
    buf: [*]u8,
};

msghdr

pub const msghdr = WSAMSG;

msghdr_const

pub const msghdr_const = WSAMSG_const;

WSAMSG_const

pub const WSAMSG_const = extern struct {
    name: *const sockaddr,
    namelen: INT,
    lpBuffers: [*]const WSABUF,
    dwBufferCount: DWORD,
    Control: WSABUF,
    dwFlags: DWORD,
};

WSAMSG

pub const WSAMSG = extern struct {
    name: *sockaddr,
    namelen: INT,
    lpBuffers: [*]WSABUF,
    dwBufferCount: DWORD,
    Control: WSABUF,
    dwFlags: DWORD,
};

WSAPOLLFD

pub const WSAPOLLFD = pollfd;

pollfd

pub const pollfd = extern struct {
    fd: SOCKET,
    events: SHORT,
    revents: SHORT,
};

TRANSMIT_FILE_BUFFERS

pub const TRANSMIT_FILE_BUFFERS = extern struct {
    Head: *anyopaque,
    HeadLength: u32,
    Tail: *anyopaque,
    TailLength: u32,
};

LPFN_TRANSMITFILE

pub const LPFN_TRANSMITFILE = *const fn (
    hSocket: SOCKET,
    hFile: HANDLE,
    nNumberOfBytesToWrite: u32,
    nNumberOfBytesPerSend: u32,
    lpOverlapped: ?*OVERLAPPED,
    lpTransmitBuffers: ?*TRANSMIT_FILE_BUFFERS,
    dwReserved: u32,
) callconv(WINAPI) BOOL;

LPFN_ACCEPTEX

pub const LPFN_ACCEPTEX = *const fn (
    sListenSocket: SOCKET,
    sAcceptSocket: SOCKET,
    lpOutputBuffer: *anyopaque,
    dwReceiveDataLength: u32,
    dwLocalAddressLength: u32,
    dwRemoteAddressLength: u32,
    lpdwBytesReceived: *u32,
    lpOverlapped: *OVERLAPPED,
) callconv(WINAPI) BOOL;

LPFN_GETACCEPTEXSOCKADDRS

pub const LPFN_GETACCEPTEXSOCKADDRS = *const fn (
    lpOutputBuffer: *anyopaque,
    dwReceiveDataLength: u32,
    dwLocalAddressLength: u32,
    dwRemoteAddressLength: u32,
    LocalSockaddr: **sockaddr,
    LocalSockaddrLength: *i32,
    RemoteSockaddr: **sockaddr,
    RemoteSockaddrLength: *i32,
) callconv(WINAPI) void;

LPFN_WSASENDMSG

pub const LPFN_WSASENDMSG = *const fn (
    s: SOCKET,
    lpMsg: *const WSAMSG_const,
    dwFlags: u32,
    lpNumberOfBytesSent: ?*u32,
    lpOverlapped: ?*OVERLAPPED,
    lpCompletionRoutine: ?LPWSAOVERLAPPED_COMPLETION_ROUTINE,
) callconv(WINAPI) i32;

LPFN_WSARECVMSG

pub const LPFN_WSARECVMSG = *const fn (
    s: SOCKET,
    lpMsg: *WSAMSG,
    lpdwNumberOfBytesRecv: ?*u32,
    lpOverlapped: ?*OVERLAPPED,
    lpCompletionRoutine: ?LPWSAOVERLAPPED_COMPLETION_ROUTINE,
) callconv(WINAPI) i32;

LPSERVICE_CALLBACK_PROC

pub const LPSERVICE_CALLBACK_PROC = *const fn (
    lParam: LPARAM,
    hAsyncTaskHandle: HANDLE,
) callconv(WINAPI) void;

SERVICE_ASYNC_INFO

pub const SERVICE_ASYNC_INFO = extern struct {
    lpServiceCallbackProc: LPSERVICE_CALLBACK_PROC,
    lParam: LPARAM,
    hAsyncTaskHandle: HANDLE,
};

LPLOOKUPSERVICE_COMPLETION_ROUTINE

pub const LPLOOKUPSERVICE_COMPLETION_ROUTINE = *const fn (
    dwError: u32,
    dwBytes: u32,
    lpOverlapped: *OVERLAPPED,
) callconv(WINAPI) void;

fd_set

pub const fd_set = extern struct {
    fd_count: u32,
    fd_array: [64]SOCKET,
};

hostent

pub const hostent = extern struct {
    h_name: [*]u8,
    h_aliases: **i8,
    h_addrtype: i16,
    h_length: i16,
    h_addr_list: **i8,
};

// https://docs.microsoft.com/en-au/windows/win32/winsock/windows-sockets-error-codes-2

WinsockError

pub const WinsockError = enum(u16) {
    WSA_INVALID_HANDLE = 6,

    WSA_NOT_ENOUGH_MEMORY = 8,

    WSA_INVALID_PARAMETER = 87,

    WSA_OPERATION_ABORTED = 995,

    WSA_IO_INCOMPLETE = 996,

    WSA_IO_PENDING = 997,

    WSAEINTR = 10004,

    WSAEBADF = 10009,

    WSAEACCES = 10013,

    WSAEFAULT = 10014,

    WSAEINVAL = 10022,

    WSAEMFILE = 10024,

    WSAEWOULDBLOCK = 10035,

    WSAEINPROGRESS = 10036,

    WSAEALREADY = 10037,

    WSAENOTSOCK = 10038,

    WSAEDESTADDRREQ = 10039,

    WSAEMSGSIZE = 10040,

    WSAEPROTOTYPE = 10041,

    WSAENOPROTOOPT = 10042,

    WSAEPROTONOSUPPORT = 10043,

    WSAESOCKTNOSUPPORT = 10044,

    WSAEOPNOTSUPP = 10045,

    WSAEPFNOSUPPORT = 10046,

    WSAEAFNOSUPPORT = 10047,

    WSAEADDRINUSE = 10048,

    WSAEADDRNOTAVAIL = 10049,

    WSAENETDOWN = 10050,

    WSAENETUNREACH = 10051,

    WSAENETRESET = 10052,

    WSAECONNABORTED = 10053,

    WSAECONNRESET = 10054,

    WSAENOBUFS = 10055,

    WSAEISCONN = 10056,

    WSAENOTCONN = 10057,

    WSAESHUTDOWN = 10058,

    WSAETOOMANYREFS = 10059,

    WSAETIMEDOUT = 10060,

    WSAECONNREFUSED = 10061,

    WSAELOOP = 10062,

    WSAENAMETOOLONG = 10063,

    WSAEHOSTDOWN = 10064,

    WSAEHOSTUNREACH = 10065,

    WSAENOTEMPTY = 10066,

    WSAEPROCLIM = 10067,

    WSAEUSERS = 10068,

    WSAEDQUOT = 10069,

    WSAESTALE = 10070,

    WSAEREMOTE = 10071,

    WSASYSNOTREADY = 10091,

    WSAVERNOTSUPPORTED = 10092,

    WSANOTINITIALISED = 10093,

    WSAEDISCON = 10101,

    WSAENOMORE = 10102,

    WSAECANCELLED = 10103,

    WSAEINVALIDPROCTABLE = 10104,

    WSAEINVALIDPROVIDER = 10105,

    WSAEPROVIDERFAILEDINIT = 10106,

    WSASYSCALLFAILURE = 10107,

    WSASERVICE_NOT_FOUND = 10108,

    WSATYPE_NOT_FOUND = 10109,

    WSA_E_NO_MORE = 10110,

    WSA_E_CANCELLED = 10111,

    WSAEREFUSED = 10112,

    WSAHOST_NOT_FOUND = 11001,

    WSATRY_AGAIN = 11002,

    WSANO_RECOVERY = 11003,

    WSANO_DATA = 11004,

    WSA_QOS_RECEIVERS = 11005,

    WSA_QOS_SENDERS = 11006,

    WSA_QOS_NO_SENDERS = 11007,

    WSA_QOS_NO_RECEIVERS = 11008,

    WSA_QOS_REQUEST_CONFIRMED = 11009,

    WSA_QOS_ADMISSION_FAILURE = 11010,

    WSA_QOS_POLICY_FAILURE = 11011,

    WSA_QOS_BAD_STYLE = 11012,

    WSA_QOS_BAD_OBJECT = 11013,

    WSA_QOS_TRAFFIC_CTRL_ERROR = 11014,

    WSA_QOS_GENERIC_ERROR = 11015,

    WSA_QOS_ESERVICETYPE = 11016,

    WSA_QOS_EFLOWSPEC = 11017,

    WSA_QOS_EPROVSPECBUF = 11018,

    WSA_QOS_EFILTERSTYLE = 11019,

    WSA_QOS_EFILTERTYPE = 11020,

    WSA_QOS_EFILTERCOUNT = 11021,

    WSA_QOS_EOBJLENGTH = 11022,

    WSA_QOS_EFLOWCOUNT = 11023,

    WSA_QOS_EUNKOWNPSOBJ = 11024,

    WSA_QOS_EPOLICYOBJ = 11025,

    WSA_QOS_EFLOWDESC = 11026,

    WSA_QOS_EPSFLOWSPEC = 11027,

    WSA_QOS_EPSFILTERSPEC = 11028,

    WSA_QOS_ESDMODEOBJ = 11029,

    WSA_QOS_ESHAPERATEOBJ = 11030,

    WSA_QOS_RESERVED_PETYPE = 11031,

    _,
};

pub extern "ws2_32" fn accept(
    s: SOCKET,
    addr: ?*sockaddr,
    addrlen: ?*i32,
) callconv(WINAPI) SOCKET;

pub extern "ws2_32" fn bind(
    s: SOCKET,
    name: *const sockaddr,
    namelen: i32,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn closesocket(
    s: SOCKET,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn connect(
    s: SOCKET,
    name: *const sockaddr,
    namelen: i32,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn ioctlsocket(
    s: SOCKET,
    cmd: i32,
    argp: *u32,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn getpeername(
    s: SOCKET,
    name: *sockaddr,
    namelen: *i32,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn getsockname(
    s: SOCKET,
    name: *sockaddr,
    namelen: *i32,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn getsockopt(
    s: SOCKET,
    level: i32,
    optname: i32,
    optval: [*]u8,
    optlen: *i32,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn htonl(
    hostlong: u32,
) callconv(WINAPI) u32;

pub extern "ws2_32" fn htons(
    hostshort: u16,
) callconv(WINAPI) u16;

pub extern "ws2_32" fn inet_addr(
    cp: ?[*]const u8,
) callconv(WINAPI) u32;

pub extern "ws2_32" fn listen(
    s: SOCKET,
    backlog: i32,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn ntohl(
    netlong: u32,
) callconv(WINAPI) u32;

pub extern "ws2_32" fn ntohs(
    netshort: u16,
) callconv(WINAPI) u16;

pub extern "ws2_32" fn recv(
    s: SOCKET,
    buf: [*]u8,
    len: i32,
    flags: i32,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn recvfrom(
    s: SOCKET,
    buf: [*]u8,
    len: i32,
    flags: i32,
    from: ?*sockaddr,
    fromlen: ?*i32,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn select(
    nfds: i32,
    readfds: ?*fd_set,
    writefds: ?*fd_set,
    exceptfds: ?*fd_set,
    timeout: ?*const timeval,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn send(
    s: SOCKET,
    buf: [*]const u8,
    len: i32,
    flags: u32,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn sendto(
    s: SOCKET,
    buf: [*]const u8,
    len: i32,
    flags: i32,
    to: *const sockaddr,
    tolen: i32,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn setsockopt(
    s: SOCKET,
    level: i32,
    optname: i32,
    optval: ?[*]const u8,
    optlen: i32,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn shutdown(
    s: SOCKET,
    how: i32,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn socket(
    af: i32,
    @"type": i32,
    protocol: i32,
) callconv(WINAPI) SOCKET;

pub extern "ws2_32" fn WSAStartup(
    wVersionRequired: WORD,
    lpWSAData: *WSADATA,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn WSACleanup() callconv(WINAPI) i32;

pub extern "ws2_32" fn WSASetLastError(iError: i32) callconv(WINAPI) void;

pub extern "ws2_32" fn WSAGetLastError() callconv(WINAPI) WinsockError;

pub extern "ws2_32" fn WSAIsBlocking() callconv(WINAPI) BOOL;

pub extern "ws2_32" fn WSAUnhookBlockingHook() callconv(WINAPI) i32;

pub extern "ws2_32" fn WSASetBlockingHook(lpBlockFunc: FARPROC) callconv(WINAPI) FARPROC;

pub extern "ws2_32" fn WSACancelBlockingCall() callconv(WINAPI) i32;

pub extern "ws2_32" fn WSAAsyncGetServByName(
    hWnd: HWND,
    wMsg: u32,
    name: [*:0]const u8,
    proto: ?[*:0]const u8,
    buf: [*]u8,
    buflen: i32,
) callconv(WINAPI) HANDLE;

pub extern "ws2_32" fn WSAAsyncGetServByPort(
    hWnd: HWND,
    wMsg: u32,
    port: i32,
    proto: ?[*:0]const u8,
    buf: [*]u8,
    buflen: i32,
) callconv(WINAPI) HANDLE;

pub extern "ws2_32" fn WSAAsyncGetProtoByName(
    hWnd: HWND,
    wMsg: u32,
    name: [*:0]const u8,
    buf: [*]u8,
    buflen: i32,
) callconv(WINAPI) HANDLE;

pub extern "ws2_32" fn WSAAsyncGetProtoByNumber(
    hWnd: HWND,
    wMsg: u32,
    number: i32,
    buf: [*]u8,
    buflen: i32,
) callconv(WINAPI) HANDLE;

pub extern "ws2_32" fn WSACancelAsyncRequest(hAsyncTaskHandle: HANDLE) callconv(WINAPI) i32;

pub extern "ws2_32" fn WSAAsyncSelect(
    s: SOCKET,
    hWnd: HWND,
    wMsg: u32,
    lEvent: i32,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn WSAAccept(
    s: SOCKET,
    addr: ?*sockaddr,
    addrlen: ?*i32,
    lpfnCondition: ?LPCONDITIONPROC,
    dwCallbackData: usize,
) callconv(WINAPI) SOCKET;

pub extern "ws2_32" fn WSACloseEvent(hEvent: HANDLE) callconv(WINAPI) BOOL;

pub extern "ws2_32" fn WSAConnect(
    s: SOCKET,
    name: *const sockaddr,
    namelen: i32,
    lpCallerData: ?*WSABUF,
    lpCalleeData: ?*WSABUF,
    lpSQOS: ?*QOS,
    lpGQOS: ?*QOS,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn WSAConnectByNameW(
    s: SOCKET,
    nodename: [*:0]const u16,
    servicename: [*:0]const u16,
    LocalAddressLength: ?*u32,
    LocalAddress: ?*sockaddr,
    RemoteAddressLength: ?*u32,
    RemoteAddress: ?*sockaddr,
    timeout: ?*const timeval,
    Reserved: *OVERLAPPED,
) callconv(WINAPI) BOOL;

pub extern "ws2_32" fn WSAConnectByNameA(
    s: SOCKET,
    nodename: [*:0]const u8,
    servicename: [*:0]const u8,
    LocalAddressLength: ?*u32,
    LocalAddress: ?*sockaddr,
    RemoteAddressLength: ?*u32,
    RemoteAddress: ?*sockaddr,
    timeout: ?*const timeval,
    Reserved: *OVERLAPPED,
) callconv(WINAPI) BOOL;

pub extern "ws2_32" fn WSAConnectByList(
    s: SOCKET,
    SocketAddress: *SOCKET_ADDRESS_LIST,
    LocalAddressLength: ?*u32,
    LocalAddress: ?*sockaddr,
    RemoteAddressLength: ?*u32,
    RemoteAddress: ?*sockaddr,
    timeout: ?*const timeval,
    Reserved: *OVERLAPPED,
) callconv(WINAPI) BOOL;

pub extern "ws2_32" fn WSACreateEvent() callconv(WINAPI) HANDLE;

pub extern "ws2_32" fn WSADuplicateSocketA(
    s: SOCKET,
    dwProcessId: u32,
    lpProtocolInfo: *WSAPROTOCOL_INFOA,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn WSADuplicateSocketW(
    s: SOCKET,
    dwProcessId: u32,
    lpProtocolInfo: *WSAPROTOCOL_INFOW,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn WSAEnumNetworkEvents(
    s: SOCKET,
    hEventObject: HANDLE,
    lpNetworkEvents: *WSANETWORKEVENTS,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn WSAEnumProtocolsA(
    lpiProtocols: ?*i32,
    lpProtocolBuffer: ?*WSAPROTOCOL_INFOA,
    lpdwBufferLength: *u32,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn WSAEnumProtocolsW(
    lpiProtocols: ?*i32,
    lpProtocolBuffer: ?*WSAPROTOCOL_INFOW,
    lpdwBufferLength: *u32,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn WSAEventSelect(
    s: SOCKET,
    hEventObject: HANDLE,
    lNetworkEvents: i32,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn WSAGetOverlappedResult(
    s: SOCKET,
    lpOverlapped: *OVERLAPPED,
    lpcbTransfer: *u32,
    fWait: BOOL,
    lpdwFlags: *u32,
) callconv(WINAPI) BOOL;

pub extern "ws2_32" fn WSAGetQOSByName(
    s: SOCKET,
    lpQOSName: *WSABUF,
    lpQOS: *QOS,
) callconv(WINAPI) BOOL;

pub extern "ws2_32" fn WSAHtonl(
    s: SOCKET,
    hostlong: u32,
    lpnetlong: *u32,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn WSAHtons(
    s: SOCKET,
    hostshort: u16,
    lpnetshort: *u16,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn WSAIoctl(
    s: SOCKET,
    dwIoControlCode: u32,
    lpvInBuffer: ?*const anyopaque,
    cbInBuffer: u32,
    lpvOutbuffer: ?*anyopaque,
    cbOutbuffer: u32,
    lpcbBytesReturned: *u32,
    lpOverlapped: ?*OVERLAPPED,
    lpCompletionRoutine: ?LPWSAOVERLAPPED_COMPLETION_ROUTINE,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn WSAJoinLeaf(
    s: SOCKET,
    name: *const sockaddr,
    namelen: i32,
    lpCallerdata: ?*WSABUF,
    lpCalleeData: ?*WSABUF,
    lpSQOS: ?*QOS,
    lpGQOS: ?*QOS,
    dwFlags: u32,
) callconv(WINAPI) SOCKET;

pub extern "ws2_32" fn WSANtohl(
    s: SOCKET,
    netlong: u32,
    lphostlong: *u32,
) callconv(WINAPI) u32;

pub extern "ws2_32" fn WSANtohs(
    s: SOCKET,
    netshort: u16,
    lphostshort: *u16,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn WSARecv(
    s: SOCKET,
    lpBuffers: [*]WSABUF,
    dwBufferCouynt: u32,
    lpNumberOfBytesRecv: ?*u32,
    lpFlags: *u32,
    lpOverlapped: ?*OVERLAPPED,
    lpCompletionRoutine: ?LPWSAOVERLAPPED_COMPLETION_ROUTINE,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn WSARecvDisconnect(
    s: SOCKET,
    lpInboundDisconnectData: ?*WSABUF,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn WSARecvFrom(
    s: SOCKET,
    lpBuffers: [*]WSABUF,
    dwBuffercount: u32,
    lpNumberOfBytesRecvd: ?*u32,
    lpFlags: *u32,
    lpFrom: ?*sockaddr,
    lpFromlen: ?*i32,
    lpOverlapped: ?*OVERLAPPED,
    lpCompletionRoutine: ?LPWSAOVERLAPPED_COMPLETION_ROUTINE,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn WSAResetEvent(hEvent: HANDLE) callconv(WINAPI) i32;

pub extern "ws2_32" fn WSASend(
    s: SOCKET,
    lpBuffers: [*]WSABUF,
    dwBufferCount: u32,
    lpNumberOfBytesSent: ?*u32,
    dwFlags: u32,
    lpOverlapped: ?*OVERLAPPED,
    lpCompletionRoutine: ?LPWSAOVERLAPPED_COMPLETION_ROUTINE,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn WSASendMsg(
    s: SOCKET,
    lpMsg: *WSAMSG_const,
    dwFlags: u32,
    lpNumberOfBytesSent: ?*u32,
    lpOverlapped: ?*OVERLAPPED,
    lpCompletionRoutine: ?LPWSAOVERLAPPED_COMPLETION_ROUTINE,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn WSARecvMsg(
    s: SOCKET,
    lpMsg: *WSAMSG,
    lpdwNumberOfBytesRecv: ?*u32,
    lpOverlapped: ?*OVERLAPPED,
    lpCompletionRoutine: ?LPWSAOVERLAPPED_COMPLETION_ROUTINE,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn WSASendDisconnect(
    s: SOCKET,
    lpOutboundDisconnectData: ?*WSABUF,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn WSASendTo(
    s: SOCKET,
    lpBuffers: [*]WSABUF,
    dwBufferCount: u32,
    lpNumberOfBytesSent: ?*u32,
    dwFlags: u32,
    lpTo: ?*const sockaddr,
    iToLen: i32,
    lpOverlapped: ?*OVERLAPPED,
    lpCompletionRounte: ?LPWSAOVERLAPPED_COMPLETION_ROUTINE,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn WSASetEvent(
    hEvent: HANDLE,
) callconv(WINAPI) BOOL;

pub extern "ws2_32" fn WSASocketA(
    af: i32,
    @"type": i32,
    protocol: i32,
    lpProtocolInfo: ?*WSAPROTOCOL_INFOA,
    g: u32,
    dwFlags: u32,
) callconv(WINAPI) SOCKET;

pub extern "ws2_32" fn WSASocketW(
    af: i32,
    @"type": i32,
    protocol: i32,
    lpProtocolInfo: ?*WSAPROTOCOL_INFOW,
    g: u32,
    dwFlags: u32,
) callconv(WINAPI) SOCKET;

pub extern "ws2_32" fn WSAWaitForMultipleEvents(
    cEvents: u32,
    lphEvents: [*]const HANDLE,
    fWaitAll: BOOL,
    dwTimeout: u32,
    fAlertable: BOOL,
) callconv(WINAPI) u32;

pub extern "ws2_32" fn WSAAddressToStringA(
    lpsaAddress: *sockaddr,
    dwAddressLength: u32,
    lpProtocolInfo: ?*WSAPROTOCOL_INFOA,
    lpszAddressString: [*]u8,
    lpdwAddressStringLength: *u32,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn WSAAddressToStringW(
    lpsaAddress: *sockaddr,
    dwAddressLength: u32,
    lpProtocolInfo: ?*WSAPROTOCOL_INFOW,
    lpszAddressString: [*]u16,
    lpdwAddressStringLength: *u32,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn WSAStringToAddressA(
    AddressString: [*:0]const u8,
    AddressFamily: i32,
    lpProtocolInfo: ?*WSAPROTOCOL_INFOA,
    lpAddress: *sockaddr,
    lpAddressLength: *i32,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn WSAStringToAddressW(
    AddressString: [*:0]const u16,
    AddressFamily: i32,
    lpProtocolInfo: ?*WSAPROTOCOL_INFOW,
    lpAddrses: *sockaddr,
    lpAddressLength: *i32,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn WSAProviderConfigChange(
    lpNotificationHandle: *HANDLE,
    lpOverlapped: ?*OVERLAPPED,
    lpCompletionRoutine: ?LPWSAOVERLAPPED_COMPLETION_ROUTINE,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn WSAPoll(
    fdArray: [*]WSAPOLLFD,
    fds: u32,
    timeout: i32,
) callconv(WINAPI) i32;

pub extern "mswsock" fn WSARecvEx(
    s: SOCKET,
    buf: [*]u8,
    len: i32,
    flags: *i32,
) callconv(WINAPI) i32;

pub extern "mswsock" fn TransmitFile(
    hSocket: SOCKET,
    hFile: HANDLE,
    nNumberOfBytesToWrite: u32,
    nNumberOfBytesPerSend: u32,
    lpOverlapped: ?*OVERLAPPED,
    lpTransmitBuffers: ?*TRANSMIT_FILE_BUFFERS,
    dwReserved: u32,
) callconv(WINAPI) BOOL;

pub extern "mswsock" fn AcceptEx(
    sListenSocket: SOCKET,
    sAcceptSocket: SOCKET,
    lpOutputBuffer: *anyopaque,
    dwReceiveDataLength: u32,
    dwLocalAddressLength: u32,
    dwRemoteAddressLength: u32,
    lpdwBytesReceived: *u32,
    lpOverlapped: *OVERLAPPED,
) callconv(WINAPI) BOOL;

pub extern "mswsock" fn GetAcceptExSockaddrs(
    lpOutputBuffer: *anyopaque,
    dwReceiveDataLength: u32,
    dwLocalAddressLength: u32,
    dwRemoteAddressLength: u32,
    LocalSockaddr: **sockaddr,
    LocalSockaddrLength: *i32,
    RemoteSockaddr: **sockaddr,
    RemoteSockaddrLength: *i32,
) callconv(WINAPI) void;

pub extern "ws2_32" fn WSAProviderCompleteAsyncCall(
    hAsyncCall: HANDLE,
    iRetCode: i32,
) callconv(WINAPI) i32;

pub extern "mswsock" fn EnumProtocolsA(
    lpiProtocols: ?*i32,
    lpProtocolBuffer: *anyopaque,
    lpdwBufferLength: *u32,
) callconv(WINAPI) i32;

pub extern "mswsock" fn EnumProtocolsW(
    lpiProtocols: ?*i32,
    lpProtocolBuffer: *anyopaque,
    lpdwBufferLength: *u32,
) callconv(WINAPI) i32;

pub extern "mswsock" fn GetAddressByNameA(
    dwNameSpace: u32,
    lpServiceType: *GUID,
    lpServiceName: ?[*:0]u8,
    lpiProtocols: ?*i32,
    dwResolution: u32,
    lpServiceAsyncInfo: ?*SERVICE_ASYNC_INFO,
    lpCsaddrBuffer: *anyopaque,
    lpAliasBuffer: ?[*:0]const u8,
    lpdwAliasBufferLength: *u32,
) callconv(WINAPI) i32;

pub extern "mswsock" fn GetAddressByNameW(
    dwNameSpace: u32,
    lpServiceType: *GUID,
    lpServiceName: ?[*:0]u16,
    lpiProtocols: ?*i32,
    dwResolution: u32,
    lpServiceAsyncInfo: ?*SERVICE_ASYNC_INFO,
    lpCsaddrBuffer: *anyopaque,
    ldwBufferLEngth: *u32,
    lpAliasBuffer: ?[*:0]u16,
    lpdwAliasBufferLength: *u32,
) callconv(WINAPI) i32;

pub extern "mswsock" fn GetTypeByNameA(
    lpServiceName: [*:0]u8,
    lpServiceType: *GUID,
) callconv(WINAPI) i32;

pub extern "mswsock" fn GetTypeByNameW(
    lpServiceName: [*:0]u16,
    lpServiceType: *GUID,
) callconv(WINAPI) i32;

pub extern "mswsock" fn GetNameByTypeA(
    lpServiceType: *GUID,
    lpServiceName: [*:0]u8,
    dwNameLength: u32,
) callconv(WINAPI) i32;

pub extern "mswsock" fn GetNameByTypeW(
    lpServiceType: *GUID,
    lpServiceName: [*:0]u16,
    dwNameLength: u32,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn getaddrinfo(
    pNodeName: ?[*:0]const u8,
    pServiceName: ?[*:0]const u8,
    pHints: ?*const addrinfoa,
    ppResult: *?*addrinfoa,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn GetAddrInfoExA(
    pName: ?[*:0]const u8,
    pServiceName: ?[*:0]const u8,
    dwNameSapce: u32,
    lpNspId: ?*GUID,
    hints: ?*const addrinfoexA,
    ppResult: **addrinfoexA,
    timeout: ?*timeval,
    lpOverlapped: ?*OVERLAPPED,
    lpCompletionRoutine: ?LPLOOKUPSERVICE_COMPLETION_ROUTINE,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn GetAddrInfoExCancel(
    lpHandle: *HANDLE,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn GetAddrInfoExOverlappedResult(
    lpOverlapped: *OVERLAPPED,
) callconv(WINAPI) i32;

pub extern "ws2_32" fn freeaddrinfo(
    pAddrInfo: ?*addrinfoa,
) callconv(WINAPI) void;

pub extern "ws2_32" fn FreeAddrInfoEx(
    pAddrInfoEx: ?*addrinfoexA,
) callconv(WINAPI) void;

pub extern "ws2_32" fn getnameinfo(
    pSockaddr: *const sockaddr,
    SockaddrLength: i32,
    pNodeBuffer: ?[*]u8,
    NodeBufferSize: u32,
    pServiceBuffer: ?[*]u8,
    ServiceBufferName: u32,
    Flags: i32,
) callconv(WINAPI) i32;

pub extern "iphlpapi" fn if_nametoindex(
    InterfaceName: [*:0]const u8,
) callconv(WINAPI) u32;