//! NOTE: this file is autogenerated, DO NOT MODIFY
//--------------------------------------------------------------------------------
// Section: Constants (320)
//--------------------------------------------------------------------------------
pub const OPTION_PAD = @as(u32, 0);
pub const OPTION_SUBNET_MASK = @as(u32, 1);
pub const OPTION_TIME_OFFSET = @as(u32, 2);
pub const OPTION_ROUTER_ADDRESS = @as(u32, 3);
pub const OPTION_TIME_SERVERS = @as(u32, 4);
pub const OPTION_IEN116_NAME_SERVERS = @as(u32, 5);
pub const OPTION_DOMAIN_NAME_SERVERS = @as(u32, 6);
pub const OPTION_LOG_SERVERS = @as(u32, 7);
pub const OPTION_COOKIE_SERVERS = @as(u32, 8);
pub const OPTION_LPR_SERVERS = @as(u32, 9);
pub const OPTION_IMPRESS_SERVERS = @as(u32, 10);
pub const OPTION_RLP_SERVERS = @as(u32, 11);
pub const OPTION_HOST_NAME = @as(u32, 12);
pub const OPTION_BOOT_FILE_SIZE = @as(u32, 13);
pub const OPTION_MERIT_DUMP_FILE = @as(u32, 14);
pub const OPTION_DOMAIN_NAME = @as(u32, 15);
pub const OPTION_SWAP_SERVER = @as(u32, 16);
pub const OPTION_ROOT_DISK = @as(u32, 17);
pub const OPTION_EXTENSIONS_PATH = @as(u32, 18);
pub const OPTION_BE_A_ROUTER = @as(u32, 19);
pub const OPTION_NON_LOCAL_SOURCE_ROUTING = @as(u32, 20);
pub const OPTION_POLICY_FILTER_FOR_NLSR = @as(u32, 21);
pub const OPTION_MAX_REASSEMBLY_SIZE = @as(u32, 22);
pub const OPTION_DEFAULT_TTL = @as(u32, 23);
pub const OPTION_PMTU_AGING_TIMEOUT = @as(u32, 24);
pub const OPTION_PMTU_PLATEAU_TABLE = @as(u32, 25);
pub const OPTION_MTU = @as(u32, 26);
pub const OPTION_ALL_SUBNETS_MTU = @as(u32, 27);
pub const OPTION_BROADCAST_ADDRESS = @as(u32, 28);
pub const OPTION_PERFORM_MASK_DISCOVERY = @as(u32, 29);
pub const OPTION_BE_A_MASK_SUPPLIER = @as(u32, 30);
pub const OPTION_PERFORM_ROUTER_DISCOVERY = @as(u32, 31);
pub const OPTION_ROUTER_SOLICITATION_ADDR = @as(u32, 32);
pub const OPTION_STATIC_ROUTES = @as(u32, 33);
pub const OPTION_TRAILERS = @as(u32, 34);
pub const OPTION_ARP_CACHE_TIMEOUT = @as(u32, 35);
pub const OPTION_ETHERNET_ENCAPSULATION = @as(u32, 36);
pub const OPTION_TTL = @as(u32, 37);
pub const OPTION_KEEP_ALIVE_INTERVAL = @as(u32, 38);
pub const OPTION_KEEP_ALIVE_DATA_SIZE = @as(u32, 39);
pub const OPTION_NETWORK_INFO_SERVICE_DOM = @as(u32, 40);
pub const OPTION_NETWORK_INFO_SERVERS = @as(u32, 41);
pub const OPTION_NETWORK_TIME_SERVERS = @as(u32, 42);
pub const OPTION_VENDOR_SPEC_INFO = @as(u32, 43);
pub const OPTION_NETBIOS_NAME_SERVER = @as(u32, 44);
pub const OPTION_NETBIOS_DATAGRAM_SERVER = @as(u32, 45);
pub const OPTION_NETBIOS_NODE_TYPE = @as(u32, 46);
pub const OPTION_NETBIOS_SCOPE_OPTION = @as(u32, 47);
pub const OPTION_XWINDOW_FONT_SERVER = @as(u32, 48);
pub const OPTION_XWINDOW_DISPLAY_MANAGER = @as(u32, 49);
pub const OPTION_REQUESTED_ADDRESS = @as(u32, 50);
pub const OPTION_LEASE_TIME = @as(u32, 51);
pub const OPTION_OK_TO_OVERLAY = @as(u32, 52);
pub const OPTION_MESSAGE_TYPE = @as(u32, 53);
pub const OPTION_SERVER_IDENTIFIER = @as(u32, 54);
pub const OPTION_PARAMETER_REQUEST_LIST = @as(u32, 55);
pub const OPTION_MESSAGE = @as(u32, 56);
pub const OPTION_MESSAGE_LENGTH = @as(u32, 57);
pub const OPTION_RENEWAL_TIME = @as(u32, 58);
pub const OPTION_REBIND_TIME = @as(u32, 59);
pub const OPTION_CLIENT_CLASS_INFO = @as(u32, 60);
pub const OPTION_CLIENT_ID = @as(u32, 61);
pub const OPTION_TFTP_SERVER_NAME = @as(u32, 66);
pub const OPTION_BOOTFILE_NAME = @as(u32, 67);
pub const OPTION_MSFT_IE_PROXY = @as(u32, 252);
pub const OPTION_END = @as(u32, 255);
pub const DHCPCAPI_REQUEST_PERSISTENT = @as(u32, 1);
pub const DHCPCAPI_REQUEST_SYNCHRONOUS = @as(u32, 2);
pub const DHCPCAPI_REQUEST_ASYNCHRONOUS = @as(u32, 4);
pub const DHCPCAPI_REQUEST_CANCEL = @as(u32, 8);
pub const DHCPCAPI_REQUEST_MASK = @as(u32, 15);
pub const DHCPCAPI_REGISTER_HANDLE_EVENT = @as(u32, 1);
pub const DHCPCAPI_DEREGISTER_HANDLE_EVENT = @as(u32, 1);
pub const ERROR_DHCP_REGISTRY_INIT_FAILED = @as(u32, 20000);
pub const ERROR_DHCP_DATABASE_INIT_FAILED = @as(u32, 20001);
pub const ERROR_DHCP_RPC_INIT_FAILED = @as(u32, 20002);
pub const ERROR_DHCP_NETWORK_INIT_FAILED = @as(u32, 20003);
pub const ERROR_DHCP_SUBNET_EXITS = @as(u32, 20004);
pub const ERROR_DHCP_SUBNET_NOT_PRESENT = @as(u32, 20005);
pub const ERROR_DHCP_PRIMARY_NOT_FOUND = @as(u32, 20006);
pub const ERROR_DHCP_ELEMENT_CANT_REMOVE = @as(u32, 20007);
pub const ERROR_DHCP_OPTION_EXITS = @as(u32, 20009);
pub const ERROR_DHCP_OPTION_NOT_PRESENT = @as(u32, 20010);
pub const ERROR_DHCP_ADDRESS_NOT_AVAILABLE = @as(u32, 20011);
pub const ERROR_DHCP_RANGE_FULL = @as(u32, 20012);
pub const ERROR_DHCP_JET_ERROR = @as(u32, 20013);
pub const ERROR_DHCP_CLIENT_EXISTS = @as(u32, 20014);
pub const ERROR_DHCP_INVALID_DHCP_MESSAGE = @as(u32, 20015);
pub const ERROR_DHCP_INVALID_DHCP_CLIENT = @as(u32, 20016);
pub const ERROR_DHCP_SERVICE_PAUSED = @as(u32, 20017);
pub const ERROR_DHCP_NOT_RESERVED_CLIENT = @as(u32, 20018);
pub const ERROR_DHCP_RESERVED_CLIENT = @as(u32, 20019);
pub const ERROR_DHCP_RANGE_TOO_SMALL = @as(u32, 20020);
pub const ERROR_DHCP_IPRANGE_EXITS = @as(u32, 20021);
pub const ERROR_DHCP_RESERVEDIP_EXITS = @as(u32, 20022);
pub const ERROR_DHCP_INVALID_RANGE = @as(u32, 20023);
pub const ERROR_DHCP_RANGE_EXTENDED = @as(u32, 20024);
pub const ERROR_EXTEND_TOO_SMALL = @as(u32, 20025);
pub const WARNING_EXTENDED_LESS = @as(i32, 20026);
pub const ERROR_DHCP_JET_CONV_REQUIRED = @as(u32, 20027);
pub const ERROR_SERVER_INVALID_BOOT_FILE_TABLE = @as(u32, 20028);
pub const ERROR_SERVER_UNKNOWN_BOOT_FILE_NAME = @as(u32, 20029);
pub const ERROR_DHCP_SUPER_SCOPE_NAME_TOO_LONG = @as(u32, 20030);
pub const ERROR_DHCP_IP_ADDRESS_IN_USE = @as(u32, 20032);
pub const ERROR_DHCP_LOG_FILE_PATH_TOO_LONG = @as(u32, 20033);
pub const ERROR_DHCP_UNSUPPORTED_CLIENT = @as(u32, 20034);
pub const ERROR_DHCP_JET97_CONV_REQUIRED = @as(u32, 20036);
pub const ERROR_DHCP_ROGUE_INIT_FAILED = @as(u32, 20037);
pub const ERROR_DHCP_ROGUE_SAMSHUTDOWN = @as(u32, 20038);
pub const ERROR_DHCP_ROGUE_NOT_AUTHORIZED = @as(u32, 20039);
pub const ERROR_DHCP_ROGUE_DS_UNREACHABLE = @as(u32, 20040);
pub const ERROR_DHCP_ROGUE_DS_CONFLICT = @as(u32, 20041);
pub const ERROR_DHCP_ROGUE_NOT_OUR_ENTERPRISE = @as(u32, 20042);
pub const ERROR_DHCP_ROGUE_STANDALONE_IN_DS = @as(u32, 20043);
pub const ERROR_DHCP_CLASS_NOT_FOUND = @as(u32, 20044);
pub const ERROR_DHCP_CLASS_ALREADY_EXISTS = @as(u32, 20045);
pub const ERROR_DHCP_SCOPE_NAME_TOO_LONG = @as(u32, 20046);
pub const ERROR_DHCP_DEFAULT_SCOPE_EXITS = @as(u32, 20047);
pub const ERROR_DHCP_CANT_CHANGE_ATTRIBUTE = @as(u32, 20048);
pub const ERROR_DHCP_IPRANGE_CONV_ILLEGAL = @as(u32, 20049);
pub const ERROR_DHCP_NETWORK_CHANGED = @as(u32, 20050);
pub const ERROR_DHCP_CANNOT_MODIFY_BINDINGS = @as(u32, 20051);
pub const ERROR_DHCP_SUBNET_EXISTS = @as(u32, 20052);
pub const ERROR_DHCP_MSCOPE_EXISTS = @as(u32, 20053);
pub const ERROR_MSCOPE_RANGE_TOO_SMALL = @as(u32, 20054);
pub const ERROR_DHCP_EXEMPTION_EXISTS = @as(u32, 20055);
pub const ERROR_DHCP_EXEMPTION_NOT_PRESENT = @as(u32, 20056);
pub const ERROR_DHCP_INVALID_PARAMETER_OPTION32 = @as(u32, 20057);
pub const ERROR_DDS_NO_DS_AVAILABLE = @as(u32, 20070);
pub const ERROR_DDS_NO_DHCP_ROOT = @as(u32, 20071);
pub const ERROR_DDS_UNEXPECTED_ERROR = @as(u32, 20072);
pub const ERROR_DDS_TOO_MANY_ERRORS = @as(u32, 20073);
pub const ERROR_DDS_DHCP_SERVER_NOT_FOUND = @as(u32, 20074);
pub const ERROR_DDS_OPTION_ALREADY_EXISTS = @as(u32, 20075);
pub const ERROR_DDS_OPTION_DOES_NOT_EXIST = @as(u32, 20076);
pub const ERROR_DDS_CLASS_EXISTS = @as(u32, 20077);
pub const ERROR_DDS_CLASS_DOES_NOT_EXIST = @as(u32, 20078);
pub const ERROR_DDS_SERVER_ALREADY_EXISTS = @as(u32, 20079);
pub const ERROR_DDS_SERVER_DOES_NOT_EXIST = @as(u32, 20080);
pub const ERROR_DDS_SERVER_ADDRESS_MISMATCH = @as(u32, 20081);
pub const ERROR_DDS_SUBNET_EXISTS = @as(u32, 20082);
pub const ERROR_DDS_SUBNET_HAS_DIFF_SSCOPE = @as(u32, 20083);
pub const ERROR_DDS_SUBNET_NOT_PRESENT = @as(u32, 20084);
pub const ERROR_DDS_RESERVATION_NOT_PRESENT = @as(u32, 20085);
pub const ERROR_DDS_RESERVATION_CONFLICT = @as(u32, 20086);
pub const ERROR_DDS_POSSIBLE_RANGE_CONFLICT = @as(u32, 20087);
pub const ERROR_DDS_RANGE_DOES_NOT_EXIST = @as(u32, 20088);
pub const ERROR_DHCP_DELETE_BUILTIN_CLASS = @as(u32, 20089);
pub const ERROR_DHCP_INVALID_SUBNET_PREFIX = @as(u32, 20091);
pub const ERROR_DHCP_INVALID_DELAY = @as(u32, 20092);
pub const ERROR_DHCP_LINKLAYER_ADDRESS_EXISTS = @as(u32, 20093);
pub const ERROR_DHCP_LINKLAYER_ADDRESS_RESERVATION_EXISTS = @as(u32, 20094);
pub const ERROR_DHCP_LINKLAYER_ADDRESS_DOES_NOT_EXIST = @as(u32, 20095);
pub const ERROR_DHCP_HARDWARE_ADDRESS_TYPE_ALREADY_EXEMPT = @as(u32, 20101);
pub const ERROR_DHCP_UNDEFINED_HARDWARE_ADDRESS_TYPE = @as(u32, 20102);
pub const ERROR_DHCP_OPTION_TYPE_MISMATCH = @as(u32, 20103);
pub const ERROR_DHCP_POLICY_BAD_PARENT_EXPR = @as(u32, 20104);
pub const ERROR_DHCP_POLICY_EXISTS = @as(u32, 20105);
pub const ERROR_DHCP_POLICY_RANGE_EXISTS = @as(u32, 20106);
pub const ERROR_DHCP_POLICY_RANGE_BAD = @as(u32, 20107);
pub const ERROR_DHCP_RANGE_INVALID_IN_SERVER_POLICY = @as(u32, 20108);
pub const ERROR_DHCP_INVALID_POLICY_EXPRESSION = @as(u32, 20109);
pub const ERROR_DHCP_INVALID_PROCESSING_ORDER = @as(u32, 20110);
pub const ERROR_DHCP_POLICY_NOT_FOUND = @as(u32, 20111);
pub const ERROR_SCOPE_RANGE_POLICY_RANGE_CONFLICT = @as(u32, 20112);
pub const ERROR_DHCP_FO_SCOPE_ALREADY_IN_RELATIONSHIP = @as(u32, 20113);
pub const ERROR_DHCP_FO_RELATIONSHIP_EXISTS = @as(u32, 20114);
pub const ERROR_DHCP_FO_RELATIONSHIP_DOES_NOT_EXIST = @as(u32, 20115);
pub const ERROR_DHCP_FO_SCOPE_NOT_IN_RELATIONSHIP = @as(u32, 20116);
pub const ERROR_DHCP_FO_RELATION_IS_SECONDARY = @as(u32, 20117);
pub const ERROR_DHCP_FO_NOT_SUPPORTED = @as(u32, 20118);
pub const ERROR_DHCP_FO_TIME_OUT_OF_SYNC = @as(u32, 20119);
pub const ERROR_DHCP_FO_STATE_NOT_NORMAL = @as(u32, 20120);
pub const ERROR_DHCP_NO_ADMIN_PERMISSION = @as(u32, 20121);
pub const ERROR_DHCP_SERVER_NOT_REACHABLE = @as(u32, 20122);
pub const ERROR_DHCP_SERVER_NOT_RUNNING = @as(u32, 20123);
pub const ERROR_DHCP_SERVER_NAME_NOT_RESOLVED = @as(u32, 20124);
pub const ERROR_DHCP_FO_RELATIONSHIP_NAME_TOO_LONG = @as(u32, 20125);
pub const ERROR_DHCP_REACHED_END_OF_SELECTION = @as(u32, 20126);
pub const ERROR_DHCP_FO_ADDSCOPE_LEASES_NOT_SYNCED = @as(u32, 20127);
pub const ERROR_DHCP_FO_MAX_RELATIONSHIPS = @as(u32, 20128);
pub const ERROR_DHCP_FO_IPRANGE_TYPE_CONV_ILLEGAL = @as(u32, 20129);
pub const ERROR_DHCP_FO_MAX_ADD_SCOPES = @as(u32, 20130);
pub const ERROR_DHCP_FO_BOOT_NOT_SUPPORTED = @as(u32, 20131);
pub const ERROR_DHCP_FO_RANGE_PART_OF_REL = @as(u32, 20132);
pub const ERROR_DHCP_FO_SCOPE_SYNC_IN_PROGRESS = @as(u32, 20133);
pub const ERROR_DHCP_FO_FEATURE_NOT_SUPPORTED = @as(u32, 20134);
pub const ERROR_DHCP_POLICY_FQDN_RANGE_UNSUPPORTED = @as(u32, 20135);
pub const ERROR_DHCP_POLICY_FQDN_OPTION_UNSUPPORTED = @as(u32, 20136);
pub const ERROR_DHCP_POLICY_EDIT_FQDN_UNSUPPORTED = @as(u32, 20137);
pub const ERROR_DHCP_NAP_NOT_SUPPORTED = @as(u32, 20138);
pub const ERROR_LAST_DHCP_SERVER_ERROR = @as(u32, 20139);
pub const DHCP_SUBNET_INFO_VQ_FLAG_QUARANTINE = @as(u32, 1);
pub const MAX_PATTERN_LENGTH = @as(u32, 255);
pub const MAC_ADDRESS_LENGTH = @as(u32, 6);
pub const HWTYPE_ETHERNET_10MB = @as(u32, 1);
pub const FILTER_STATUS_NONE = @as(u32, 1);
pub const FILTER_STATUS_FULL_MATCH_IN_ALLOW_LIST = @as(u32, 2);
pub const FILTER_STATUS_FULL_MATCH_IN_DENY_LIST = @as(u32, 4);
pub const FILTER_STATUS_WILDCARD_MATCH_IN_ALLOW_LIST = @as(u32, 8);
pub const FILTER_STATUS_WILDCARD_MATCH_IN_DENY_LIST = @as(u32, 16);
pub const Set_APIProtocolSupport = @as(u32, 1);
pub const Set_DatabaseName = @as(u32, 2);
pub const Set_DatabasePath = @as(u32, 4);
pub const Set_BackupPath = @as(u32, 8);
pub const Set_BackupInterval = @as(u32, 16);
pub const Set_DatabaseLoggingFlag = @as(u32, 32);
pub const Set_RestoreFlag = @as(u32, 64);
pub const Set_DatabaseCleanupInterval = @as(u32, 128);
pub const Set_DebugFlag = @as(u32, 256);
pub const Set_PingRetries = @as(u32, 512);
pub const Set_BootFileTable = @as(u32, 1024);
pub const Set_AuditLogState = @as(u32, 2048);
pub const Set_QuarantineON = @as(u32, 4096);
pub const Set_QuarantineDefFail = @as(u32, 8192);
pub const CLIENT_TYPE_UNSPECIFIED = @as(u32, 0);
pub const CLIENT_TYPE_DHCP = @as(u32, 1);
pub const CLIENT_TYPE_BOOTP = @as(u32, 2);
pub const CLIENT_TYPE_RESERVATION_FLAG = @as(u32, 4);
pub const CLIENT_TYPE_NONE = @as(u32, 100);
pub const Set_UnicastFlag = @as(u32, 1);
pub const Set_RapidCommitFlag = @as(u32, 2);
pub const Set_PreferredLifetime = @as(u32, 4);
pub const Set_ValidLifetime = @as(u32, 8);
pub const Set_T1 = @as(u32, 16);
pub const Set_T2 = @as(u32, 32);
pub const Set_PreferredLifetimeIATA = @as(u32, 64);
pub const Set_ValidLifetimeIATA = @as(u32, 128);
pub const V5_ADDRESS_STATE_OFFERED = @as(u32, 0);
pub const V5_ADDRESS_STATE_ACTIVE = @as(u32, 1);
pub const V5_ADDRESS_STATE_DECLINED = @as(u32, 2);
pub const V5_ADDRESS_STATE_DOOM = @as(u32, 3);
pub const V5_ADDRESS_BIT_DELETED = @as(u32, 128);
pub const V5_ADDRESS_BIT_UNREGISTERED = @as(u32, 64);
pub const V5_ADDRESS_BIT_BOTH_REC = @as(u32, 32);
pub const V5_ADDRESS_EX_BIT_DISABLE_PTR_RR = @as(u32, 1);
pub const DNS_FLAG_ENABLED = @as(u32, 1);
pub const DNS_FLAG_UPDATE_DOWNLEVEL = @as(u32, 2);
pub const DNS_FLAG_CLEANUP_EXPIRED = @as(u32, 4);
pub const DNS_FLAG_UPDATE_BOTH_ALWAYS = @as(u32, 16);
pub const DNS_FLAG_UPDATE_DHCID = @as(u32, 32);
pub const DNS_FLAG_DISABLE_PTR_UPDATE = @as(u32, 64);
pub const DNS_FLAG_HAS_DNS_SUFFIX = @as(u32, 128);
pub const DHCP_OPT_ENUM_IGNORE_VENDOR = @as(u32, 1);
pub const DHCP_OPT_ENUM_USE_CLASSNAME = @as(u32, 2);
pub const DHCP_FLAGS_DONT_ACCESS_DS = @as(u32, 1);
pub const DHCP_FLAGS_DONT_DO_RPC = @as(u32, 2);
pub const DHCP_FLAGS_OPTION_IS_VENDOR = @as(u32, 3);
pub const DHCP_ATTRIB_BOOL_IS_ROGUE = @as(u32, 1);
pub const DHCP_ATTRIB_BOOL_IS_DYNBOOTP = @as(u32, 2);
pub const DHCP_ATTRIB_BOOL_IS_PART_OF_DSDC = @as(u32, 3);
pub const DHCP_ATTRIB_BOOL_IS_BINDING_AWARE = @as(u32, 4);
pub const DHCP_ATTRIB_BOOL_IS_ADMIN = @as(u32, 5);
pub const DHCP_ATTRIB_ULONG_RESTORE_STATUS = @as(u32, 6);
pub const DHCP_ATTRIB_TYPE_BOOL = @as(u32, 1);
pub const DHCP_ATTRIB_TYPE_ULONG = @as(u32, 2);
pub const DHCP_ENDPOINT_FLAG_CANT_MODIFY = @as(u32, 1);
pub const QUARANTIN_OPTION_BASE = @as(u32, 43220);
pub const QUARANTINE_SCOPE_QUARPROFILE_OPTION = @as(u32, 43221);
pub const QUARANTINE_CONFIG_OPTION = @as(u32, 43222);
pub const ADDRESS_TYPE_IANA = @as(u32, 0);
pub const ADDRESS_TYPE_IATA = @as(u32, 1);
pub const DHCP_MIN_DELAY = @as(u32, 0);
pub const DHCP_MAX_DELAY = @as(u32, 1000);
pub const DHCP_FAILOVER_DELETE_SCOPES = @as(u32, 1);
pub const DHCP_FAILOVER_MAX_NUM_ADD_SCOPES = @as(u32, 400);
pub const DHCP_FAILOVER_MAX_NUM_REL = @as(u32, 31);
pub const MCLT = @as(u32, 1);
pub const SAFEPERIOD = @as(u32, 2);
pub const CHANGESTATE = @as(u32, 4);
pub const PERCENTAGE = @as(u32, 8);
pub const MODE = @as(u32, 16);
pub const PREVSTATE = @as(u32, 32);
pub const SHAREDSECRET = @as(u32, 64);
pub const DHCP_CONTROL_START = @as(u32, 1);
pub const DHCP_CONTROL_STOP = @as(u32, 2);
pub const DHCP_CONTROL_PAUSE = @as(u32, 3);
pub const DHCP_CONTROL_CONTINUE = @as(u32, 4);
pub const DHCP_DROP_DUPLICATE = @as(u32, 1);
pub const DHCP_DROP_NOMEM = @as(u32, 2);
pub const DHCP_DROP_INTERNAL_ERROR = @as(u32, 3);
pub const DHCP_DROP_TIMEOUT = @as(u32, 4);
pub const DHCP_DROP_UNAUTH = @as(u32, 5);
pub const DHCP_DROP_PAUSED = @as(u32, 6);
pub const DHCP_DROP_NO_SUBNETS = @as(u32, 7);
pub const DHCP_DROP_INVALID = @as(u32, 8);
pub const DHCP_DROP_WRONG_SERVER = @as(u32, 9);
pub const DHCP_DROP_NOADDRESS = @as(u32, 10);
pub const DHCP_DROP_PROCESSED = @as(u32, 11);
pub const DHCP_DROP_GEN_FAILURE = @as(u32, 256);
pub const DHCP_SEND_PACKET = @as(u32, 268435456);
pub const DHCP_PROB_CONFLICT = @as(u32, 536870913);
pub const DHCP_PROB_DECLINE = @as(u32, 536870914);
pub const DHCP_PROB_RELEASE = @as(u32, 536870915);
pub const DHCP_PROB_NACKED = @as(u32, 536870916);
pub const DHCP_GIVE_ADDRESS_NEW = @as(u32, 805306369);
pub const DHCP_GIVE_ADDRESS_OLD = @as(u32, 805306370);
pub const DHCP_CLIENT_BOOTP = @as(u32, 805306371);
pub const DHCP_CLIENT_DHCP = @as(u32, 805306372);
pub const DHCPV6_OPTION_CLIENTID = @as(u32, 1);
pub const DHCPV6_OPTION_SERVERID = @as(u32, 2);
pub const DHCPV6_OPTION_IA_NA = @as(u32, 3);
pub const DHCPV6_OPTION_IA_TA = @as(u32, 4);
pub const DHCPV6_OPTION_ORO = @as(u32, 6);
pub const DHCPV6_OPTION_PREFERENCE = @as(u32, 7);
pub const DHCPV6_OPTION_UNICAST = @as(u32, 12);
pub const DHCPV6_OPTION_RAPID_COMMIT = @as(u32, 14);
pub const DHCPV6_OPTION_USER_CLASS = @as(u32, 15);
pub const DHCPV6_OPTION_VENDOR_CLASS = @as(u32, 16);
pub const DHCPV6_OPTION_VENDOR_OPTS = @as(u32, 17);
pub const DHCPV6_OPTION_RECONF_MSG = @as(u32, 19);
pub const DHCPV6_OPTION_SIP_SERVERS_NAMES = @as(u32, 21);
pub const DHCPV6_OPTION_SIP_SERVERS_ADDRS = @as(u32, 22);
pub const DHCPV6_OPTION_DNS_SERVERS = @as(u32, 23);
pub const DHCPV6_OPTION_DOMAIN_LIST = @as(u32, 24);
pub const DHCPV6_OPTION_IA_PD = @as(u32, 25);
pub const DHCPV6_OPTION_NIS_SERVERS = @as(u32, 27);
pub const DHCPV6_OPTION_NISP_SERVERS = @as(u32, 28);
pub const DHCPV6_OPTION_NIS_DOMAIN_NAME = @as(u32, 29);
pub const DHCPV6_OPTION_NISP_DOMAIN_NAME = @as(u32, 30);

