source: UsbWattMeter/trunk/curl-7.47.1/lib/smb.h@ 164

Last change on this file since 164 was 164, checked in by coas-nagasima, 8 years ago

TOPPERS/ECNLサンプルアプリ「USB充電器電力計」を追加

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-chdr
File size: 7.0 KB
Line 
1#ifndef HEADER_CURL_SMB_H
2#define HEADER_CURL_SMB_H
3/***************************************************************************
4 * _ _ ____ _
5 * Project ___| | | | _ \| |
6 * / __| | | | |_) | |
7 * | (__| |_| | _ <| |___
8 * \___|\___/|_| \_\_____|
9 *
10 * Copyright (C) 2014, Bill Nagel <wnagel@tycoint.com>, Exacq Technologies
11 *
12 * This software is licensed as described in the file COPYING, which
13 * you should have received as part of this distribution. The terms
14 * are also available at https://curl.haxx.se/docs/copyright.html.
15 *
16 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
17 * copies of the Software, and permit persons to whom the Software is
18 * furnished to do so, under the terms of the COPYING file.
19 *
20 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
21 * KIND, either express or implied.
22 *
23 ***************************************************************************/
24
25enum smb_conn_state {
26 SMB_NOT_CONNECTED = 0,
27 SMB_CONNECTING,
28 SMB_NEGOTIATE,
29 SMB_SETUP,
30 SMB_CONNECTED
31};
32
33struct smb_conn {
34 enum smb_conn_state state;
35 char *user;
36 char *domain;
37 unsigned char challenge[8];
38 unsigned int session_key;
39 unsigned short uid;
40 char *recv_buf;
41 size_t upload_size;
42 size_t send_size;
43 size_t sent;
44 size_t got;
45};
46
47/*
48 * Definitions for SMB protocol data structures
49 */
50#ifdef BUILDING_CURL_SMB_C
51
52#if defined(_MSC_VER) || defined(__ILEC400__)
53# define PACK
54# pragma pack(push)
55# pragma pack(1)
56#elif defined(__GNUC__)
57# define PACK __attribute__((packed))
58#else
59# define PACK
60#endif
61
62#define SMB_COM_CLOSE 0x04
63#define SMB_COM_READ_ANDX 0x2e
64#define SMB_COM_WRITE_ANDX 0x2f
65#define SMB_COM_TREE_DISCONNECT 0x71
66#define SMB_COM_NEGOTIATE 0x72
67#define SMB_COM_SETUP_ANDX 0x73
68#define SMB_COM_TREE_CONNECT_ANDX 0x75
69#define SMB_COM_NT_CREATE_ANDX 0xa2
70#define SMB_COM_NO_ANDX_COMMAND 0xff
71
72#define SMB_WC_CLOSE 0x03
73#define SMB_WC_READ_ANDX 0x0c
74#define SMB_WC_WRITE_ANDX 0x0e
75#define SMB_WC_SETUP_ANDX 0x0d
76#define SMB_WC_TREE_CONNECT_ANDX 0x04
77#define SMB_WC_NT_CREATE_ANDX 0x18
78
79#define SMB_FLAGS_CANONICAL_PATHNAMES 0x10
80#define SMB_FLAGS_CASELESS_PATHNAMES 0x08
81#define SMB_FLAGS2_UNICODE_STRINGS 0x8000
82#define SMB_FLAGS2_IS_LONG_NAME 0x0040
83#define SMB_FLAGS2_KNOWS_LONG_NAME 0x0001
84
85#define SMB_CAP_LARGE_FILES 0x08
86#define SMB_GENERIC_WRITE 0x40000000
87#define SMB_GENERIC_READ 0x80000000
88#define SMB_FILE_SHARE_ALL 0x07
89#define SMB_FILE_OPEN 0x01
90#define SMB_FILE_OVERWRITE_IF 0x05
91
92#define SMB_ERR_NOACCESS 0x00050001
93
94struct smb_header {
95 unsigned char nbt_type;
96 unsigned char nbt_flags;
97 unsigned short nbt_length;
98 unsigned char magic[4];
99 unsigned char command;
100 unsigned int status;
101 unsigned char flags;
102 unsigned short flags2;
103 unsigned short pid_high;
104 unsigned char signature[8];
105 unsigned short pad;
106 unsigned short tid;
107 unsigned short pid;
108 unsigned short uid;
109 unsigned short mid;
110} PACK;
111
112struct smb_negotiate_response {
113 struct smb_header h;
114 unsigned char word_count;
115 unsigned short dialect_index;
116 unsigned char security_mode;
117 unsigned short max_mpx_count;
118 unsigned short max_number_vcs;
119 unsigned int max_buffer_size;
120 unsigned int max_raw_size;
121 unsigned int session_key;
122 unsigned int capabilities;
123 unsigned int system_time_low;
124 unsigned int system_time_high;
125 unsigned short server_time_zone;
126 unsigned char encryption_key_length;
127 unsigned short byte_count;
128 char bytes[1];
129} PACK;
130
131struct andx {
132 unsigned char command;
133 unsigned char pad;
134 unsigned short offset;
135} PACK;
136
137struct smb_setup {
138 unsigned char word_count;
139 struct andx andx;
140 unsigned short max_buffer_size;
141 unsigned short max_mpx_count;
142 unsigned short vc_number;
143 unsigned int session_key;
144 unsigned short lengths[2];
145 unsigned int pad;
146 unsigned int capabilities;
147 unsigned short byte_count;
148 char bytes[1024];
149} PACK;
150
151struct smb_tree_connect {
152 unsigned char word_count;
153 struct andx andx;
154 unsigned short flags;
155 unsigned short pw_len;
156 unsigned short byte_count;
157 char bytes[1024];
158} PACK;
159
160struct smb_nt_create {
161 unsigned char word_count;
162 struct andx andx;
163 unsigned char pad;
164 unsigned short name_length;
165 unsigned int flags;
166 unsigned int root_fid;
167 unsigned int access;
168#ifdef HAVE_LONGLONG
169 unsigned long long allocation_size;
170#else
171 unsigned __int64 allocation_size;
172#endif
173 unsigned int ext_file_attributes;
174 unsigned int share_access;
175 unsigned int create_disposition;
176 unsigned int create_options;
177 unsigned int impersonation_level;
178 unsigned char security_flags;
179 unsigned short byte_count;
180 char bytes[1024];
181} PACK;
182
183struct smb_nt_create_response {
184 struct smb_header h;
185 unsigned char word_count;
186 struct andx andx;
187 unsigned char op_lock_level;
188 unsigned short fid;
189 unsigned int create_disposition;
190#ifdef HAVE_LONGLONG
191 unsigned long long create_time;
192 unsigned long long last_access_time;
193 unsigned long long last_write_time;
194 unsigned long long last_change_time;
195#else
196 unsigned __int64 create_time;
197 unsigned __int64 last_access_time;
198 unsigned __int64 last_write_time;
199 unsigned __int64 last_change_time;
200#endif
201 unsigned int ext_file_attributes;
202#ifdef HAVE_LONGLONG
203 unsigned long long allocation_size;
204 unsigned long long end_of_file;
205#else
206 unsigned __int64 allocation_size;
207 unsigned __int64 end_of_file;
208#endif
209} PACK;
210
211struct smb_read {
212 unsigned char word_count;
213 struct andx andx;
214 unsigned short fid;
215 unsigned int offset;
216 unsigned short max_bytes;
217 unsigned short min_bytes;
218 unsigned int timeout;
219 unsigned short remaining;
220 unsigned int offset_high;
221 unsigned short byte_count;
222} PACK;
223
224struct smb_write {
225 struct smb_header h;
226 unsigned char word_count;
227 struct andx andx;
228 unsigned short fid;
229 unsigned int offset;
230 unsigned int timeout;
231 unsigned short write_mode;
232 unsigned short remaining;
233 unsigned short pad;
234 unsigned short data_length;
235 unsigned short data_offset;
236 unsigned int offset_high;
237 unsigned short byte_count;
238 unsigned char pad2;
239} PACK;
240
241struct smb_close {
242 unsigned char word_count;
243 unsigned short fid;
244 unsigned int last_mtime;
245 unsigned short byte_count;
246} PACK;
247
248struct smb_tree_disconnect {
249 unsigned char word_count;
250 unsigned short byte_count;
251} PACK;
252
253#if defined(_MSC_VER) || defined(__ILEC400__)
254# pragma pack(pop)
255#endif
256
257#endif /* BUILDING_CURL_SMB_C */
258
259#if !defined(CURL_DISABLE_SMB) && defined(USE_NTLM) && \
260 (CURL_SIZEOF_CURL_OFF_T > 4)
261
262#if !defined(USE_WINDOWS_SSPI) || defined(USE_WIN32_CRYPTO)
263
264extern const struct Curl_handler Curl_handler_smb;
265extern const struct Curl_handler Curl_handler_smbs;
266
267#endif /* !USE_WINDOWS_SSPI || USE_WIN32_CRYPTO */
268
269#endif /* CURL_DISABLE_SMB && USE_NTLM && CURL_SIZEOF_CURL_OFF_T > 4 */
270
271#endif /* HEADER_CURL_SMB_H */
Note: See TracBrowser for help on using the repository browser.