summaryrefslogtreecommitdiff
path: root/source3/libsmb/smb2cli_base.h
blob: 83c35ca0614881ac35c50827f4aaa9a3a890bffc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/*
   Unix SMB/CIFS implementation.
   smb2 client routines
   Copyright (C) Volker Lendecke 2011

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

#ifndef __SMB2CLI_BASE_H__
#define __SMB2CLI_BASE_H__

#include "../libcli/smb/smbXcli_base.h"

static inline struct tevent_req *cli_state_smb2cli_req_send(TALLOC_CTX *mem_ctx,
				    struct tevent_context *ev,
				    struct cli_state *cli,
				    uint16_t cmd,
				    uint32_t additional_flags,
				    uint32_t clear_flags,
				    uint32_t timeout_msec,
				    uint32_t pid,
				    uint32_t tid,
				    uint64_t uid,
				    const uint8_t *fixed,
				    uint16_t fixed_len,
				    const uint8_t *dyn,
				    uint32_t dyn_len)
{
	if (cli->smb2.conn == NULL) {
		cli->smb2.conn = smbXcli_conn_create(cli,
						     cli->conn.fd,
						     cli->conn.remote_name,
						     SMB_SIGNING_OFF,
						     0,  /* smb1_capabilities */
						     NULL); /* client guid */
		if (cli->smb2.conn == NULL) {
			return NULL;
		}
	}

	return smb2cli_req_send(mem_ctx, ev,
				cli->smb2.conn, cmd,
				additional_flags, clear_flags,
				timeout_msec,
				pid, tid, uid,
				fixed, fixed_len,
				dyn, dyn_len);
}

#define smb2cli_req_send(mem_ctx, ev, cli, cmd, \
			 additional_flags, clear_flags, \
			 timeout_msec, \
			 pid, tid, uid, \
			 fixed, fixed_len, dyn, dyn_len) \
	cli_state_smb2cli_req_send(mem_ctx, ev, cli, cmd, \
			 additional_flags, clear_flags, \
			 timeout_msec, \
			 pid, tid, uid, \
			 fixed, fixed_len, dyn, dyn_len)

#endif