//--------------------------------------------------------------------------------
// Section: Types (164)
//--------------------------------------------------------------------------------
pub const DHCPV6CAPI_PARAMS = extern struct {
    Flags: u32,
    OptionId: u32,
    IsVendor: BOOL,
    Data: ?*u8,
    nBytesData: u32,
};

pub const DHCPV6CAPI_PARAMS_ARRAY = extern struct {
    nParams: u32,
    Params: ?*DHCPV6CAPI_PARAMS,
};

pub const DHCPV6CAPI_CLASSID = extern struct {
    Flags: u32,
    Data: ?*u8,
    nBytesData: u32,
};

pub const StatusCode = enum(i32) {
    NO_ERROR = 0,
    UNSPECIFIED_FAILURE = 1,
    NO_BINDING = 3,
    NOPREFIX_AVAIL = 6,
};
pub const STATUS_NO_ERROR = StatusCode.NO_ERROR;
pub const STATUS_UNSPECIFIED_FAILURE = StatusCode.UNSPECIFIED_FAILURE;
pub const STATUS_NO_BINDING = StatusCode.NO_BINDING;
pub const STATUS_NOPREFIX_AVAIL = StatusCode.NOPREFIX_AVAIL;

pub const DHCPV6Prefix = extern struct {
    prefix: [16]u8,
    prefixLength: u32,
    preferredLifeTime: u32,
    validLifeTime: u32,
    status: StatusCode,
};

pub const DHCPV6PrefixLeaseInformation = extern struct {
    nPrefixes: u32,
    prefixArray: ?*DHCPV6Prefix,
    iaid: u32,
    T1: i64,
    T2: i64,
    MaxLeaseExpirationTime: i64,
    LastRenewalTime: i64,
    status: StatusCode,
    ServerId: ?*u8,
    ServerIdLen: u32,
};

pub const DHCPAPI_PARAMS = extern struct {
    Flags: u32,
    OptionId: u32,
    IsVendor: BOOL,
    Data: ?*u8,
    nBytesData: u32,
};

pub const DHCPCAPI_PARAMS_ARRAY = extern struct {
    nParams: u32,
    Params: ?*DHCPAPI_PARAMS,
};

pub const DHCPCAPI_CLASSID = extern struct {
    Flags: u32,
    Data: ?*u8,
    nBytesData: u32,
};

pub const LPDHCP_CONTROL = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        dwControlCode: u32,
        lpReserved: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) u32,
    else => *const fn (
        dwControlCode: u32,
        lpReserved: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) u32,
};

pub const LPDHCP_NEWPKT = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        Packet: ?*?*u8,
        PacketSize: ?*u32,
        IpAddress: u32,
        Reserved: ?*anyopaque,
        PktContext: ?*?*anyopaque,
        ProcessIt: ?*i32,
    ) callconv(@import("std").os.windows.WINAPI) u32,
    else => *const fn (
        Packet: ?*?*u8,
        PacketSize: ?*u32,
        IpAddress: u32,
        Reserved: ?*anyopaque,
        PktContext: ?*?*anyopaque,
        ProcessIt: ?*i32,
    ) callconv(@import("std").os.windows.WINAPI) u32,
};

pub const LPDHCP_DROP_SEND = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        Packet: ?*?*u8,
        PacketSize: ?*u32,
        ControlCode: u32,
        IpAddress: u32,
        Reserved: ?*anyopaque,
        PktContext: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) u32,
    else => *const fn (
        Packet: ?*?*u8,
        PacketSize: ?*u32,
        ControlCode: u32,
        IpAddress: u32,
        Reserved: ?*anyopaque,
        PktContext: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) u32,
};

pub const LPDHCP_PROB = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        Packet: ?*u8,
        PacketSize: u32,
        ControlCode: u32,
        IpAddress: u32,
        AltAddress: u32,
        Reserved: ?*anyopaque,
        PktContext: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) u32,
    else => *const fn (
        Packet: ?*u8,
        PacketSize: u32,
        ControlCode: u32,
        IpAddress: u32,
        AltAddress: u32,
        Reserved: ?*anyopaque,
        PktContext: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) u32,
};

pub const LPDHCP_GIVE_ADDRESS = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        Packet: ?*u8,
        PacketSize: u32,
        ControlCode: u32,
        IpAddress: u32,
        AltAddress: u32,
        AddrType: u32,
        LeaseTime: u32,
        Reserved: ?*anyopaque,
        PktContext: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) u32,
    else => *const fn (
        Packet: ?*u8,
        PacketSize: u32,
        ControlCode: u32,
        IpAddress: u32,
        AltAddress: u32,
        AddrType: u32,
        LeaseTime: u32,
        Reserved: ?*anyopaque,
        PktContext: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) u32,
};

pub const LPDHCP_HANDLE_OPTIONS = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        Packet: ?*u8,
        PacketSize: u32,
        Reserved: ?*anyopaque,
        PktContext: ?*anyopaque,
        ServerOptions: ?*DHCP_SERVER_OPTIONS,
    ) callconv(@import("std").os.windows.WINAPI) u32,
    else => *const fn (
        Packet: ?*u8,
        PacketSize: u32,
        Reserved: ?*anyopaque,
        PktContext: ?*anyopaque,
        ServerOptions: ?*DHCP_SERVER_OPTIONS,
    ) callconv(@import("std").os.windows.WINAPI) u32,
};

pub const LPDHCP_DELETE_CLIENT = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        IpAddress: u32,
        HwAddress: ?*u8,
        HwAddressLength: u32,
        Reserved: u32,
        ClientType: u32,
    ) callconv(@import("std").os.windows.WINAPI) u32,
    else => *const fn (
        IpAddress: u32,
        HwAddress: ?*u8,
        HwAddressLength: u32,
        Reserved: u32,
        ClientType: u32,
    ) callconv(@import("std").os.windows.WINAPI) u32,
};

pub const DHCP_CALLOUT_TABLE = extern struct {
    DhcpControlHook: ?LPDHCP_CONTROL,
    DhcpNewPktHook: ?LPDHCP_NEWPKT,
    DhcpPktDropHook: ?LPDHCP_DROP_SEND,
    DhcpPktSendHook: ?LPDHCP_DROP_SEND,
    DhcpAddressDelHook: ?LPDHCP_PROB,
    DhcpAddressOfferHook: ?LPDHCP_GIVE_ADDRESS,
    DhcpHandleOptionsHook: ?LPDHCP_HANDLE_OPTIONS,
    DhcpDeleteClientHook: ?LPDHCP_DELETE_CLIENT,
    DhcpExtensionHook: ?*anyopaque,
    DhcpReservedHook: ?*anyopaque,
};

pub const LPDHCP_ENTRY_POINT_FUNC = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        ChainDlls: ?PWSTR,
        CalloutVersion: u32,
        CalloutTbl: ?*DHCP_CALLOUT_TABLE,
    ) callconv(@import("std").os.windows.WINAPI) u32,
    else => *const fn (
        ChainDlls: ?PWSTR,
        CalloutVersion: u32,
        CalloutTbl: ?*DHCP_CALLOUT_TABLE,
    ) callconv(@import("std").os.windows.WINAPI) u32,
};

pub const DATE_TIME = extern struct {
    dwLowDateTime: u32,
    dwHighDateTime: u32,
};

pub const DHCP_IP_RANGE = extern struct {
    StartAddress: u32,
    EndAddress: u32,
};

