summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libcli/smb/smb2_constants.h3
-rw-r--r--libcli/smb/smb2_lease.h17
-rwxr-xr-xlibcli/smb/wscript5
-rw-r--r--librpc/idl/smb2_lease_struct.idl33
-rw-r--r--librpc/idl/wscript_build1
-rw-r--r--librpc/wscript_build6
-rw-r--r--source4/libcli/raw/interfaces.h1
7 files changed, 46 insertions, 20 deletions
diff --git a/libcli/smb/smb2_constants.h b/libcli/smb/smb2_constants.h
index 40a63396afd..0b34723c751 100644
--- a/libcli/smb/smb2_constants.h
+++ b/libcli/smb/smb2_constants.h
@@ -181,9 +181,6 @@
/* SMB2 lease bits */
#define SMB2_LEASE_NONE 0x00
-#define SMB2_LEASE_READ 0x01
-#define SMB2_LEASE_HANDLE 0x02
-#define SMB2_LEASE_WRITE 0x04
/* SMB2 lease flags */
#define SMB2_LEASE_FLAG_BREAK_IN_PROGRESS 0x00000002
diff --git a/libcli/smb/smb2_lease.h b/libcli/smb/smb2_lease.h
index 73f97acb75c..ba8178dba06 100644
--- a/libcli/smb/smb2_lease.h
+++ b/libcli/smb/smb2_lease.h
@@ -23,22 +23,7 @@
#ifndef _LIBCLI_SMB_SMB2_LEASE_H_
#define _LIBCLI_SMB_SMB2_LEASE_H_
-/*
- SMB2 lease structure (per MS-SMB2 2.2.13)
-*/
-struct smb2_lease_key {
- uint64_t data[2];
-};
-
-struct smb2_lease {
- struct smb2_lease_key lease_key;
- uint32_t lease_state;
- uint32_t lease_flags;
- uint64_t lease_duration; /* should be 0 */
- /* only for v2 */
- struct smb2_lease_key parent_lease_key;
- uint16_t lease_epoch;
-};
+#include "librpc/gen_ndr/smb2_lease_struct.h"
/*
* Parse a smb2 lease create context. Return -1 on error, buffer.length on
diff --git a/libcli/smb/wscript b/libcli/smb/wscript
index f28b7454b47..17efc97b477 100755
--- a/libcli/smb/wscript
+++ b/libcli/smb/wscript
@@ -40,7 +40,10 @@ def build(bld):
smb2cli_echo.c
tstream_smbXcli_np.c
''',
- deps='LIBCRYPTO errors gensec krb5samba smb_transport',
+ deps='''
+ LIBCRYPTO NDR_SMB2_LEASE_STRUCT errors gensec krb5samba
+ smb_transport
+ ''',
public_deps='talloc samba-util',
private_library=True,
public_headers='''
diff --git a/librpc/idl/smb2_lease_struct.idl b/librpc/idl/smb2_lease_struct.idl
new file mode 100644
index 00000000000..ea28548956c
--- /dev/null
+++ b/librpc/idl/smb2_lease_struct.idl
@@ -0,0 +1,33 @@
+#include "idl_types.h"
+
+/*
+ miscellaneous IDL structures
+*/
+
+[
+ pointer_default(unique)
+]
+interface smb2_lease_struct
+{
+ /*
+ * SMB2 lease structure (per MS-SMB2 2.2.13)
+ */
+ typedef [public] struct {
+ hyper data[2];
+ } smb2_lease_key;
+
+ typedef [public,bitmap32bit] bitmap {
+ SMB2_LEASE_READ = 0x01,
+ SMB2_LEASE_WRITE = 0x02,
+ SMB2_LEASE_HANDLE = 0x04
+ } smb2_lease_state;
+
+ typedef [public] struct {
+ smb2_lease_key lease_key;
+ smb2_lease_state lease_state;
+ uint32 lease_flags;
+ uint32 lease_duration; /* should be 0 */
+ smb2_lease_key parent_lease_key;
+ uint16 lease_epoch;
+ } smb2_lease;
+}; \ No newline at end of file
diff --git a/librpc/idl/wscript_build b/librpc/idl/wscript_build
index d1484afcda5..1bac9a74d2b 100644
--- a/librpc/idl/wscript_build
+++ b/librpc/idl/wscript_build
@@ -11,6 +11,7 @@ bld.SAMBA_PIDL_LIST('PIDL',
oxidresolver.idl samr.idl server_id.idl srvsvc.idl winreg.idl dcerpc.idl
drsblobs.idl efs.idl frstrans.idl mgmt.idl netlogon.idl
notify.idl
+ smb2_lease_struct.idl
policyagent.idl scerpc.idl svcctl.idl wkssvc.idl eventlog6.idl backupkey.idl
fsrvp.idl witness.idl''',
options='--header --ndr-parser --samba3-ndr-server --server --client --python',
diff --git a/librpc/wscript_build b/librpc/wscript_build
index 393f57979a6..b21619e244c 100644
--- a/librpc/wscript_build
+++ b/librpc/wscript_build
@@ -353,6 +353,12 @@ bld.SAMBA_SUBSYSTEM('NDR_XATTR',
public_deps='ndr NDR_SECURITY'
)
+bld.SAMBA_SUBSYSTEM('NDR_SMB2_LEASE_STRUCT',
+ source='gen_ndr/ndr_smb2_lease_struct.c',
+ public_deps='ndr',
+ public_headers='gen_ndr/smb2_lease_struct.h'
+ )
+
bld.SAMBA_SUBSYSTEM('NDR_SCHANNEL',
source='ndr/ndr_schannel.c gen_ndr/ndr_schannel.c',
public_deps='ndr ndr_nbt'
diff --git a/source4/libcli/raw/interfaces.h b/source4/libcli/raw/interfaces.h
index 7bc79cad218..12c03774f55 100644
--- a/source4/libcli/raw/interfaces.h
+++ b/source4/libcli/raw/interfaces.h
@@ -25,6 +25,7 @@
#include "source4/libcli/raw/smb.h"
#include "../libcli/smb/smb_common.h"
#include "librpc/gen_ndr/misc.h" /* for struct GUID */
+#include "librpc/gen_ndr/smb2_lease_struct.h"
/* this structure is just a wrapper for a string, the only reason we
bother with this is that it allows us to check the length provided