xref: /reactos/sdk/include/psdk/dhcpcsdk.h (revision 33fde115)
1 /*
2  * Copyright (C) 2017 Alistair Leslie-Hughes
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18 #ifndef _DHCPCSDK_
19 #define _DHCPCSDK_
20 
21 #define OPTION_PAD                      0
22 #define OPTION_SUBNET_MASK              1
23 #define OPTION_TIME_OFFSET              2
24 #define OPTION_ROUTER_ADDRESS           3
25 #define OPTION_TIME_SERVERS             4
26 #define OPTION_IEN116_NAME_SERVERS      5
27 #define OPTION_DOMAIN_NAME_SERVERS      6
28 #define OPTION_LOG_SERVERS              7
29 #define OPTION_COOKIE_SERVERS           8
30 #define OPTION_LPR_SERVERS              9
31 #define OPTION_IMPRESS_SERVERS          10
32 #define OPTION_RLP_SERVERS              11
33 #define OPTION_HOST_NAME                12
34 #define OPTION_BOOT_FILE_SIZE           13
35 #define OPTION_MERIT_DUMP_FILE          14
36 #define OPTION_DOMAIN_NAME              15
37 #define OPTION_SWAP_SERVER              16
38 #define OPTION_ROOT_DISK                17
39 #define OPTION_EXTENSIONS_PATH          18
40 #define OPTION_BE_A_ROUTER              19
41 #define OPTION_NON_LOCAL_SOURCE_ROUTING 20
42 #define OPTION_POLICY_FILTER_FOR_NLSR   21
43 #define OPTION_MAX_REASSEMBLY_SIZE      22
44 #define OPTION_DEFAULT_TTL              23
45 #define OPTION_PMTU_AGING_TIMEOUT       24
46 #define OPTION_PMTU_PLATEAU_TABLE       25
47 #define OPTION_MTU                      26
48 #define OPTION_ALL_SUBNETS_MTU          27
49 #define OPTION_BROADCAST_ADDRESS        28
50 #define OPTION_PERFORM_MASK_DISCOVERY   29
51 #define OPTION_BE_A_MASK_SUPPLIER       30
52 #define OPTION_PERFORM_ROUTER_DISCOVERY 31
53 #define OPTION_ROUTER_SOLICITATION_ADDR 32
54 #define OPTION_STATIC_ROUTES            33
55 #define OPTION_TRAILERS                 34
56 #define OPTION_ARP_CACHE_TIMEOUT        35
57 #define OPTION_ETHERNET_ENCAPSULATION   36
58 #define OPTION_TTL                      37
59 #define OPTION_KEEP_ALIVE_INTERVAL      38
60 #define OPTION_KEEP_ALIVE_DATA_SIZE     39
61 #define OPTION_NETWORK_INFO_SERVICE_DOM 40
62 #define OPTION_NETWORK_INFO_SERVERS     41
63 #define OPTION_NETWORK_TIME_SERVERS     42
64 #define OPTION_VENDOR_SPEC_INFO         43
65 #define OPTION_NETBIOS_NAME_SERVER      44
66 #define OPTION_NETBIOS_DATAGRAM_SERVER  45
67 #define OPTION_NETBIOS_NODE_TYPE        46
68 #define OPTION_NETBIOS_SCOPE_OPTION     47
69 #define OPTION_XWINDOW_FONT_SERVER      48
70 #define OPTION_XWINDOW_DISPLAY_MANAGER  49
71 #define OPTION_REQUESTED_ADDRESS        50
72 #define OPTION_LEASE_TIME               51
73 #define OPTION_OK_TO_OVERLAY            52
74 #define OPTION_MESSAGE_TYPE             53
75 #define OPTION_SERVER_IDENTIFIER        54
76 #define OPTION_PARAMETER_REQUEST_LIST   55
77 #define OPTION_MESSAGE                  56
78 #define OPTION_MESSAGE_LENGTH           57
79 #define OPTION_RENEWAL_TIME             58
80 #define OPTION_REBIND_TIME              59
81 #define OPTION_CLIENT_CLASS_INFO        60
82 #define OPTION_CLIENT_ID                61
83 
84 #define OPTION_TFTP_SERVER_NAME         66
85 #define OPTION_BOOTFILE_NAME            67
86 
87 #define OPTION_MSFT_IE_PROXY            252
88 #define OPTION_END                      255
89 
90 typedef struct _DHCPAPI_PARAMS
91 {
92     ULONG  Flags;
93     ULONG  OptionId;
94     BOOL   IsVendor;
95     BYTE   *Data;
96     DWORD  nBytesData;
97 } DHCPAPI_PARAMS, *PDHCPAPI_PARAMS, *LPDHCPAPI_PARAMS;
98 
99 typedef struct _DHCPAPI_PARAMS DHCPCAPI_PARAMS, *PDHCPCAPI_PARAMS, *LPDHCPCAPI_PARAMS;
100 
101 typedef struct _DHCPCAPI_PARAMS_ARARAY
102 {
103     ULONG             nParams;
104     LPDHCPCAPI_PARAMS Params;
105 } DHCPCAPI_PARAMS_ARRAY, *PDHCPCAPI_PARAMS_ARRAY, *LPDHCPCAPI_PARAMS_ARRAY;
106 
107 typedef struct _DHCPCAPI_CLASSID
108 {
109     ULONG  Flags;
110     BYTE   *Data;
111     ULONG  nBytesData;
112 } DHCPCAPI_CLASSID, *PDHCPCAPI_CLASSID, *LPDHCPCAPI_CLASSID;
113 
114 #define DHCPCAPI_REQUEST_PERSISTENT   0x1
115 #define DHCPCAPI_REQUEST_SYNCHRONOUS  0x2
116 #define DHCPCAPI_REQUEST_ASYNCHRONOUS 0x4
117 #define DHCPCAPI_REQUEST_CANCEL       0x8
118 #define DHCPCAPI_REQUEST_MASK         0xf
119 
120 void WINAPI DhcpCApiCleanup(void);
121 DWORD WINAPI DhcpCApiInitialize(DWORD *);
122 DWORD WINAPI DhcpRequestParams(DWORD, void *, WCHAR *, DHCPCAPI_CLASSID *, DHCPCAPI_PARAMS_ARRAY,
123                                DHCPCAPI_PARAMS_ARRAY, BYTE *, DWORD *, WCHAR *);
124 
125 #endif
126