pub const DHCP_BINARY_DATA = extern struct {
    DataLength: u32,
    Data: ?*u8,
};

pub const DHCP_HOST_INFO = extern struct {
    IpAddress: u32,
    NetBiosName: ?PWSTR,
    HostName: ?PWSTR,
};

pub const DHCP_FORCE_FLAG = enum(i32) {
    FullForce = 0,
    NoForce = 1,
    FailoverForce = 2,
};
pub const DhcpFullForce = DHCP_FORCE_FLAG.FullForce;
pub const DhcpNoForce = DHCP_FORCE_FLAG.NoForce;
pub const DhcpFailoverForce = DHCP_FORCE_FLAG.FailoverForce;

pub const DWORD_DWORD = extern struct {
    DWord1: u32,
    DWord2: u32,
};

pub const DHCP_SUBNET_STATE = enum(i32) {
    Enabled = 0,
    Disabled = 1,
    EnabledSwitched = 2,
    DisabledSwitched = 3,
    InvalidState = 4,
};
pub const DhcpSubnetEnabled = DHCP_SUBNET_STATE.Enabled;
pub const DhcpSubnetDisabled = DHCP_SUBNET_STATE.Disabled;
pub const DhcpSubnetEnabledSwitched = DHCP_SUBNET_STATE.EnabledSwitched;
pub const DhcpSubnetDisabledSwitched = DHCP_SUBNET_STATE.DisabledSwitched;
pub const DhcpSubnetInvalidState = DHCP_SUBNET_STATE.InvalidState;

pub const DHCP_SUBNET_INFO = extern struct {
    SubnetAddress: u32,
    SubnetMask: u32,
    SubnetName: ?PWSTR,
    SubnetComment: ?PWSTR,
    PrimaryHost: DHCP_HOST_INFO,
    SubnetState: DHCP_SUBNET_STATE,
};

pub const DHCP_SUBNET_INFO_VQ = extern struct {
    SubnetAddress: u32,
    SubnetMask: u32,
    SubnetName: ?PWSTR,
    SubnetComment: ?PWSTR,
    PrimaryHost: DHCP_HOST_INFO,
    SubnetState: DHCP_SUBNET_STATE,
    QuarantineOn: u32,
    Reserved1: u32,
    Reserved2: u32,
    Reserved3: i64,
    Reserved4: i64,
};

pub const DHCP_IP_ARRAY = extern struct {
    NumElements: u32,
    Elements: [*]u32,
};

pub const DHCP_IP_CLUSTER = extern struct {
    ClusterAddress: u32,
    ClusterMask: u32,
};

pub const DHCP_IP_RESERVATION = extern struct {
    ReservedIpAddress: u32,
    ReservedForClient: ?*DHCP_BINARY_DATA,
};

pub const DHCP_SUBNET_ELEMENT_TYPE = enum(i32) {
    IpRanges = 0,
    SecondaryHosts = 1,
    ReservedIps = 2,
    ExcludedIpRanges = 3,
    IpUsedClusters = 4,
    IpRangesDhcpOnly = 5,
    IpRangesDhcpBootp = 6,
    IpRangesBootpOnly = 7,
};
pub const DhcpIpRanges = DHCP_SUBNET_ELEMENT_TYPE.IpRanges;
pub const DhcpSecondaryHosts = DHCP_SUBNET_ELEMENT_TYPE.SecondaryHosts;
pub const DhcpReservedIps = DHCP_SUBNET_ELEMENT_TYPE.ReservedIps;
pub const DhcpExcludedIpRanges = DHCP_SUBNET_ELEMENT_TYPE.ExcludedIpRanges;
pub const DhcpIpUsedClusters = DHCP_SUBNET_ELEMENT_TYPE.IpUsedClusters;
pub const DhcpIpRangesDhcpOnly = DHCP_SUBNET_ELEMENT_TYPE.IpRangesDhcpOnly;
pub const DhcpIpRangesDhcpBootp = DHCP_SUBNET_ELEMENT_TYPE.IpRangesDhcpBootp;
pub const DhcpIpRangesBootpOnly = DHCP_SUBNET_ELEMENT_TYPE.IpRangesBootpOnly;

pub const DHCP_SUBNET_ELEMENT_DATA = extern struct {
    pub const DHCP_SUBNET_ELEMENT_UNION = extern union {
        IpRange: ?*DHCP_IP_RANGE,
        SecondaryHost: ?*DHCP_HOST_INFO,
        ReservedIp: ?*DHCP_IP_RESERVATION,
        ExcludeIpRange: ?*DHCP_IP_RANGE,
        IpUsedCluster: ?*DHCP_IP_CLUSTER,
    };
    ElementType: DHCP_SUBNET_ELEMENT_TYPE,
    Element: DHCP_SUBNET_ELEMENT_UNION,
};

// WARNING: this type symbol conflicts with something!
pub const DHCP_SUBNET_ELEMENT_UNION_CONFLICT_ = usize;

pub const DHCP_SUBNET_ELEMENT_INFO_ARRAY = extern struct {
    NumElements: u32,
    Elements: ?*DHCP_SUBNET_ELEMENT_DATA,
};

pub const DHCP_IPV6_ADDRESS = extern struct {
    HighOrderBits: u64,
    LowOrderBits: u64,
};

pub const DHCP_FILTER_LIST_TYPE = enum(i32) {
    Deny = 0,
    Allow = 1,
};
pub const Deny = DHCP_FILTER_LIST_TYPE.Deny;
pub const Allow = DHCP_FILTER_LIST_TYPE.Allow;

pub const DHCP_ADDR_PATTERN = extern struct {
    MatchHWType: BOOL,
    HWType: u8,
    IsWildcard: BOOL,
    Length: u8,
    Pattern: [255]u8,
};

pub const DHCP_FILTER_ADD_INFO = extern struct {
    AddrPatt: DHCP_ADDR_PATTERN,
    Comment: ?PWSTR,
    ListType: DHCP_FILTER_LIST_TYPE,
};

pub const DHCP_FILTER_GLOBAL_INFO = extern struct {
    EnforceAllowList: BOOL,
    EnforceDenyList: BOOL,
};

pub const DHCP_FILTER_RECORD = extern struct {
    AddrPatt: DHCP_ADDR_PATTERN,
    Comment: ?PWSTR,
};

pub const DHCP_FILTER_ENUM_INFO = extern struct {
    NumElements: u32,
    pEnumRecords: ?*DHCP_FILTER_RECORD,
};

pub const DHCP_OPTION_DATA_TYPE = enum(i32) {
    ByteOption = 0,
    WordOption = 1,
    DWordOption = 2,
    DWordDWordOption = 3,
    IpAddressOption = 4,
    StringDataOption = 5,
    BinaryDataOption = 6,
    EncapsulatedDataOption = 7,
    Ipv6AddressOption = 8,
};
pub const DhcpByteOption = DHCP_OPTION_DATA_TYPE.ByteOption;
pub const DhcpWordOption = DHCP_OPTION_DATA_TYPE.WordOption;
pub const DhcpDWordOption = DHCP_OPTION_DATA_TYPE.DWordOption;
pub const DhcpDWordDWordOption = DHCP_OPTION_DATA_TYPE.DWordDWordOption;
pub const DhcpIpAddressOption = DHCP_OPTION_DATA_TYPE.IpAddressOption;
pub const DhcpStringDataOption = DHCP_OPTION_DATA_TYPE.StringDataOption;
pub const DhcpBinaryDataOption = DHCP_OPTION_DATA_TYPE.BinaryDataOption;
pub const DhcpEncapsulatedDataOption = DHCP_OPTION_DATA_TYPE.EncapsulatedDataOption;
pub const DhcpIpv6AddressOption = DHCP_OPTION_DATA_TYPE.Ipv6AddressOption;

pub const DHCP_OPTION_DATA_ELEMENT = extern struct {
    pub const DHCP_OPTION_ELEMENT_UNION = extern union {
        ByteOption: u8,
        WordOption: u16,
        DWordOption: u32,
        DWordDWordOption: DWORD_DWORD,
        IpAddressOption: u32,
        StringDataOption: ?PWSTR,
        BinaryDataOption: DHCP_BINARY_DATA,
        EncapsulatedDataOption: DHCP_BINARY_DATA,
        Ipv6AddressDataOption: ?PWSTR,
    };
    OptionType: DHCP_OPTION_DATA_TYPE,
    Element: DHCP_OPTION_ELEMENT_UNION,
};

// WARNING: this type symbol conflicts with something!
pub const DHCP_OPTION_ELEMENT_UNION_CONFLICT_ = usize;

pub const DHCP_OPTION_DATA = extern struct {
    NumElements: u32,
    Elements: ?*DHCP_OPTION_DATA_ELEMENT,
};

pub const DHCP_OPTION_TYPE = enum(i32) {
    UnaryElementTypeOption = 0,
    ArrayTypeOption = 1,
};
pub const DhcpUnaryElementTypeOption = DHCP_OPTION_TYPE.UnaryElementTypeOption;
pub const DhcpArrayTypeOption = DHCP_OPTION_TYPE.ArrayTypeOption;

pub const DHCP_OPTION = extern struct {
    OptionID: u32,
    OptionName: ?PWSTR,
    OptionComment: ?PWSTR,
    DefaultValue: DHCP_OPTION_DATA,
    OptionType: DHCP_OPTION_TYPE,
};

pub const DHCP_OPTION_ARRAY = extern struct {
    NumElements: u32,
    Options: ?*DHCP_OPTION,
};

pub const DHCP_OPTION_VALUE = extern struct {
    OptionID: u32,
    Value: DHCP_OPTION_DATA,
};

pub const DHCP_OPTION_VALUE_ARRAY = extern struct {
    NumElements: u32,
    Values: ?*DHCP_OPTION_VALUE,
};

pub const DHCP_OPTION_SCOPE_TYPE = enum(i32) {
    DefaultOptions = 0,
    GlobalOptions = 1,
    SubnetOptions = 2,
    ReservedOptions = 3,
    MScopeOptions = 4,
};
pub const DhcpDefaultOptions = DHCP_OPTION_SCOPE_TYPE.DefaultOptions;
pub const DhcpGlobalOptions = DHCP_OPTION_SCOPE_TYPE.GlobalOptions;
pub const DhcpSubnetOptions = DHCP_OPTION_SCOPE_TYPE.SubnetOptions;
pub const DhcpReservedOptions = DHCP_OPTION_SCOPE_TYPE.ReservedOptions;
pub const DhcpMScopeOptions = DHCP_OPTION_SCOPE_TYPE.MScopeOptions;

pub const DHCP_RESERVED_SCOPE = extern struct {
    ReservedIpAddress: u32,
    ReservedIpSubnetAddress: u32,
};

pub const DHCP_OPTION_SCOPE_INFO = extern struct {
    pub const _DHCP_OPTION_SCOPE_UNION = extern union {
        DefaultScopeInfo: ?*anyopaque,
        GlobalScopeInfo: ?*anyopaque,
        SubnetScopeInfo: u32,
        ReservedScopeInfo: DHCP_RESERVED_SCOPE,
        MScopeInfo: ?PWSTR,
    };
    ScopeType: DHCP_OPTION_SCOPE_TYPE,
    ScopeInfo: _DHCP_OPTION_SCOPE_UNION,
};

pub const DHCP_OPTION_SCOPE_TYPE6 = enum(i32) {
    DefaultOptions6 = 0,
    ScopeOptions6 = 1,
    ReservedOptions6 = 2,
    GlobalOptions6 = 3,
};
pub const DhcpDefaultOptions6 = DHCP_OPTION_SCOPE_TYPE6.DefaultOptions6;
pub const DhcpScopeOptions6 = DHCP_OPTION_SCOPE_TYPE6.ScopeOptions6;
pub const DhcpReservedOptions6 = DHCP_OPTION_SCOPE_TYPE6.ReservedOptions6;
pub const DhcpGlobalOptions6 = DHCP_OPTION_SCOPE_TYPE6.GlobalOptions6;

pub const DHCP_RESERVED_SCOPE6 = extern struct {
    ReservedIpAddress: DHCP_IPV6_ADDRESS,
    ReservedIpSubnetAddress: DHCP_IPV6_ADDRESS,
};

pub const DHCP_OPTION_SCOPE_INFO6 = extern struct {
    pub const DHCP_OPTION_SCOPE_UNION6 = extern union {
        DefaultScopeInfo: ?*anyopaque,
        SubnetScopeInfo: DHCP_IPV6_ADDRESS,
        ReservedScopeInfo: DHCP_RESERVED_SCOPE6,
    };
    ScopeType: DHCP_OPTION_SCOPE_TYPE6,
    ScopeInfo: DHCP_OPTION_SCOPE_UNION6,
};

// WARNING: this type symbol conflicts with something!
pub const DHCP_OPTION_SCOPE_UNION6_CONFLICT_ = usize;

pub const DHCP_OPTION_LIST = extern struct {
    NumOptions: u32,
    Options: ?*DHCP_OPTION_VALUE,
};

pub const DHCP_CLIENT_INFO = extern struct {
    ClientIpAddress: u32,
    SubnetMask: u32,
    ClientHardwareAddress: DHCP_BINARY_DATA,
    ClientName: ?PWSTR,
    ClientComment: ?PWSTR,
    ClientLeaseExpires: DATE_TIME,
    OwnerHost: DHCP_HOST_INFO,
};

pub const DHCP_CLIENT_INFO_ARRAY = extern struct {
    NumElements: u32,
    Clients: ?*?*DHCP_CLIENT_INFO,
};

pub const QuarantineStatus = enum(i32) {
    NOQUARANTINE = 0,
    RESTRICTEDACCESS = 1,
    DROPPACKET = 2,
    PROBATION = 3,
    EXEMPT = 4,
    DEFAULTQUARSETTING = 5,
    NOQUARINFO = 6,
};
pub const NOQUARANTINE = QuarantineStatus.NOQUARANTINE;
pub const RESTRICTEDACCESS = QuarantineStatus.RESTRICTEDACCESS;
pub const DROPPACKET = QuarantineStatus.DROPPACKET;
pub const PROBATION = QuarantineStatus.PROBATION;
pub const EXEMPT = QuarantineStatus.EXEMPT;
pub const DEFAULTQUARSETTING = QuarantineStatus.DEFAULTQUARSETTING;
pub const NOQUARINFO = QuarantineStatus.NOQUARINFO;

pub const DHCP_CLIENT_INFO_VQ = extern struct {
    ClientIpAddress: u32,
    SubnetMask: u32,
    ClientHardwareAddress: DHCP_BINARY_DATA,
    ClientName: ?PWSTR,
    ClientComment: ?PWSTR,
    ClientLeaseExpires: DATE_TIME,
    OwnerHost: DHCP_HOST_INFO,
    bClientType: u8,
    AddressState: u8,
    Status: QuarantineStatus,
    ProbationEnds: DATE_TIME,
    QuarantineCapable: BOOL,
};

pub const DHCP_CLIENT_INFO_ARRAY_VQ = extern struct {
    NumElements: u32,
    Clients: ?*?*DHCP_CLIENT_INFO_VQ,
};

pub const DHCP_CLIENT_FILTER_STATUS_INFO = extern struct {
    ClientIpAddress: u32,
    SubnetMask: u32,
    ClientHardwareAddress: DHCP_BINARY_DATA,
    ClientName: ?PWSTR,
    ClientComment: ?PWSTR,
    ClientLeaseExpires: DATE_TIME,
    OwnerHost: DHCP_HOST_INFO,
    bClientType: u8,
    AddressState: u8,
    Status: QuarantineStatus,
    ProbationEnds: DATE_TIME,
    QuarantineCapable: BOOL,
    FilterStatus: u32,
};

pub const DHCP_CLIENT_FILTER_STATUS_INFO_ARRAY = extern struct {
    NumElements: u32,
    Clients: ?*?*DHCP_CLIENT_FILTER_STATUS_INFO,
};

pub const DHCP_CLIENT_INFO_PB = extern struct {
    ClientIpAddress: u32,
    SubnetMask: u32,
    ClientHardwareAddress: DHCP_BINARY_DATA,
    ClientName: ?PWSTR,
    ClientComment: ?PWSTR,
    ClientLeaseExpires: DATE_TIME,
    OwnerHost: DHCP_HOST_INFO,
    bClientType: u8,
    AddressState: u8,
    Status: QuarantineStatus,
    ProbationEnds: DATE_TIME,
    QuarantineCapable: BOOL,
    FilterStatus: u32,
    PolicyName: ?PWSTR,
};

pub const DHCP_CLIENT_INFO_PB_ARRAY = extern struct {
    NumElements: u32,
    Clients: ?*?*DHCP_CLIENT_INFO_PB,
};

pub const DHCP_SEARCH_INFO_TYPE = enum(i32) {
    IpAddress = 0,
    HardwareAddress = 1,
    Name = 2,
};
pub const DhcpClientIpAddress = DHCP_SEARCH_INFO_TYPE.IpAddress;
pub const DhcpClientHardwareAddress = DHCP_SEARCH_INFO_TYPE.HardwareAddress;
pub const DhcpClientName = DHCP_SEARCH_INFO_TYPE.Name;

pub const DHCP_SEARCH_INFO = extern struct {
    pub const DHCP_CLIENT_SEARCH_UNION = extern union {
        ClientIpAddress: u32,
        ClientHardwareAddress: DHCP_BINARY_DATA,
        ClientName: ?PWSTR,
    };
    SearchType: DHCP_SEARCH_INFO_TYPE,
    SearchInfo: DHCP_CLIENT_SEARCH_UNION,
};

// WARNING: this type symbol conflicts with something!
pub const DHCP_CLIENT_SEARCH_UNION_CONFLICT_ = usize;

pub const DHCP_PROPERTY_TYPE = enum(i32) {
    Byte = 0,
    Word = 1,
    Dword = 2,
    String = 3,
    Binary = 4,
};
pub const DhcpPropTypeByte = DHCP_PROPERTY_TYPE.Byte;
pub const DhcpPropTypeWord = DHCP_PROPERTY_TYPE.Word;
pub const DhcpPropTypeDword = DHCP_PROPERTY_TYPE.Dword;
pub const DhcpPropTypeString = DHCP_PROPERTY_TYPE.String;
pub const DhcpPropTypeBinary = DHCP_PROPERTY_TYPE.Binary;

pub const DHCP_PROPERTY_ID = enum(i32) {
    PolicyDnsSuffix = 0,
    ClientAddressStateEx = 1,
};
pub const DhcpPropIdPolicyDnsSuffix = DHCP_PROPERTY_ID.PolicyDnsSuffix;
pub const DhcpPropIdClientAddressStateEx = DHCP_PROPERTY_ID.ClientAddressStateEx;

pub const DHCP_PROPERTY = extern struct {
    pub const _DHCP_PROPERTY_VALUE_UNION = extern union {
        ByteValue: u8,
        WordValue: u16,
        DWordValue: u32,
        StringValue: ?PWSTR,
        BinaryValue: DHCP_BINARY_DATA,
    };
    ID: DHCP_PROPERTY_ID,
    Type: DHCP_PROPERTY_TYPE,
    Value: _DHCP_PROPERTY_VALUE_UNION,
};

pub const DHCP_PROPERTY_ARRAY = extern struct {
    NumElements: u32,
    Elements: ?*DHCP_PROPERTY,
};

pub const DHCP_CLIENT_INFO_EX = extern struct {
    ClientIpAddress: u32,
    SubnetMask: u32,
    ClientHardwareAddress: DHCP_BINARY_DATA,
    ClientName: ?PWSTR,
    ClientComment: ?PWSTR,
    ClientLeaseExpires: DATE_TIME,
    OwnerHost: DHCP_HOST_INFO,
    bClientType: u8,
    AddressState: u8,
    Status: QuarantineStatus,
    ProbationEnds: DATE_TIME,
    QuarantineCapable: BOOL,
    FilterStatus: u32,
    PolicyName: ?PWSTR,
    Properties: ?*DHCP_PROPERTY_ARRAY,
};

pub const DHCP_CLIENT_INFO_EX_ARRAY = extern struct {
    NumElements: u32,
    Clients: ?*?*DHCP_CLIENT_INFO_EX,
};

pub const SCOPE_MIB_INFO = extern struct {
    Subnet: u32,
    NumAddressesInuse: u32,
    NumAddressesFree: u32,
    NumPendingOffers: u32,
};

pub const DHCP_MIB_INFO = extern struct {
    Discovers: u32,
    Offers: u32,
    Requests: u32,
    Acks: u32,
    Naks: u32,
    Declines: u32,
    Releases: u32,
    ServerStartTime: DATE_TIME,
    Scopes: u32,
    ScopeInfo: ?*SCOPE_MIB_INFO,
};

pub const SCOPE_MIB_INFO_VQ = extern struct {
    Subnet: u32,
    NumAddressesInuse: u32,
    NumAddressesFree: u32,
    NumPendingOffers: u32,
    QtnNumLeases: u32,
    QtnPctQtnLeases: u32,
    QtnProbationLeases: u32,
    QtnNonQtnLeases: u32,
    QtnExemptLeases: u32,
    QtnCapableClients: u32,
};

pub const DHCP_MIB_INFO_VQ = extern struct {
    Discovers: u32,
    Offers: u32,
    Requests: u32,
    Acks: u32,
    Naks: u32,
    Declines: u32,
    Releases: u32,
    ServerStartTime: DATE_TIME,
    QtnNumLeases: u32,
    QtnPctQtnLeases: u32,
    QtnProbationLeases: u32,
    QtnNonQtnLeases: u32,
    QtnExemptLeases: u32,
    QtnCapableClients: u32,
    QtnIASErrors: u32,
    Scopes: u32,
    ScopeInfo: ?*SCOPE_MIB_INFO_VQ,
};

pub const SCOPE_MIB_INFO_V5 = extern struct {
    Subnet: u32,
    NumAddressesInuse: u32,
    NumAddressesFree: u32,
    NumPendingOffers: u32,
};

pub const DHCP_MIB_INFO_V5 = extern struct {
    Discovers: u32,
    Offers: u32,
    Requests: u32,
    Acks: u32,
    Naks: u32,
    Declines: u32,
    Releases: u32,
    ServerStartTime: DATE_TIME,
    QtnNumLeases: u32,
    QtnPctQtnLeases: u32,
    QtnProbationLeases: u32,
    QtnNonQtnLeases: u32,
    QtnExemptLeases: u32,
    QtnCapableClients: u32,
    QtnIASErrors: u32,
    DelayedOffers: u32,
    ScopesWithDelayedOffers: u32,
    Scopes: u32,
    ScopeInfo: ?*SCOPE_MIB_INFO_V5,
};

pub const DHCP_SERVER_CONFIG_INFO = extern struct {
    APIProtocolSupport: u32,
    DatabaseName: ?PWSTR,
    DatabasePath: ?PWSTR,
    BackupPath: ?PWSTR,
    BackupInterval: u32,
    DatabaseLoggingFlag: u32,
    RestoreFlag: u32,
    DatabaseCleanupInterval: u32,
    DebugFlag: u32,
};

pub const DHCP_SCAN_FLAG = enum(i32) {
    RegistryFix = 0,
    DatabaseFix = 1,
};
pub const DhcpRegistryFix = DHCP_SCAN_FLAG.RegistryFix;
pub const DhcpDatabaseFix = DHCP_SCAN_FLAG.DatabaseFix;

pub const DHCP_SCAN_ITEM = extern struct {
    IpAddress: u32,
    ScanFlag: DHCP_SCAN_FLAG,
};

pub const DHCP_SCAN_LIST = extern struct {
    NumScanItems: u32,
    ScanItems: ?*DHCP_SCAN_ITEM,
};

pub const DHCP_CLASS_INFO = extern struct {
    ClassName: ?PWSTR,
    ClassComment: ?PWSTR,
    ClassDataLength: u32,
    IsVendor: BOOL,
    Flags: u32,
    ClassData: ?*u8,
};

pub const DHCP_CLASS_INFO_ARRAY = extern struct {
    NumElements: u32,
    Classes: ?*DHCP_CLASS_INFO,
};

pub const DHCP_CLASS_INFO_V6 = extern struct {
    ClassName: ?PWSTR,
    ClassComment: ?PWSTR,
    ClassDataLength: u32,
    IsVendor: BOOL,
    EnterpriseNumber: u32,
    Flags: u32,
    ClassData: ?*u8,
};

pub const DHCP_CLASS_INFO_ARRAY_V6 = extern struct {
    NumElements: u32,
    Classes: ?*DHCP_CLASS_INFO_V6,
};

pub const DHCP_SERVER_SPECIFIC_STRINGS = extern struct {
    DefaultVendorClassName: ?PWSTR,
    DefaultUserClassName: ?PWSTR,
};

pub const DHCP_IP_RESERVATION_V4 = extern struct {
    ReservedIpAddress: u32,
    ReservedForClient: ?*DHCP_BINARY_DATA,
    bAllowedClientTypes: u8,
};

pub const DHCP_IP_RESERVATION_INFO = extern struct {
    ReservedIpAddress: u32,
    ReservedForClient: DHCP_BINARY_DATA,
    ReservedClientName: ?PWSTR,
    ReservedClientDesc: ?PWSTR,
    bAllowedClientTypes: u8,
    fOptionsPresent: u8,
};

pub const DHCP_RESERVATION_INFO_ARRAY = extern struct {
    NumElements: u32,
    Elements: ?*?*DHCP_IP_RESERVATION_INFO,
};

pub const DHCP_SUBNET_ELEMENT_DATA_V4 = extern struct {
    pub const DHCP_SUBNET_ELEMENT_UNION_V4 = extern union {
        IpRange: ?*DHCP_IP_RANGE,
        SecondaryHost: ?*DHCP_HOST_INFO,
        ReservedIp: ?*DHCP_IP_RESERVATION_V4,
        ExcludeIpRange: ?*DHCP_IP_RANGE,
        IpUsedCluster: ?*DHCP_IP_CLUSTER,
    };
    ElementType: DHCP_SUBNET_ELEMENT_TYPE,
    Element: DHCP_SUBNET_ELEMENT_UNION_V4,
};

// WARNING: this type symbol conflicts with something!
pub const DHCP_SUBNET_ELEMENT_UNION_V4_CONFLICT_ = usize;

pub const DHCP_SUBNET_ELEMENT_INFO_ARRAY_V4 = extern struct {
    NumElements: u32,
    Elements: ?*DHCP_SUBNET_ELEMENT_DATA_V4,
};

pub const DHCP_CLIENT_INFO_V4 = extern struct {
    ClientIpAddress: u32,
    SubnetMask: u32,
    ClientHardwareAddress: DHCP_BINARY_DATA,
    ClientName: ?PWSTR,
    ClientComment: ?PWSTR,
    ClientLeaseExpires: DATE_TIME,
    OwnerHost: DHCP_HOST_INFO,
    bClientType: u8,
};

pub const DHCP_CLIENT_INFO_ARRAY_V4 = extern struct {
    NumElements: u32,
    Clients: ?*?*DHCP_CLIENT_INFO_V4,
};

pub const DHCP_SERVER_CONFIG_INFO_V4 = extern struct {
    APIProtocolSupport: u32,
    DatabaseName: ?PWSTR,
    DatabasePath: ?PWSTR,
    BackupPath: ?PWSTR,
    BackupInterval: u32,
    DatabaseLoggingFlag: u32,
    RestoreFlag: u32,
    DatabaseCleanupInterval: u32,
    DebugFlag: u32,
    dwPingRetries: u32,
    cbBootTableString: u32,
    wszBootTableString: ?PWSTR,
    fAuditLog: BOOL,
};

pub const DHCP_SERVER_CONFIG_INFO_VQ = extern struct {
    APIProtocolSupport: u32,
    DatabaseName: ?PWSTR,
    DatabasePath: ?PWSTR,
    BackupPath: ?PWSTR,
    BackupInterval: u32,
    DatabaseLoggingFlag: u32,
    RestoreFlag: u32,
    DatabaseCleanupInterval: u32,
    DebugFlag: u32,
    dwPingRetries: u32,
    cbBootTableString: u32,
    wszBootTableString: ?PWSTR,
    fAuditLog: BOOL,
    QuarantineOn: BOOL,
    QuarDefFail: u32,
    QuarRuntimeStatus: BOOL,
};

pub const DHCP_SERVER_CONFIG_INFO_V6 = extern struct {
    UnicastFlag: BOOL,
    RapidCommitFlag: BOOL,
    PreferredLifetime: u32,
    ValidLifetime: u32,
    T1: u32,
    T2: u32,
    PreferredLifetimeIATA: u32,
    ValidLifetimeIATA: u32,
    fAuditLog: BOOL,
};

pub const DHCP_SUPER_SCOPE_TABLE_ENTRY = extern struct {
    SubnetAddress: u32,
    SuperScopeNumber: u32,
    NextInSuperScope: u32,
    SuperScopeName: ?PWSTR,
};

pub const DHCP_SUPER_SCOPE_TABLE = extern struct {
    cEntries: u32,
    pEntries: ?*DHCP_SUPER_SCOPE_TABLE_ENTRY,
};

pub const DHCP_CLIENT_INFO_V5 = extern struct {
    ClientIpAddress: u32,
    SubnetMask: u32,
    ClientHardwareAddress: DHCP_BINARY_DATA,
    ClientName: ?PWSTR,
    ClientComment: ?PWSTR,
    ClientLeaseExpires: DATE_TIME,
    OwnerHost: DHCP_HOST_INFO,
    bClientType: u8,
    AddressState: u8,
};

pub const DHCP_CLIENT_INFO_ARRAY_V5 = extern struct {
    NumElements: u32,
    Clients: ?*?*DHCP_CLIENT_INFO_V5,
};

pub const DHCP_ALL_OPTIONS = extern struct {
    Flags: u32,
    NonVendorOptions: ?*DHCP_OPTION_ARRAY,
    NumVendorOptions: u32,
    VendorOptions: ?*extern struct {
        Option: DHCP_OPTION,
        VendorName: ?PWSTR,
        ClassName: ?PWSTR,
    },
};

pub const DHCP_ALL_OPTION_VALUES = extern struct {
    Flags: u32,
    NumElements: u32,
    Options: ?*extern struct {
        ClassName: ?PWSTR,
        VendorName: ?PWSTR,
        IsVendor: BOOL,
        OptionsArray: ?*DHCP_OPTION_VALUE_ARRAY,
    },
};

pub const DHCP_ALL_OPTION_VALUES_PB = extern struct {
    Flags: u32,
    NumElements: u32,
    Options: ?*extern struct {
        PolicyName: ?PWSTR,
        VendorName: ?PWSTR,
        IsVendor: BOOL,
        OptionsArray: ?*DHCP_OPTION_VALUE_ARRAY,
    },
};

pub const DHCPDS_SERVER = extern struct {
    Version: u32,
    ServerName: ?PWSTR,
    ServerAddress: u32,
    Flags: u32,
    State: u32,
    DsLocation: ?PWSTR,
    DsLocType: u32,
};

pub const DHCPDS_SERVERS = extern struct {
    Flags: u32,
    NumElements: u32,
    Servers: ?*DHCPDS_SERVER,
};

pub const DHCP_ATTRIB = extern struct {
    DhcpAttribId: u32,
    DhcpAttribType: u32,
    Anonymous: extern union {
        DhcpAttribBool: BOOL,
        DhcpAttribUlong: u32,
    },
};

pub const DHCP_ATTRIB_ARRAY = extern struct {
    NumElements: u32,
    DhcpAttribs: ?*DHCP_ATTRIB,
};

pub const DHCP_BOOTP_IP_RANGE = extern struct {
    StartAddress: u32,
    EndAddress: u32,
    BootpAllocated: u32,
    MaxBootpAllowed: u32,
};

pub const DHCP_SUBNET_ELEMENT_DATA_V5 = extern struct {
    pub const _DHCP_SUBNET_ELEMENT_UNION_V5 = extern union {
        IpRange: ?*DHCP_BOOTP_IP_RANGE,
        SecondaryHost: ?*DHCP_HOST_INFO,
        ReservedIp: ?*DHCP_IP_RESERVATION_V4,
        ExcludeIpRange: ?*DHCP_IP_RANGE,
        IpUsedCluster: ?*DHCP_IP_CLUSTER,
    };
    ElementType: DHCP_SUBNET_ELEMENT_TYPE,
    Element: _DHCP_SUBNET_ELEMENT_UNION_V5,
};

pub const DHCP_SUBNET_ELEMENT_INFO_ARRAY_V5 = extern struct {
    NumElements: u32,
    Elements: ?*DHCP_SUBNET_ELEMENT_DATA_V5,
};

pub const DHCP_PERF_STATS = extern struct {
    dwNumPacketsReceived: u32,
    dwNumPacketsDuplicate: u32,
    dwNumPacketsExpired: u32,
    dwNumMilliSecondsProcessed: u32,
    dwNumPacketsInActiveQueue: u32,
    dwNumPacketsInPingQueue: u32,
    dwNumDiscoversReceived: u32,
    dwNumOffersSent: u32,
    dwNumRequestsReceived: u32,
    dwNumInformsReceived: u32,
    dwNumAcksSent: u32,
    dwNumNacksSent: u32,
    dwNumDeclinesReceived: u32,
    dwNumReleasesReceived: u32,
    dwNumDelayedOfferInQueue: u32,
    dwNumPacketsProcessed: u32,
    dwNumPacketsInQuarWaitingQueue: u32,
    dwNumPacketsInQuarReadyQueue: u32,
    dwNumPacketsInQuarDecisionQueue: u32,
};

pub const DHCP_BIND_ELEMENT = extern struct {
    Flags: u32,
    fBoundToDHCPServer: BOOL,
    AdapterPrimaryAddress: u32,
    AdapterSubnetAddress: u32,
    IfDescription: ?PWSTR,
    IfIdSize: u32,
    IfId: ?*u8,
};

pub const DHCP_BIND_ELEMENT_ARRAY = extern struct {
    NumElements: u32,
    Elements: ?*DHCP_BIND_ELEMENT,
};

pub const DHCPV6_BIND_ELEMENT = extern struct {
    Flags: u32,
    fBoundToDHCPServer: BOOL,
    AdapterPrimaryAddress: DHCP_IPV6_ADDRESS,
    AdapterSubnetAddress: DHCP_IPV6_ADDRESS,
    IfDescription: ?PWSTR,
    IpV6IfIndex: u32,
    IfIdSize: u32,
    IfId: ?*u8,
};

pub const DHCPV6_BIND_ELEMENT_ARRAY = extern struct {
    NumElements: u32,
    Elements: ?*DHCPV6_BIND_ELEMENT,
};

pub const DHCP_IP_RANGE_V6 = extern struct {
    StartAddress: DHCP_IPV6_ADDRESS,
    EndAddress: DHCP_IPV6_ADDRESS,
};

pub const DHCP_HOST_INFO_V6 = extern struct {
    IpAddress: DHCP_IPV6_ADDRESS,
    NetBiosName: ?PWSTR,
    HostName: ?PWSTR,
};

pub const DHCP_SUBNET_INFO_V6 = extern struct {
    SubnetAddress: DHCP_IPV6_ADDRESS,
    Prefix: u32,
    Preference: u16,
    SubnetName: ?PWSTR,
    SubnetComment: ?PWSTR,
    State: u32,
    ScopeId: u32,
};

pub const SCOPE_MIB_INFO_V6 = extern struct {
    Subnet: DHCP_IPV6_ADDRESS,
    NumAddressesInuse: u64,
    NumAddressesFree: u64,
    NumPendingAdvertises: u64,
};

pub const DHCP_MIB_INFO_V6 = extern struct {
    Solicits: u32,
    Advertises: u32,
    Requests: u32,
    Renews: u32,
    Rebinds: u32,
    Replies: u32,
    Confirms: u32,
    Declines: u32,
    Releases: u32,
    Informs: u32,
    ServerStartTime: DATE_TIME,
    Scopes: u32,
    ScopeInfo: ?*SCOPE_MIB_INFO_V6,
};

pub const DHCP_IP_RESERVATION_V6 = extern struct {
    ReservedIpAddress: DHCP_IPV6_ADDRESS,
    ReservedForClient: ?*DHCP_BINARY_DATA,
    InterfaceId: u32,
};

pub const DHCP_SUBNET_ELEMENT_TYPE_V6 = enum(i32) {
    IpRanges = 0,
    ReservedIps = 1,
    ExcludedIpRanges = 2,
};
pub const Dhcpv6IpRanges = DHCP_SUBNET_ELEMENT_TYPE_V6.IpRanges;
pub const Dhcpv6ReservedIps = DHCP_SUBNET_ELEMENT_TYPE_V6.ReservedIps;
pub const Dhcpv6ExcludedIpRanges = DHCP_SUBNET_ELEMENT_TYPE_V6.ExcludedIpRanges;

pub const DHCP_SUBNET_ELEMENT_DATA_V6 = extern struct {
    pub const DHCP_SUBNET_ELEMENT_UNION_V6 = extern union {
        IpRange: ?*DHCP_IP_RANGE_V6,
        ReservedIp: ?*DHCP_IP_RESERVATION_V6,
        ExcludeIpRange: ?*DHCP_IP_RANGE_V6,
    };
    ElementType: DHCP_SUBNET_ELEMENT_TYPE_V6,
    Element: DHCP_SUBNET_ELEMENT_UNION_V6,
};

// WARNING: this type symbol conflicts with something!
pub const DHCP_SUBNET_ELEMENT_UNION_V6_CONFLICT_ = usize;

pub const DHCP_SUBNET_ELEMENT_INFO_ARRAY_V6 = extern struct {
    NumElements: u32,
    Elements: ?*DHCP_SUBNET_ELEMENT_DATA_V6,
};

pub const DHCP_CLIENT_INFO_V6 = extern struct {
    ClientIpAddress: DHCP_IPV6_ADDRESS,
    ClientDUID: DHCP_BINARY_DATA,
    AddressType: u32,
    IAID: u32,
    ClientName: ?PWSTR,
    ClientComment: ?PWSTR,
    ClientValidLeaseExpires: DATE_TIME,
    ClientPrefLeaseExpires: DATE_TIME,
    OwnerHost: DHCP_HOST_INFO_V6,
};

pub const DHCPV6_IP_ARRAY = extern struct {
    NumElements: u32,
    Elements: ?*DHCP_IPV6_ADDRESS,
};

pub const DHCP_CLIENT_INFO_ARRAY_V6 = extern struct {
    NumElements: u32,
    Clients: ?*?*DHCP_CLIENT_INFO_V6,
};

pub const DHCP_SEARCH_INFO_TYPE_V6 = enum(i32) {
    IpAddress = 0,
    DUID = 1,
    Name = 2,
};
pub const Dhcpv6ClientIpAddress = DHCP_SEARCH_INFO_TYPE_V6.IpAddress;
pub const Dhcpv6ClientDUID = DHCP_SEARCH_INFO_TYPE_V6.DUID;
pub const Dhcpv6ClientName = DHCP_SEARCH_INFO_TYPE_V6.Name;

pub const DHCP_SEARCH_INFO_V6 = extern struct {
    pub const _DHCP_CLIENT_SEARCH_UNION_V6 = extern union {
        ClientIpAddress: DHCP_IPV6_ADDRESS,
        ClientDUID: DHCP_BINARY_DATA,
        ClientName: ?PWSTR,
    };
    SearchType: DHCP_SEARCH_INFO_TYPE_V6,
    SearchInfo: _DHCP_CLIENT_SEARCH_UNION_V6,
};

pub const DHCP_POL_ATTR_TYPE = enum(i32) {
    HWAddr = 0,
    Option = 1,
    SubOption = 2,
    Fqdn = 3,
    FqdnSingleLabel = 4,
};
pub const DhcpAttrHWAddr = DHCP_POL_ATTR_TYPE.HWAddr;
pub const DhcpAttrOption = DHCP_POL_ATTR_TYPE.Option;
pub const DhcpAttrSubOption = DHCP_POL_ATTR_TYPE.SubOption;
pub const DhcpAttrFqdn = DHCP_POL_ATTR_TYPE.Fqdn;
pub const DhcpAttrFqdnSingleLabel = DHCP_POL_ATTR_TYPE.FqdnSingleLabel;

pub const DHCP_POL_COMPARATOR = enum(i32) {
    Equal = 0,
    NotEqual = 1,
    BeginsWith = 2,
    NotBeginWith = 3,
    EndsWith = 4,
    NotEndWith = 5,
};
pub const DhcpCompEqual = DHCP_POL_COMPARATOR.Equal;
pub const DhcpCompNotEqual = DHCP_POL_COMPARATOR.NotEqual;
pub const DhcpCompBeginsWith = DHCP_POL_COMPARATOR.BeginsWith;
pub const DhcpCompNotBeginWith = DHCP_POL_COMPARATOR.NotBeginWith;
pub const DhcpCompEndsWith = DHCP_POL_COMPARATOR.EndsWith;
pub const DhcpCompNotEndWith = DHCP_POL_COMPARATOR.NotEndWith;

pub const DHCP_POL_LOGIC_OPER = enum(i32) {
    Or = 0,
    And = 1,
};
pub const DhcpLogicalOr = DHCP_POL_LOGIC_OPER.Or;
pub const DhcpLogicalAnd = DHCP_POL_LOGIC_OPER.And;

pub const DHCP_POLICY_FIELDS_TO_UPDATE = enum(i32) {
    Name = 1,
    Order = 2,
    Expr = 4,
    Ranges = 8,
    Descr = 16,
    Status = 32,
    DnsSuffix = 64,
};
pub const DhcpUpdatePolicyName = DHCP_POLICY_FIELDS_TO_UPDATE.Name;
pub const DhcpUpdatePolicyOrder = DHCP_POLICY_FIELDS_TO_UPDATE.Order;
pub const DhcpUpdatePolicyExpr = DHCP_POLICY_FIELDS_TO_UPDATE.Expr;
pub const DhcpUpdatePolicyRanges = DHCP_POLICY_FIELDS_TO_UPDATE.Ranges;
pub const DhcpUpdatePolicyDescr = DHCP_POLICY_FIELDS_TO_UPDATE.Descr;
pub const DhcpUpdatePolicyStatus = DHCP_POLICY_FIELDS_TO_UPDATE.Status;
pub const DhcpUpdatePolicyDnsSuffix = DHCP_POLICY_FIELDS_TO_UPDATE.DnsSuffix;

pub const DHCP_POL_COND = extern struct {
    ParentExpr: u32,
    Type: DHCP_POL_ATTR_TYPE,
    OptionID: u32,
    SubOptionID: u32,
    VendorName: ?PWSTR,
    Operator: DHCP_POL_COMPARATOR,
    Value: ?*u8,
    ValueLength: u32,
};

pub const DHCP_POL_COND_ARRAY = extern struct {
    NumElements: u32,
    Elements: ?*DHCP_POL_COND,
};

pub const DHCP_POL_EXPR = extern struct {
    ParentExpr: u32,
    Operator: DHCP_POL_LOGIC_OPER,
};

pub const DHCP_POL_EXPR_ARRAY = extern struct {
    NumElements: u32,
    Elements: ?*DHCP_POL_EXPR,
};

pub const DHCP_IP_RANGE_ARRAY = extern struct {
    NumElements: u32,
    Elements: ?*DHCP_IP_RANGE,
};

pub const DHCP_POLICY = extern struct {
    PolicyName: ?PWSTR,
    IsGlobalPolicy: BOOL,
    Subnet: u32,
    ProcessingOrder: u32,
    Conditions: ?*DHCP_POL_COND_ARRAY,
    Expressions: ?*DHCP_POL_EXPR_ARRAY,
    Ranges: ?*DHCP_IP_RANGE_ARRAY,
    Description: ?PWSTR,
    Enabled: BOOL,
};

pub const DHCP_POLICY_ARRAY = extern struct {
    NumElements: u32,
    Elements: ?*DHCP_POLICY,
};

pub const DHCP_POLICY_EX = extern struct {
    PolicyName: ?PWSTR,
    IsGlobalPolicy: BOOL,
    Subnet: u32,
    ProcessingOrder: u32,
    Conditions: ?*DHCP_POL_COND_ARRAY,
    Expressions: ?*DHCP_POL_EXPR_ARRAY,
    Ranges: ?*DHCP_IP_RANGE_ARRAY,
    Description: ?PWSTR,
    Enabled: BOOL,
    Properties: ?*DHCP_PROPERTY_ARRAY,
};

pub const DHCP_POLICY_EX_ARRAY = extern struct {
    NumElements: u32,
    Elements: ?*DHCP_POLICY_EX,
};

pub const DHCPV6_STATELESS_PARAM_TYPE = enum(i32) {
    PurgeInterval = 1,
    Status = 2,
};
pub const DhcpStatelessPurgeInterval = DHCPV6_STATELESS_PARAM_TYPE.PurgeInterval;
pub const DhcpStatelessStatus = DHCPV6_STATELESS_PARAM_TYPE.Status;

pub const DHCPV6_STATELESS_PARAMS = extern struct {
    Status: BOOL,
    PurgeInterval: u32,
};

pub const DHCPV6_STATELESS_SCOPE_STATS = extern struct {
    SubnetAddress: DHCP_IPV6_ADDRESS,
    NumStatelessClientsAdded: u64,
    NumStatelessClientsRemoved: u64,
};

pub const DHCPV6_STATELESS_STATS = extern struct {
    NumScopes: u32,
    ScopeStats: ?*DHCPV6_STATELESS_SCOPE_STATS,
};

pub const DHCP_FAILOVER_MODE = enum(i32) {
    LoadBalance = 0,
    HotStandby = 1,
};
pub const LoadBalance = DHCP_FAILOVER_MODE.LoadBalance;
pub const HotStandby = DHCP_FAILOVER_MODE.HotStandby;

pub const DHCP_FAILOVER_SERVER = enum(i32) {
    PrimaryServer = 0,
    SecondaryServer = 1,
};
pub const PrimaryServer = DHCP_FAILOVER_SERVER.PrimaryServer;
pub const SecondaryServer = DHCP_FAILOVER_SERVER.SecondaryServer;

pub const FSM_STATE = enum(i32) {
    NO_STATE = 0,
    INIT = 1,
    STARTUP = 2,
    NORMAL = 3,
    COMMUNICATION_INT = 4,
    PARTNER_DOWN = 5,
    POTENTIAL_CONFLICT = 6,
    CONFLICT_DONE = 7,
    RESOLUTION_INT = 8,
    RECOVER = 9,
    RECOVER_WAIT = 10,
    RECOVER_DONE = 11,
    PAUSED = 12,
    SHUTDOWN = 13,
};
pub const NO_STATE = FSM_STATE.NO_STATE;
pub const INIT = FSM_STATE.INIT;
pub const STARTUP = FSM_STATE.STARTUP;
pub const NORMAL = FSM_STATE.NORMAL;
pub const COMMUNICATION_INT = FSM_STATE.COMMUNICATION_INT;
pub const PARTNER_DOWN = FSM_STATE.PARTNER_DOWN;
pub const POTENTIAL_CONFLICT = FSM_STATE.POTENTIAL_CONFLICT;
pub const CONFLICT_DONE = FSM_STATE.CONFLICT_DONE;
pub const RESOLUTION_INT = FSM_STATE.RESOLUTION_INT;
pub const RECOVER = FSM_STATE.RECOVER;
pub const RECOVER_WAIT = FSM_STATE.RECOVER_WAIT;
pub const RECOVER_DONE = FSM_STATE.RECOVER_DONE;
pub const PAUSED = FSM_STATE.PAUSED;
pub const SHUTDOWN = FSM_STATE.SHUTDOWN;

pub const DHCP_FAILOVER_RELATIONSHIP = extern struct {
    PrimaryServer: u32,
    SecondaryServer: u32,
    Mode: DHCP_FAILOVER_MODE,
    ServerType: DHCP_FAILOVER_SERVER,
    State: FSM_STATE,
    PrevState: FSM_STATE,
    Mclt: u32,
    SafePeriod: u32,
    RelationshipName: ?PWSTR,
    PrimaryServerName: ?PWSTR,
    SecondaryServerName: ?PWSTR,
    pScopes: ?*DHCP_IP_ARRAY,
    Percentage: u8,
    SharedSecret: ?PWSTR,
};

pub const DHCP_FAILOVER_RELATIONSHIP_ARRAY = extern struct {
    NumElements: u32,
    pRelationships: ?*DHCP_FAILOVER_RELATIONSHIP,
};

pub const DHCPV4_FAILOVER_CLIENT_INFO = extern struct {
    ClientIpAddress: u32,
    SubnetMask: u32,
    ClientHardwareAddress: DHCP_BINARY_DATA,
    ClientName: ?PWSTR,
    ClientComment: ?PWSTR,
    ClientLeaseExpires: DATE_TIME,
    OwnerHost: DHCP_HOST_INFO,
    bClientType: u8,
    AddressState: u8,
    Status: QuarantineStatus,
    ProbationEnds: DATE_TIME,
    QuarantineCapable: BOOL,
    SentPotExpTime: u32,
    AckPotExpTime: u32,
    RecvPotExpTime: u32,
    StartTime: u32,
    CltLastTransTime: u32,
    LastBndUpdTime: u32,
    BndMsgStatus: u32,
    PolicyName: ?PWSTR,
    Flags: u8,
};

pub const DHCPV4_FAILOVER_CLIENT_INFO_ARRAY = extern struct {
    NumElements: u32,
    Clients: ?*?*DHCPV4_FAILOVER_CLIENT_INFO,
};

pub const DHCPV4_FAILOVER_CLIENT_INFO_EX = extern struct {
    ClientIpAddress: u32,
    SubnetMask: u32,
    ClientHardwareAddress: DHCP_BINARY_DATA,
    ClientName: ?PWSTR,
    ClientComment: ?PWSTR,
    ClientLeaseExpires: DATE_TIME,
    OwnerHost: DHCP_HOST_INFO,
    bClientType: u8,
    AddressState: u8,
    Status: QuarantineStatus,
    ProbationEnds: DATE_TIME,
    QuarantineCapable: BOOL,
    SentPotExpTime: u32,
    AckPotExpTime: u32,
    RecvPotExpTime: u32,
    StartTime: u32,
    CltLastTransTime: u32,
    LastBndUpdTime: u32,
    BndMsgStatus: u32,
    PolicyName: ?PWSTR,
    Flags: u8,
    AddressStateEx: u32,
};

pub const DHCP_FAILOVER_STATISTICS = extern struct {
    NumAddr: u32,
    AddrFree: u32,
    AddrInUse: u32,
    PartnerAddrFree: u32,
    ThisAddrFree: u32,
    PartnerAddrInUse: u32,
    ThisAddrInUse: u32,
};

pub const DHCP_SERVER_OPTIONS = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        MessageType: ?*u8,
        SubnetMask: ?*u32,
        RequestedAddress: ?*u32,
        RequestLeaseTime: ?*u32,
        OverlayFields: ?*u8,
        RouterAddress: ?*u32,
        Server: ?*u32,
        ParameterRequestList: ?*u8,
        ParameterRequestListLength: u32,
        MachineName: ?PSTR,
        MachineNameLength: u32,
        ClientHardwareAddressType: u8,
        ClientHardwareAddressLength: u8,
        ClientHardwareAddress: ?*u8,
        ClassIdentifier: ?PSTR,
        ClassIdentifierLength: u32,
        VendorClass: ?*u8,
        VendorClassLength: u32,
        DNSFlags: u32,
        DNSNameLength: u32,
        DNSName: ?*u8,
        DSDomainNameRequested: BOOLEAN,
        DSDomainName: ?PSTR,
        DSDomainNameLen: u32,
        ScopeId: ?*u32,
    },
    .X86 => extern struct {
        MessageType: ?*u8,
        SubnetMask: ?*u32,
        RequestedAddress: ?*u32,
        RequestLeaseTime: ?*u32,
        OverlayFields: ?*u8,
        RouterAddress: ?*u32,
        Server: ?*u32,
        ParameterRequestList: ?*u8,
        ParameterRequestListLength: u32,
        MachineName: ?PSTR,
        MachineNameLength: u32,
        ClientHardwareAddressType: u8,
        ClientHardwareAddressLength: u8,
        ClientHardwareAddress: ?*u8,
        ClassIdentifier: ?PSTR,
        ClassIdentifierLength: u32,
        VendorClass: ?*u8,
        VendorClassLength: u32,
        DNSFlags: u32,
        DNSNameLength: u32,
        DNSName: ?*u8,
        DSDomainNameRequested: BOOLEAN,
        DSDomainName: ?PSTR,
        DSDomainNameLen: u32,
        ScopeId: ?*u32,
    },
};

//--------------------------------------------------------------------------------
// Section: Functions (210)
//--------------------------------------------------------------------------------
// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dhcpcsvc6" fn Dhcpv6CApiInitialize(
    Version: ?*u32,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dhcpcsvc6" fn Dhcpv6CApiCleanup() callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dhcpcsvc6" fn Dhcpv6RequestParams(
    forceNewInform: BOOL,
    reserved: ?*anyopaque,
    adapterName: ?PWSTR,
    classId: ?*DHCPV6CAPI_CLASSID,
    recdParams: DHCPV6CAPI_PARAMS_ARRAY,
    buffer: ?*u8,
    pSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dhcpcsvc6" fn Dhcpv6RequestPrefix(
    adapterName: ?PWSTR,
    pclassId: ?*DHCPV6CAPI_CLASSID,
    prefixleaseInfo: ?*DHCPV6PrefixLeaseInformation,
    pdwTimeToWait: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dhcpcsvc6" fn Dhcpv6RenewPrefix(
    adapterName: ?PWSTR,
    pclassId: ?*DHCPV6CAPI_CLASSID,
    prefixleaseInfo: ?*DHCPV6PrefixLeaseInformation,
    pdwTimeToWait: ?*u32,
    bValidatePrefix: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dhcpcsvc6" fn Dhcpv6ReleasePrefix(
    adapterName: ?PWSTR,
    classId: ?*DHCPV6CAPI_CLASSID,
    leaseInfo: ?*DHCPV6PrefixLeaseInformation,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "dhcpcsvc" fn DhcpCApiInitialize(
    Version: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "dhcpcsvc" fn DhcpCApiCleanup() callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows5.0'
pub extern "dhcpcsvc" fn DhcpRequestParams(
    Flags: u32,
    Reserved: ?*anyopaque,
    AdapterName: ?PWSTR,
    ClassId: ?*DHCPCAPI_CLASSID,
    SendParams: DHCPCAPI_PARAMS_ARRAY,
    RecdParams: DHCPCAPI_PARAMS_ARRAY,
    // TODO: what to do with BytesParamIndex 7?
    Buffer: ?*u8,
    pSize: ?*u32,
    RequestIdStr: ?PWSTR,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "dhcpcsvc" fn DhcpUndoRequestParams(
    Flags: u32,
    Reserved: ?*anyopaque,
    AdapterName: ?PWSTR,
    RequestIdStr: ?PWSTR,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "dhcpcsvc" fn DhcpRegisterParamChange(
    Flags: u32,
    Reserved: ?*anyopaque,
    AdapterName: ?PWSTR,
    ClassId: ?*DHCPCAPI_CLASSID,
    Params: DHCPCAPI_PARAMS_ARRAY,
    Handle: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "dhcpcsvc" fn DhcpDeRegisterParamChange(
    Flags: u32,
    Reserved: ?*anyopaque,
    Event: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "dhcpcsvc" fn DhcpRemoveDNSRegistrations() callconv(@import("std").os.windows.WINAPI) u32;

pub extern "dhcpcsvc" fn DhcpGetOriginalSubnetMask(
    sAdapterName: ?[*:0]const u16,
    dwSubnetMask: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpAddFilterV4(
    ServerIpAddress: ?[*:0]const u16,
    AddFilterInfo: ?*DHCP_FILTER_ADD_INFO,
    ForceFlag: BOOL,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpDeleteFilterV4(
    ServerIpAddress: ?[*:0]const u16,
    DeleteFilterInfo: ?*DHCP_ADDR_PATTERN,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpSetFilterV4(
    ServerIpAddress: ?[*:0]const u16,
    GlobalFilterInfo: ?*DHCP_FILTER_GLOBAL_INFO,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpGetFilterV4(
    ServerIpAddress: ?[*:0]const u16,
    GlobalFilterInfo: ?*DHCP_FILTER_GLOBAL_INFO,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpEnumFilterV4(
    ServerIpAddress: ?[*:0]const u16,
    ResumeHandle: ?*DHCP_ADDR_PATTERN,
    PreferredMaximum: u32,
    ListType: DHCP_FILTER_LIST_TYPE,
    EnumFilterInfo: ?*?*DHCP_FILTER_ENUM_INFO,
    ElementsRead: ?*u32,
    ElementsTotal: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2000'
pub extern "dhcpsapi" fn DhcpCreateSubnet(
    ServerIpAddress: ?[*:0]const u16,
    SubnetAddress: u32,
    SubnetInfo: ?*const DHCP_SUBNET_INFO,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2000'
pub extern "dhcpsapi" fn DhcpSetSubnetInfo(
    ServerIpAddress: ?[*:0]const u16,
    SubnetAddress: u32,
    SubnetInfo: ?*const DHCP_SUBNET_INFO,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2000'
pub extern "dhcpsapi" fn DhcpGetSubnetInfo(
    ServerIpAddress: ?[*:0]const u16,
    SubnetAddress: u32,
    SubnetInfo: ?*?*DHCP_SUBNET_INFO,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2000'
pub extern "dhcpsapi" fn DhcpEnumSubnets(
    ServerIpAddress: ?[*:0]const u16,
    ResumeHandle: ?*u32,
    PreferredMaximum: u32,
    EnumInfo: ?*?*DHCP_IP_ARRAY,
    ElementsRead: ?*u32,
    ElementsTotal: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpAddSubnetElement(
    ServerIpAddress: ?[*:0]const u16,
    SubnetAddress: u32,
    AddElementInfo: ?*const DHCP_SUBNET_ELEMENT_DATA,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2000'
pub extern "dhcpsapi" fn DhcpEnumSubnetElements(
    ServerIpAddress: ?[*:0]const u16,
    SubnetAddress: u32,
    EnumElementType: DHCP_SUBNET_ELEMENT_TYPE,
    ResumeHandle: ?*u32,
    PreferredMaximum: u32,
    EnumElementInfo: ?*?*DHCP_SUBNET_ELEMENT_INFO_ARRAY,
    ElementsRead: ?*u32,
    ElementsTotal: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpRemoveSubnetElement(
    ServerIpAddress: ?[*:0]const u16,
    SubnetAddress: u32,
    RemoveElementInfo: ?*const DHCP_SUBNET_ELEMENT_DATA,
    ForceFlag: DHCP_FORCE_FLAG,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2000'
pub extern "dhcpsapi" fn DhcpDeleteSubnet(
    ServerIpAddress: ?[*:0]const u16,
    SubnetAddress: u32,
    ForceFlag: DHCP_FORCE_FLAG,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpCreateOption(
    ServerIpAddress: ?[*:0]const u16,
    OptionID: u32,
    OptionInfo: ?*const DHCP_OPTION,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpSetOptionInfo(
    ServerIpAddress: ?[*:0]const u16,
    OptionID: u32,
    OptionInfo: ?*const DHCP_OPTION,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpGetOptionInfo(
    ServerIpAddress: ?[*:0]const u16,
    OptionID: u32,
    OptionInfo: ?*?*DHCP_OPTION,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpEnumOptions(
    ServerIpAddress: ?[*:0]const u16,
    ResumeHandle: ?*u32,
    PreferredMaximum: u32,
    Options: ?*?*DHCP_OPTION_ARRAY,
    OptionsRead: ?*u32,
    OptionsTotal: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpRemoveOption(
    ServerIpAddress: ?[*:0]const u16,
    OptionID: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpSetOptionValue(
    ServerIpAddress: ?[*:0]const u16,
    OptionID: u32,
    ScopeInfo: ?*const DHCP_OPTION_SCOPE_INFO,
    OptionValue: ?*const DHCP_OPTION_DATA,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpSetOptionValues(
    ServerIpAddress: ?[*:0]const u16,
    ScopeInfo: ?*const DHCP_OPTION_SCOPE_INFO,
    OptionValues: ?*const DHCP_OPTION_VALUE_ARRAY,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2000'
pub extern "dhcpsapi" fn DhcpGetOptionValue(
    ServerIpAddress: ?[*:0]const u16,
    OptionID: u32,
    ScopeInfo: ?*const DHCP_OPTION_SCOPE_INFO,
    OptionValue: ?*?*DHCP_OPTION_VALUE,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpEnumOptionValues(
    ServerIpAddress: ?[*:0]const u16,
    ScopeInfo: ?*const DHCP_OPTION_SCOPE_INFO,
    ResumeHandle: ?*u32,
    PreferredMaximum: u32,
    OptionValues: ?*?*DHCP_OPTION_VALUE_ARRAY,
    OptionsRead: ?*u32,
    OptionsTotal: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpRemoveOptionValue(
    ServerIpAddress: ?[*:0]const u16,
    OptionID: u32,
    ScopeInfo: ?*const DHCP_OPTION_SCOPE_INFO,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpCreateClientInfoVQ(
    ServerIpAddress: ?[*:0]const u16,
    ClientInfo: ?*const DHCP_CLIENT_INFO_VQ,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpSetClientInfoVQ(
    ServerIpAddress: ?[*:0]const u16,
    ClientInfo: ?*const DHCP_CLIENT_INFO_VQ,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpGetClientInfoVQ(
    ServerIpAddress: ?[*:0]const u16,
    SearchInfo: ?*const DHCP_SEARCH_INFO,
    ClientInfo: ?*?*DHCP_CLIENT_INFO_VQ,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpEnumSubnetClientsVQ(
    ServerIpAddress: ?[*:0]const u16,
    SubnetAddress: u32,
    ResumeHandle: ?*u32,
    PreferredMaximum: u32,
    ClientInfo: ?*?*DHCP_CLIENT_INFO_ARRAY_VQ,
    ClientsRead: ?*u32,
    ClientsTotal: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpEnumSubnetClientsFilterStatusInfo(
    ServerIpAddress: ?[*:0]const u16,
    SubnetAddress: u32,
    ResumeHandle: ?*u32,
    PreferredMaximum: u32,
    ClientInfo: ?*?*DHCP_CLIENT_FILTER_STATUS_INFO_ARRAY,
    ClientsRead: ?*u32,
    ClientsTotal: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2000'
pub extern "dhcpsapi" fn DhcpCreateClientInfo(
    ServerIpAddress: ?[*:0]const u16,
    ClientInfo: ?*const DHCP_CLIENT_INFO,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2000'
pub extern "dhcpsapi" fn DhcpSetClientInfo(
    ServerIpAddress: ?[*:0]const u16,
    ClientInfo: ?*const DHCP_CLIENT_INFO,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2000'
pub extern "dhcpsapi" fn DhcpGetClientInfo(
    ServerIpAddress: ?[*:0]const u16,
    SearchInfo: ?*const DHCP_SEARCH_INFO,
    ClientInfo: ?*?*DHCP_CLIENT_INFO,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2000'
pub extern "dhcpsapi" fn DhcpDeleteClientInfo(
    ServerIpAddress: ?[*:0]const u16,
    ClientInfo: ?*const DHCP_SEARCH_INFO,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2000'
pub extern "dhcpsapi" fn DhcpEnumSubnetClients(
    ServerIpAddress: ?[*:0]const u16,
    SubnetAddress: u32,
    ResumeHandle: ?*u32,
    PreferredMaximum: u32,
    ClientInfo: ?*?*DHCP_CLIENT_INFO_ARRAY,
    ClientsRead: ?*u32,
    ClientsTotal: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpGetClientOptions(
    ServerIpAddress: ?[*:0]const u16,
    ClientIpAddress: u32,
    ClientSubnetMask: u32,
    ClientOptions: ?*?*DHCP_OPTION_LIST,
) callconv(@import("std").os.windows.WINAPI) u32;

pub extern "dhcpsapi" fn DhcpGetMibInfo(
    ServerIpAddress: ?[*:0]const u16,
    MibInfo: ?*?*DHCP_MIB_INFO,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpServerSetConfig(
    ServerIpAddress: ?[*:0]const u16,
    FieldsToSet: u32,
    ConfigInfo: ?*DHCP_SERVER_CONFIG_INFO,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpServerGetConfig(
    ServerIpAddress: ?[*:0]const u16,
    ConfigInfo: ?*?*DHCP_SERVER_CONFIG_INFO,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpScanDatabase(
    ServerIpAddress: ?[*:0]const u16,
    SubnetAddress: u32,
    FixFlag: u32,
    ScanList: ?*?*DHCP_SCAN_LIST,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2000'
pub extern "dhcpsapi" fn DhcpRpcFreeMemory(
    BufferPointer: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windowsServer2000'
pub extern "dhcpsapi" fn DhcpGetVersion(
    ServerIpAddress: ?PWSTR,
    MajorVersion: ?*u32,
    MinorVersion: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpAddSubnetElementV4(
    ServerIpAddress: ?[*:0]const u16,
    SubnetAddress: u32,
    AddElementInfo: ?*const DHCP_SUBNET_ELEMENT_DATA_V4,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2000'
pub extern "dhcpsapi" fn DhcpEnumSubnetElementsV4(
    ServerIpAddress: ?[*:0]const u16,
    SubnetAddress: u32,
    EnumElementType: DHCP_SUBNET_ELEMENT_TYPE,
    ResumeHandle: ?*u32,
    PreferredMaximum: u32,
    EnumElementInfo: ?*?*DHCP_SUBNET_ELEMENT_INFO_ARRAY_V4,
    ElementsRead: ?*u32,
    ElementsTotal: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpRemoveSubnetElementV4(
    ServerIpAddress: ?[*:0]const u16,
    SubnetAddress: u32,
    RemoveElementInfo: ?*const DHCP_SUBNET_ELEMENT_DATA_V4,
    ForceFlag: DHCP_FORCE_FLAG,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpCreateClientInfoV4(
    ServerIpAddress: ?[*:0]const u16,
    ClientInfo: ?*const DHCP_CLIENT_INFO_V4,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpSetClientInfoV4(
    ServerIpAddress: ?[*:0]const u16,
    ClientInfo: ?*const DHCP_CLIENT_INFO_V4,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpGetClientInfoV4(
    ServerIpAddress: ?[*:0]const u16,
    SearchInfo: ?*const DHCP_SEARCH_INFO,
    ClientInfo: ?*?*DHCP_CLIENT_INFO_V4,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpEnumSubnetClientsV4(
    ServerIpAddress: ?[*:0]const u16,
    SubnetAddress: u32,
    ResumeHandle: ?*u32,
    PreferredMaximum: u32,
    ClientInfo: ?*?*DHCP_CLIENT_INFO_ARRAY_V4,
    ClientsRead: ?*u32,
    ClientsTotal: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpServerSetConfigV4(
    ServerIpAddress: ?[*:0]const u16,
    FieldsToSet: u32,
    ConfigInfo: ?*DHCP_SERVER_CONFIG_INFO_V4,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpServerGetConfigV4(
    ServerIpAddress: ?[*:0]const u16,
    ConfigInfo: ?*?*DHCP_SERVER_CONFIG_INFO_V4,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpSetSuperScopeV4(
    ServerIpAddress: ?[*:0]const u16,
    SubnetAddress: u32,
    SuperScopeName: ?[*:0]const u16,
    ChangeExisting: BOOL,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpDeleteSuperScopeV4(
    ServerIpAddress: ?[*:0]const u16,
    SuperScopeName: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpGetSuperScopeInfoV4(
    ServerIpAddress: ?[*:0]const u16,
    SuperScopeTable: ?*?*DHCP_SUPER_SCOPE_TABLE,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpEnumSubnetClientsV5(
    ServerIpAddress: ?[*:0]const u16,
    SubnetAddress: u32,
    ResumeHandle: ?*u32,
    PreferredMaximum: u32,
    ClientInfo: ?*?*DHCP_CLIENT_INFO_ARRAY_V5,
    ClientsRead: ?*u32,
    ClientsTotal: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpCreateOptionV5(
    ServerIpAddress: ?PWSTR,
    Flags: u32,
    OptionId: u32,
    ClassName: ?PWSTR,
    VendorName: ?PWSTR,
    OptionInfo: ?*DHCP_OPTION,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpSetOptionInfoV5(
    ServerIpAddress: ?PWSTR,
    Flags: u32,
    OptionID: u32,
    ClassName: ?PWSTR,
    VendorName: ?PWSTR,
    OptionInfo: ?*DHCP_OPTION,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpGetOptionInfoV5(
    ServerIpAddress: ?PWSTR,
    Flags: u32,
    OptionID: u32,
    ClassName: ?PWSTR,
    VendorName: ?PWSTR,
    OptionInfo: ?*?*DHCP_OPTION,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpEnumOptionsV5(
    ServerIpAddress: ?PWSTR,
    Flags: u32,
    ClassName: ?PWSTR,
    VendorName: ?PWSTR,
    ResumeHandle: ?*u32,
    PreferredMaximum: u32,
    Options: ?*?*DHCP_OPTION_ARRAY,
    OptionsRead: ?*u32,
    OptionsTotal: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpRemoveOptionV5(
    ServerIpAddress: ?PWSTR,
    Flags: u32,
    OptionID: u32,
    ClassName: ?PWSTR,
    VendorName: ?PWSTR,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2000'
pub extern "dhcpsapi" fn DhcpSetOptionValueV5(
    ServerIpAddress: ?PWSTR,
    Flags: u32,
    OptionId: u32,
    ClassName: ?PWSTR,
    VendorName: ?PWSTR,
    ScopeInfo: ?*DHCP_OPTION_SCOPE_INFO,
    OptionValue: ?*DHCP_OPTION_DATA,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpSetOptionValuesV5(
    ServerIpAddress: ?PWSTR,
    Flags: u32,
    ClassName: ?PWSTR,
    VendorName: ?PWSTR,
    ScopeInfo: ?*DHCP_OPTION_SCOPE_INFO,
    OptionValues: ?*DHCP_OPTION_VALUE_ARRAY,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpGetOptionValueV5(
    ServerIpAddress: ?PWSTR,
    Flags: u32,
    OptionID: u32,
    ClassName: ?PWSTR,
    VendorName: ?PWSTR,
    ScopeInfo: ?*DHCP_OPTION_SCOPE_INFO,
    OptionValue: ?*?*DHCP_OPTION_VALUE,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpGetOptionValueV6(
    ServerIpAddress: ?PWSTR,
    Flags: u32,
    OptionID: u32,
    ClassName: ?PWSTR,
    VendorName: ?PWSTR,
    ScopeInfo: ?*DHCP_OPTION_SCOPE_INFO6,
    OptionValue: ?*?*DHCP_OPTION_VALUE,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpEnumOptionValuesV5(
    ServerIpAddress: ?PWSTR,
    Flags: u32,
    ClassName: ?PWSTR,
    VendorName: ?PWSTR,
    ScopeInfo: ?*DHCP_OPTION_SCOPE_INFO,
    ResumeHandle: ?*u32,
    PreferredMaximum: u32,
    OptionValues: ?*?*DHCP_OPTION_VALUE_ARRAY,
    OptionsRead: ?*u32,
    OptionsTotal: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2000'
pub extern "dhcpsapi" fn DhcpRemoveOptionValueV5(
    ServerIpAddress: ?PWSTR,
    Flags: u32,
    OptionID: u32,
    ClassName: ?PWSTR,
    VendorName: ?PWSTR,
    ScopeInfo: ?*DHCP_OPTION_SCOPE_INFO,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpCreateClass(
    ServerIpAddress: ?PWSTR,
    ReservedMustBeZero: u32,
    ClassInfo: ?*DHCP_CLASS_INFO,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpModifyClass(
    ServerIpAddress: ?PWSTR,
    ReservedMustBeZero: u32,
    ClassInfo: ?*DHCP_CLASS_INFO,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpDeleteClass(
    ServerIpAddress: ?PWSTR,
    ReservedMustBeZero: u32,
    ClassName: ?PWSTR,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpGetClassInfo(
    ServerIpAddress: ?PWSTR,
    ReservedMustBeZero: u32,
    PartialClassInfo: ?*DHCP_CLASS_INFO,
    FilledClassInfo: ?*?*DHCP_CLASS_INFO,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpEnumClasses(
    ServerIpAddress: ?PWSTR,
    ReservedMustBeZero: u32,
    ResumeHandle: ?*u32,
    PreferredMaximum: u32,
    ClassInfoArray: ?*?*DHCP_CLASS_INFO_ARRAY,
    nRead: ?*u32,
    nTotal: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpGetAllOptions(
    ServerIpAddress: ?PWSTR,
    Flags: u32,
    OptionStruct: ?*?*DHCP_ALL_OPTIONS,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpGetAllOptionsV6(
    ServerIpAddress: ?PWSTR,
    Flags: u32,
    OptionStruct: ?*?*DHCP_ALL_OPTIONS,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpGetAllOptionValues(
    ServerIpAddress: ?PWSTR,
    Flags: u32,
    ScopeInfo: ?*DHCP_OPTION_SCOPE_INFO,
    Values: ?*?*DHCP_ALL_OPTION_VALUES,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpGetAllOptionValuesV6(
    ServerIpAddress: ?PWSTR,
    Flags: u32,
    ScopeInfo: ?*DHCP_OPTION_SCOPE_INFO6,
    Values: ?*?*DHCP_ALL_OPTION_VALUES,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2000'
pub extern "dhcpsapi" fn DhcpEnumServers(
    Flags: u32,
    IdInfo: ?*anyopaque,
    Servers: ?*?*DHCPDS_SERVERS,
    CallbackFn: ?*anyopaque,
    CallbackData: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2000'
pub extern "dhcpsapi" fn DhcpAddServer(
    Flags: u32,
    IdInfo: ?*anyopaque,
    NewServer: ?*DHCPDS_SERVER,
    CallbackFn: ?*anyopaque,
    CallbackData: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2000'
pub extern "dhcpsapi" fn DhcpDeleteServer(
    Flags: u32,
    IdInfo: ?*anyopaque,
    NewServer: ?*DHCPDS_SERVER,
    CallbackFn: ?*anyopaque,
    CallbackData: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2000'
pub extern "dhcpsapi" fn DhcpGetServerBindingInfo(
    ServerIpAddress: ?[*:0]const u16,
    Flags: u32,
    BindElementsInfo: ?*?*DHCP_BIND_ELEMENT_ARRAY,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2000'
pub extern "dhcpsapi" fn DhcpSetServerBindingInfo(
    ServerIpAddress: ?[*:0]const u16,
    Flags: u32,
    BindElementInfo: ?*DHCP_BIND_ELEMENT_ARRAY,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2000'
pub extern "dhcpsapi" fn DhcpAddSubnetElementV5(
    ServerIpAddress: ?[*:0]const u16,
    SubnetAddress: u32,
    AddElementInfo: ?*const DHCP_SUBNET_ELEMENT_DATA_V5,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2000'
pub extern "dhcpsapi" fn DhcpEnumSubnetElementsV5(
    ServerIpAddress: ?[*:0]const u16,
    SubnetAddress: u32,
    EnumElementType: DHCP_SUBNET_ELEMENT_TYPE,
    ResumeHandle: ?*u32,
    PreferredMaximum: u32,
    EnumElementInfo: ?*?*DHCP_SUBNET_ELEMENT_INFO_ARRAY_V5,
    ElementsRead: ?*u32,
    ElementsTotal: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2000'
pub extern "dhcpsapi" fn DhcpRemoveSubnetElementV5(
    ServerIpAddress: ?[*:0]const u16,
    SubnetAddress: u32,
    RemoveElementInfo: ?*const DHCP_SUBNET_ELEMENT_DATA_V5,
    ForceFlag: DHCP_FORCE_FLAG,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV4EnumSubnetReservations(
    ServerIpAddress: ?[*:0]const u16,
    SubnetAddress: u32,
    ResumeHandle: ?*u32,
    PreferredMaximum: u32,
    EnumElementInfo: ?*?*DHCP_RESERVATION_INFO_ARRAY,
    ElementsRead: ?*u32,
    ElementsTotal: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpCreateOptionV6(
    ServerIpAddress: ?PWSTR,
    Flags: u32,
    OptionId: u32,
    ClassName: ?PWSTR,
    VendorName: ?PWSTR,
    OptionInfo: ?*DHCP_OPTION,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpRemoveOptionV6(
    ServerIpAddress: ?PWSTR,
    Flags: u32,
    OptionID: u32,
    ClassName: ?PWSTR,
    VendorName: ?PWSTR,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpEnumOptionsV6(
    ServerIpAddress: ?PWSTR,
    Flags: u32,
    ClassName: ?PWSTR,
    VendorName: ?PWSTR,
    ResumeHandle: ?*u32,
    PreferredMaximum: u32,
    Options: ?*?*DHCP_OPTION_ARRAY,
    OptionsRead: ?*u32,
    OptionsTotal: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpRemoveOptionValueV6(
    ServerIpAddress: ?PWSTR,
    Flags: u32,
    OptionID: u32,
    ClassName: ?PWSTR,
    VendorName: ?PWSTR,
    ScopeInfo: ?*DHCP_OPTION_SCOPE_INFO6,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpGetOptionInfoV6(
    ServerIpAddress: ?PWSTR,
    Flags: u32,
    OptionID: u32,
    ClassName: ?PWSTR,
    VendorName: ?PWSTR,
    OptionInfo: ?*?*DHCP_OPTION,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpSetOptionInfoV6(
    ServerIpAddress: ?PWSTR,
    Flags: u32,
    OptionID: u32,
    ClassName: ?PWSTR,
    VendorName: ?PWSTR,
    OptionInfo: ?*DHCP_OPTION,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpSetOptionValueV6(
    ServerIpAddress: ?PWSTR,
    Flags: u32,
    OptionId: u32,
    ClassName: ?PWSTR,
    VendorName: ?PWSTR,
    ScopeInfo: ?*DHCP_OPTION_SCOPE_INFO6,
    OptionValue: ?*DHCP_OPTION_DATA,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpGetSubnetInfoVQ(
    ServerIpAddress: ?[*:0]const u16,
    SubnetAddress: u32,
    SubnetInfo: ?*?*DHCP_SUBNET_INFO_VQ,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpCreateSubnetVQ(
    ServerIpAddress: ?[*:0]const u16,
    SubnetAddress: u32,
    SubnetInfo: ?*const DHCP_SUBNET_INFO_VQ,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpSetSubnetInfoVQ(
    ServerIpAddress: ?[*:0]const u16,
    SubnetAddress: u32,
    SubnetInfo: ?*const DHCP_SUBNET_INFO_VQ,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpEnumOptionValuesV6(
    ServerIpAddress: ?[*:0]const u16,
    Flags: u32,
    ClassName: ?PWSTR,
    VendorName: ?PWSTR,
    ScopeInfo: ?*DHCP_OPTION_SCOPE_INFO6,
    ResumeHandle: ?*u32,
    PreferredMaximum: u32,
    OptionValues: ?*?*DHCP_OPTION_VALUE_ARRAY,
    OptionsRead: ?*u32,
    OptionsTotal: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2000'
pub extern "dhcpsapi" fn DhcpDsInit() callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2000'
pub extern "dhcpsapi" fn DhcpDsCleanup() callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpSetThreadOptions(
    Flags: u32,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpGetThreadOptions(
    pFlags: ?*u32,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpServerQueryAttribute(
    ServerIpAddr: ?PWSTR,
    dwReserved: u32,
    DhcpAttribId: u32,
    pDhcpAttrib: ?*?*DHCP_ATTRIB,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpServerQueryAttributes(
    ServerIpAddr: ?PWSTR,
    dwReserved: u32,
    dwAttribCount: u32,
    pDhcpAttribs: ?*u32,
    pDhcpAttribArr: ?*?*DHCP_ATTRIB_ARRAY,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2000'
pub extern "dhcpsapi" fn DhcpServerRedoAuthorization(
    ServerIpAddr: ?PWSTR,
    dwReserved: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpAuditLogSetParams(
    ServerIpAddress: ?PWSTR,
    Flags: u32,
    AuditLogDir: ?PWSTR,
    DiskCheckInterval: u32,
    MaxLogFilesSize: u32,
    MinSpaceOnDisk: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpAuditLogGetParams(
    ServerIpAddress: ?PWSTR,
    Flags: u32,
    AuditLogDir: ?*?PWSTR,
    DiskCheckInterval: ?*u32,
    MaxLogFilesSize: ?*u32,
    MinSpaceOnDisk: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpServerQueryDnsRegCredentials(
    ServerIpAddress: ?PWSTR,
    UnameSize: u32,
    Uname: [*:0]u16,
    DomainSize: u32,
    Domain: [*:0]u16,
) callconv(@import("std").os.windows.WINAPI) u32;

pub extern "dhcpsapi" fn DhcpServerSetDnsRegCredentials(
    ServerIpAddress: ?PWSTR,
    Uname: ?PWSTR,
    Domain: ?PWSTR,
    Passwd: ?PWSTR,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpServerSetDnsRegCredentialsV5(
    ServerIpAddress: ?PWSTR,
    Uname: ?PWSTR,
    Domain: ?PWSTR,
    Passwd: ?PWSTR,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpServerBackupDatabase(
    ServerIpAddress: ?PWSTR,
    Path: ?PWSTR,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpServerRestoreDatabase(
    ServerIpAddress: ?PWSTR,
    Path: ?PWSTR,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpServerSetConfigVQ(
    ServerIpAddress: ?[*:0]const u16,
    FieldsToSet: u32,
    ConfigInfo: ?*DHCP_SERVER_CONFIG_INFO_VQ,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpServerGetConfigVQ(
    ServerIpAddress: ?[*:0]const u16,
    ConfigInfo: ?*?*DHCP_SERVER_CONFIG_INFO_VQ,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpGetServerSpecificStrings(
    ServerIpAddress: ?[*:0]const u16,
    ServerSpecificStrings: ?*?*DHCP_SERVER_SPECIFIC_STRINGS,
) callconv(@import("std").os.windows.WINAPI) u32;

pub extern "dhcpsapi" fn DhcpServerAuditlogParamsFree(
    ConfigInfo: ?*DHCP_SERVER_CONFIG_INFO_VQ,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpCreateSubnetV6(
    ServerIpAddress: ?PWSTR,
    SubnetAddress: DHCP_IPV6_ADDRESS,
    SubnetInfo: ?*DHCP_SUBNET_INFO_V6,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpDeleteSubnetV6(
    ServerIpAddress: ?PWSTR,
    SubnetAddress: DHCP_IPV6_ADDRESS,
    ForceFlag: DHCP_FORCE_FLAG,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpEnumSubnetsV6(
    ServerIpAddress: ?[*:0]const u16,
    ResumeHandle: ?*u32,
    PreferredMaximum: u32,
    EnumInfo: ?*?*DHCPV6_IP_ARRAY,
    ElementsRead: ?*u32,
    ElementsTotal: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpAddSubnetElementV6(
    ServerIpAddress: ?PWSTR,
    SubnetAddress: DHCP_IPV6_ADDRESS,
    AddElementInfo: ?*DHCP_SUBNET_ELEMENT_DATA_V6,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpRemoveSubnetElementV6(
    ServerIpAddress: ?PWSTR,
    SubnetAddress: DHCP_IPV6_ADDRESS,
    RemoveElementInfo: ?*DHCP_SUBNET_ELEMENT_DATA_V6,
    ForceFlag: DHCP_FORCE_FLAG,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpEnumSubnetElementsV6(
    ServerIpAddress: ?PWSTR,
    SubnetAddress: DHCP_IPV6_ADDRESS,
    EnumElementType: DHCP_SUBNET_ELEMENT_TYPE_V6,
    ResumeHandle: ?*u32,
    PreferredMaximum: u32,
    EnumElementInfo: ?*?*DHCP_SUBNET_ELEMENT_INFO_ARRAY_V6,
    ElementsRead: ?*u32,
    ElementsTotal: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpGetSubnetInfoV6(
    ServerIpAddress: ?PWSTR,
    SubnetAddress: DHCP_IPV6_ADDRESS,
    SubnetInfo: ?*?*DHCP_SUBNET_INFO_V6,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpEnumSubnetClientsV6(
    ServerIpAddress: ?[*:0]const u16,
    SubnetAddress: DHCP_IPV6_ADDRESS,
    ResumeHandle: ?*DHCP_IPV6_ADDRESS,
    PreferredMaximum: u32,
    ClientInfo: ?*?*DHCP_CLIENT_INFO_ARRAY_V6,
    ClientsRead: ?*u32,
    ClientsTotal: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpServerGetConfigV6(
    ServerIpAddress: ?[*:0]const u16,
    ScopeInfo: ?*DHCP_OPTION_SCOPE_INFO6,
    ConfigInfo: ?*?*DHCP_SERVER_CONFIG_INFO_V6,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpServerSetConfigV6(
    ServerIpAddress: ?[*:0]const u16,
    ScopeInfo: ?*DHCP_OPTION_SCOPE_INFO6,
    FieldsToSet: u32,
    ConfigInfo: ?*DHCP_SERVER_CONFIG_INFO_V6,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpSetSubnetInfoV6(
    ServerIpAddress: ?[*:0]const u16,
    SubnetAddress: DHCP_IPV6_ADDRESS,
    SubnetInfo: ?*DHCP_SUBNET_INFO_V6,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpGetMibInfoV6(
    ServerIpAddress: ?[*:0]const u16,
    MibInfo: ?*?*DHCP_MIB_INFO_V6,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpGetServerBindingInfoV6(
    ServerIpAddress: ?[*:0]const u16,
    Flags: u32,
    BindElementsInfo: ?*?*DHCPV6_BIND_ELEMENT_ARRAY,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpSetServerBindingInfoV6(
    ServerIpAddress: ?[*:0]const u16,
    Flags: u32,
    BindElementInfo: ?*DHCPV6_BIND_ELEMENT_ARRAY,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpSetClientInfoV6(
    ServerIpAddress: ?[*:0]const u16,
    ClientInfo: ?*const DHCP_CLIENT_INFO_V6,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpGetClientInfoV6(
    ServerIpAddress: ?[*:0]const u16,
    SearchInfo: ?*const DHCP_SEARCH_INFO_V6,
    ClientInfo: ?*?*DHCP_CLIENT_INFO_V6,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpDeleteClientInfoV6(
    ServerIpAddress: ?[*:0]const u16,
    ClientInfo: ?*const DHCP_SEARCH_INFO_V6,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpCreateClassV6(
    ServerIpAddress: ?PWSTR,
    ReservedMustBeZero: u32,
    ClassInfo: ?*DHCP_CLASS_INFO_V6,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpModifyClassV6(
    ServerIpAddress: ?PWSTR,
    ReservedMustBeZero: u32,
    ClassInfo: ?*DHCP_CLASS_INFO_V6,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpDeleteClassV6(
    ServerIpAddress: ?PWSTR,
    ReservedMustBeZero: u32,
    ClassName: ?PWSTR,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpEnumClassesV6(
    ServerIpAddress: ?PWSTR,
    ReservedMustBeZero: u32,
    ResumeHandle: ?*u32,
    PreferredMaximum: u32,
    ClassInfoArray: ?*?*DHCP_CLASS_INFO_ARRAY_V6,
    nRead: ?*u32,
    nTotal: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpSetSubnetDelayOffer(
    ServerIpAddress: ?PWSTR,
    SubnetAddress: u32,
    TimeDelayInMilliseconds: u16,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpGetSubnetDelayOffer(
    ServerIpAddress: ?PWSTR,
    SubnetAddress: u32,
    TimeDelayInMilliseconds: ?*u16,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2008'
pub extern "dhcpsapi" fn DhcpGetMibInfoV5(
    ServerIpAddress: ?[*:0]const u16,
    MibInfo: ?*?*DHCP_MIB_INFO_V5,
) callconv(@import("std").os.windows.WINAPI) u32;

pub extern "dhcpsapi" fn DhcpAddSecurityGroup(
    pServer: ?PWSTR,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV4GetOptionValue(
    ServerIpAddress: ?PWSTR,
    Flags: u32,
    OptionID: u32,
    PolicyName: ?PWSTR,
    VendorName: ?PWSTR,
    ScopeInfo: ?*DHCP_OPTION_SCOPE_INFO,
    OptionValue: ?*?*DHCP_OPTION_VALUE,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV4SetOptionValue(
    ServerIpAddress: ?PWSTR,
    Flags: u32,
    OptionId: u32,
    PolicyName: ?PWSTR,
    VendorName: ?PWSTR,
    ScopeInfo: ?*DHCP_OPTION_SCOPE_INFO,
    OptionValue: ?*DHCP_OPTION_DATA,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV4SetOptionValues(
    ServerIpAddress: ?PWSTR,
    Flags: u32,
    PolicyName: ?PWSTR,
    VendorName: ?PWSTR,
    ScopeInfo: ?*DHCP_OPTION_SCOPE_INFO,
    OptionValues: ?*DHCP_OPTION_VALUE_ARRAY,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV4RemoveOptionValue(
    ServerIpAddress: ?PWSTR,
    Flags: u32,
    OptionID: u32,
    PolicyName: ?PWSTR,
    VendorName: ?PWSTR,
    ScopeInfo: ?*DHCP_OPTION_SCOPE_INFO,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV4GetAllOptionValues(
    ServerIpAddress: ?PWSTR,
    Flags: u32,
    ScopeInfo: ?*DHCP_OPTION_SCOPE_INFO,
    Values: ?*?*DHCP_ALL_OPTION_VALUES_PB,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV4FailoverCreateRelationship(
    ServerIpAddress: ?PWSTR,
    pRelationship: ?*DHCP_FAILOVER_RELATIONSHIP,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV4FailoverSetRelationship(
    ServerIpAddress: ?PWSTR,
    Flags: u32,
    pRelationship: ?*DHCP_FAILOVER_RELATIONSHIP,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV4FailoverDeleteRelationship(
    ServerIpAddress: ?PWSTR,
    pRelationshipName: ?PWSTR,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV4FailoverGetRelationship(
    ServerIpAddress: ?PWSTR,
    pRelationshipName: ?PWSTR,
    pRelationship: ?*?*DHCP_FAILOVER_RELATIONSHIP,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV4FailoverEnumRelationship(
    ServerIpAddress: ?PWSTR,
    ResumeHandle: ?*u32,
    PreferredMaximum: u32,
    pRelationship: ?*?*DHCP_FAILOVER_RELATIONSHIP_ARRAY,
    RelationshipRead: ?*u32,
    RelationshipTotal: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV4FailoverAddScopeToRelationship(
    ServerIpAddress: ?PWSTR,
    pRelationship: ?*DHCP_FAILOVER_RELATIONSHIP,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV4FailoverDeleteScopeFromRelationship(
    ServerIpAddress: ?PWSTR,
    pRelationship: ?*DHCP_FAILOVER_RELATIONSHIP,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV4FailoverGetScopeRelationship(
    ServerIpAddress: ?PWSTR,
    ScopeId: u32,
    pRelationship: ?*?*DHCP_FAILOVER_RELATIONSHIP,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV4FailoverGetScopeStatistics(
    ServerIpAddress: ?PWSTR,
    ScopeId: u32,
    pStats: ?*?*DHCP_FAILOVER_STATISTICS,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV4FailoverGetClientInfo(
    ServerIpAddress: ?PWSTR,
    SearchInfo: ?*const DHCP_SEARCH_INFO,
    ClientInfo: ?*?*DHCPV4_FAILOVER_CLIENT_INFO,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV4FailoverGetSystemTime(
    ServerIpAddress: ?PWSTR,
    pTime: ?*u32,
    pMaxAllowedDeltaTime: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV4FailoverGetAddressStatus(
    ServerIpAddress: ?PWSTR,
    SubnetAddress: u32,
    pStatus: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV4FailoverTriggerAddrAllocation(
    ServerIpAddress: ?PWSTR,
    pFailRelName: ?PWSTR,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpHlprCreateV4Policy(
    PolicyName: ?PWSTR,
    fGlobalPolicy: BOOL,
    Subnet: u32,
    ProcessingOrder: u32,
    RootOperator: DHCP_POL_LOGIC_OPER,
    Description: ?PWSTR,
    Enabled: BOOL,
    Policy: ?*?*DHCP_POLICY,
) callconv(@import("std").os.windows.WINAPI) u32;

pub extern "dhcpsapi" fn DhcpHlprCreateV4PolicyEx(
    PolicyName: ?PWSTR,
    fGlobalPolicy: BOOL,
    Subnet: u32,
    ProcessingOrder: u32,
    RootOperator: DHCP_POL_LOGIC_OPER,
    Description: ?PWSTR,
    Enabled: BOOL,
    Policy: ?*?*DHCP_POLICY_EX,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpHlprAddV4PolicyExpr(
    Policy: ?*DHCP_POLICY,
    ParentExpr: u32,
    Operator: DHCP_POL_LOGIC_OPER,
    ExprIndex: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpHlprAddV4PolicyCondition(
    Policy: ?*DHCP_POLICY,
    ParentExpr: u32,
    Type: DHCP_POL_ATTR_TYPE,
    OptionID: u32,
    SubOptionID: u32,
    VendorName: ?PWSTR,
    Operator: DHCP_POL_COMPARATOR,
    // TODO: what to do with BytesParamIndex 8?
    Value: ?*u8,
    ValueLength: u32,
    ConditionIndex: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpHlprAddV4PolicyRange(
    Policy: ?*DHCP_POLICY,
    Range: ?*DHCP_IP_RANGE,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpHlprResetV4PolicyExpr(
    Policy: ?*DHCP_POLICY,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpHlprModifyV4PolicyExpr(
    Policy: ?*DHCP_POLICY,
    Operator: DHCP_POL_LOGIC_OPER,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpHlprFreeV4Policy(
    Policy: ?*DHCP_POLICY,
) callconv(@import("std").os.windows.WINAPI) void;

pub extern "dhcpsapi" fn DhcpHlprFreeV4PolicyArray(
    PolicyArray: ?*DHCP_POLICY_ARRAY,
) callconv(@import("std").os.windows.WINAPI) void;

pub extern "dhcpsapi" fn DhcpHlprFreeV4PolicyEx(
    PolicyEx: ?*DHCP_POLICY_EX,
) callconv(@import("std").os.windows.WINAPI) void;

pub extern "dhcpsapi" fn DhcpHlprFreeV4PolicyExArray(
    PolicyExArray: ?*DHCP_POLICY_EX_ARRAY,
) callconv(@import("std").os.windows.WINAPI) void;

pub extern "dhcpsapi" fn DhcpHlprFreeV4DhcpProperty(
    Property: ?*DHCP_PROPERTY,
) callconv(@import("std").os.windows.WINAPI) void;

pub extern "dhcpsapi" fn DhcpHlprFreeV4DhcpPropertyArray(
    PropertyArray: ?*DHCP_PROPERTY_ARRAY,
) callconv(@import("std").os.windows.WINAPI) void;

pub extern "dhcpsapi" fn DhcpHlprFindV4DhcpProperty(
    PropertyArray: ?*DHCP_PROPERTY_ARRAY,
    ID: DHCP_PROPERTY_ID,
    Type: DHCP_PROPERTY_TYPE,
) callconv(@import("std").os.windows.WINAPI) ?*DHCP_PROPERTY;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpHlprIsV4PolicySingleUC(
    Policy: ?*DHCP_POLICY,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV4QueryPolicyEnforcement(
    ServerIpAddress: ?PWSTR,
    fGlobalPolicy: BOOL,
    SubnetAddress: u32,
    Enabled: ?*BOOL,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV4SetPolicyEnforcement(
    ServerIpAddress: ?PWSTR,
    fGlobalPolicy: BOOL,
    SubnetAddress: u32,
    Enable: BOOL,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpHlprIsV4PolicyWellFormed(
    pPolicy: ?*DHCP_POLICY,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpHlprIsV4PolicyValid(
    pPolicy: ?*DHCP_POLICY,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV4CreatePolicy(
    ServerIpAddress: ?PWSTR,
    pPolicy: ?*DHCP_POLICY,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV4GetPolicy(
    ServerIpAddress: ?PWSTR,
    fGlobalPolicy: BOOL,
    SubnetAddress: u32,
    PolicyName: ?PWSTR,
    Policy: ?*?*DHCP_POLICY,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV4SetPolicy(
    ServerIpAddress: ?PWSTR,
    FieldsModified: u32,
    fGlobalPolicy: BOOL,
    SubnetAddress: u32,
    PolicyName: ?PWSTR,
    Policy: ?*DHCP_POLICY,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV4DeletePolicy(
    ServerIpAddress: ?PWSTR,
    fGlobalPolicy: BOOL,
    SubnetAddress: u32,
    PolicyName: ?PWSTR,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV4EnumPolicies(
    ServerIpAddress: ?PWSTR,
    ResumeHandle: ?*u32,
    PreferredMaximum: u32,
    fGlobalPolicy: BOOL,
    SubnetAddress: u32,
    EnumInfo: ?*?*DHCP_POLICY_ARRAY,
    ElementsRead: ?*u32,
    ElementsTotal: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV4AddPolicyRange(
    ServerIpAddress: ?PWSTR,
    SubnetAddress: u32,
    PolicyName: ?PWSTR,
    Range: ?*DHCP_IP_RANGE,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV4RemovePolicyRange(
    ServerIpAddress: ?PWSTR,
    SubnetAddress: u32,
    PolicyName: ?PWSTR,
    Range: ?*DHCP_IP_RANGE,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV6SetStatelessStoreParams(
    ServerIpAddress: ?PWSTR,
    fServerLevel: BOOL,
    SubnetAddress: DHCP_IPV6_ADDRESS,
    FieldModified: u32,
    Params: ?*DHCPV6_STATELESS_PARAMS,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV6GetStatelessStoreParams(
    ServerIpAddress: ?PWSTR,
    fServerLevel: BOOL,
    SubnetAddress: DHCP_IPV6_ADDRESS,
    Params: ?*?*DHCPV6_STATELESS_PARAMS,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV6GetStatelessStatistics(
    ServerIpAddress: ?PWSTR,
    StatelessStats: ?*?*DHCPV6_STATELESS_STATS,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV4CreateClientInfo(
    ServerIpAddress: ?[*:0]const u16,
    ClientInfo: ?*const DHCP_CLIENT_INFO_PB,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV4EnumSubnetClients(
    ServerIpAddress: ?[*:0]const u16,
    SubnetAddress: u32,
    ResumeHandle: ?*u32,
    PreferredMaximum: u32,
    ClientInfo: ?*?*DHCP_CLIENT_INFO_PB_ARRAY,
    ClientsRead: ?*u32,
    ClientsTotal: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV4GetClientInfo(
    ServerIpAddress: ?[*:0]const u16,
    SearchInfo: ?*const DHCP_SEARCH_INFO,
    ClientInfo: ?*?*DHCP_CLIENT_INFO_PB,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV6CreateClientInfo(
    ServerIpAddress: ?[*:0]const u16,
    ClientInfo: ?*const DHCP_CLIENT_INFO_V6,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV4GetFreeIPAddress(
    ServerIpAddress: ?PWSTR,
    ScopeId: u32,
    StartIP: u32,
    EndIP: u32,
    NumFreeAddrReq: u32,
    IPAddrList: ?*?*DHCP_IP_ARRAY,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windowsServer2012'
pub extern "dhcpsapi" fn DhcpV6GetFreeIPAddress(
    ServerIpAddress: ?PWSTR,
    ScopeId: DHCP_IPV6_ADDRESS,
    StartIP: DHCP_IPV6_ADDRESS,
    EndIP: DHCP_IPV6_ADDRESS,
    NumFreeAddrReq: u32,
    IPAddrList: ?*?*DHCPV6_IP_ARRAY,
) callconv(@import("std").os.windows.WINAPI) u32;

pub extern "dhcpsapi" fn DhcpV4CreateClientInfoEx(
    ServerIpAddress: ?[*:0]const u16,
    ClientInfo: ?*const DHCP_CLIENT_INFO_EX,
) callconv(@import("std").os.windows.WINAPI) u32;

pub extern "dhcpsapi" fn DhcpV4EnumSubnetClientsEx(
    ServerIpAddress: ?[*:0]const u16,
    SubnetAddress: u32,
    ResumeHandle: ?*u32,
    PreferredMaximum: u32,
    ClientInfo: ?*?*DHCP_CLIENT_INFO_EX_ARRAY,
    ClientsRead: ?*u32,
    ClientsTotal: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

pub extern "dhcpsapi" fn DhcpV4GetClientInfoEx(
    ServerIpAddress: ?[*:0]const u16,
    SearchInfo: ?*const DHCP_SEARCH_INFO,
    ClientInfo: ?*?*DHCP_CLIENT_INFO_EX,
) callconv(@import("std").os.windows.WINAPI) u32;

pub extern "dhcpsapi" fn DhcpV4CreatePolicyEx(
    ServerIpAddress: ?PWSTR,
    PolicyEx: ?*DHCP_POLICY_EX,
) callconv(@import("std").os.windows.WINAPI) u32;

pub extern "dhcpsapi" fn DhcpV4GetPolicyEx(
    ServerIpAddress: ?PWSTR,
    GlobalPolicy: BOOL,
    SubnetAddress: u32,
    PolicyName: ?PWSTR,
    Policy: ?*?*DHCP_POLICY_EX,
) callconv(@import("std").os.windows.WINAPI) u32;

pub extern "dhcpsapi" fn DhcpV4SetPolicyEx(
    ServerIpAddress: ?PWSTR,
    FieldsModified: u32,
    GlobalPolicy: BOOL,
    SubnetAddress: u32,
    PolicyName: ?PWSTR,
    Policy: ?*DHCP_POLICY_EX,
) callconv(@import("std").os.windows.WINAPI) u32;

pub extern "dhcpsapi" fn DhcpV4EnumPoliciesEx(
    ServerIpAddress: ?PWSTR,
    ResumeHandle: ?*u32,
    PreferredMaximum: u32,
    GlobalPolicy: BOOL,
    SubnetAddress: u32,
    EnumInfo: ?*?*DHCP_POLICY_EX_ARRAY,
    ElementsRead: ?*u32,
    ElementsTotal: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

//--------------------------------------------------------------------------------
// Section: Unicode Aliases (0)
//--------------------------------------------------------------------------------
const thismodule = @This();
pub usingnamespace switch (@import("../zig.zig").unicode_mode) {
    .ansi => struct {},
    .wide => struct {},
    .unspecified => if (@import("builtin").is_test) struct {} else struct {},
};
//--------------------------------------------------------------------------------
// Section: Imports (4)
//--------------------------------------------------------------------------------
const BOOL = @import("../foundation.zig").BOOL;
const BOOLEAN = @import("../foundation.zig").BOOLEAN;
const PSTR = @import("../foundation.zig").PSTR;
const PWSTR = @import("../foundation.zig").PWSTR;

test {
    // The following '_ = <FuncPtrType>' lines are a workaround for https://github.com/ziglang/zig/issues/4476
    if (@hasDecl(@This(), "LPDHCP_CONTROL")) {
        _ = LPDHCP_CONTROL;
    }
    if (@hasDecl(@This(), "LPDHCP_NEWPKT")) {
        _ = LPDHCP_NEWPKT;
    }
    if (@hasDecl(@This(), "LPDHCP_DROP_SEND")) {
        _ = LPDHCP_DROP_SEND;
    }
    if (@hasDecl(@This(), "LPDHCP_PROB")) {
        _ = LPDHCP_PROB;
    }
    if (@hasDecl(@This(), "LPDHCP_GIVE_ADDRESS")) {
        _ = LPDHCP_GIVE_ADDRESS;
    }
    if (@hasDecl(@This(), "LPDHCP_HANDLE_OPTIONS")) {
        _ = LPDHCP_HANDLE_OPTIONS;
    }
    if (@hasDecl(@This(), "LPDHCP_DELETE_CLIENT")) {
        _ = LPDHCP_DELETE_CLIENT;
    }
    if (@hasDecl(@This(), "LPDHCP_ENTRY_POINT_FUNC")) {
        _ = LPDHCP_ENTRY_POINT_FUNC;
    }

    @setEvalBranchQuota(comptime @import("std").meta.declarations(@This()).len * 3);

    // reference all the pub declarations
    if (!@import("builtin").is_test) return;
    inline for (comptime @import("std").meta.declarations(@This())) |decl| {
        if (decl.is_pub) {
            _ = @field(@This(), decl.name);
        }
    }
}
