From 926240428c0646aabb13539745940b61a7cf44a9 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 4 Dec 2003 02:03:06 +0000 Subject: * patch based on work by Jim Myers to unify the ioctl handling to be more like the other major SMB functions * added SMBntrename code (This used to be commit f2d3dc9893fa0e089c407fa16ce9ff13587e70cd) --- source4/include/ntvfs.h | 2 +- source4/include/smb_interfaces.h | 73 +++++++++++++++++++++++++++++----------- 2 files changed, 54 insertions(+), 21 deletions(-) (limited to 'source4/include') diff --git a/source4/include/ntvfs.h b/source4/include/ntvfs.h index af23f10607..6628402a97 100644 --- a/source4/include/ntvfs.h +++ b/source4/include/ntvfs.h @@ -58,7 +58,7 @@ struct ntvfs_ops { NTSTATUS (*search_close)(struct request_context *req, union smb_search_close *io); /* operations on open files */ - NTSTATUS (*ioctl)(struct request_context *req, struct smb_ioctl *io); + NTSTATUS (*ioctl)(struct request_context *req, union smb_ioctl *io); NTSTATUS (*read)(struct request_context *req, union smb_read *io); NTSTATUS (*write)(struct request_context *req, union smb_write *io); NTSTATUS (*seek)(struct request_context *req, struct smb_seek *io); diff --git a/source4/include/smb_interfaces.h b/source4/include/smb_interfaces.h index 52df49f01b..4bf557359e 100644 --- a/source4/include/smb_interfaces.h +++ b/source4/include/smb_interfaces.h @@ -2,6 +2,7 @@ Unix SMB/CIFS implementation. SMB request interface structures Copyright (C) Andrew Tridgell 2003 + Copyright (C) James J Myers 2003 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 @@ -28,7 +29,7 @@ typedef struct GUID uint8 info[GUID_SIZE]; } GUID; -/* 64 bit time (100usec) 1601 - cifs6.txt, section 3.5, page 30 */ +/* 64 bit time (100 nanosec) 1601 - cifs6.txt, section 3.5, page 30 */ typedef struct nttime_info { uint32 low; @@ -78,7 +79,7 @@ struct smb_seek { int32 offset; /* signed */ } in; struct { - uint32 offset; + int32 offset; } out; }; @@ -1573,16 +1574,44 @@ union smb_lpq { } retq; }; +enum ioctl_level {RAW_IOCTL_IOCTL, RAW_IOCTL_NTIOCTL}; -/* struct for SMBioctl */ -struct smb_ioctl { +/* + union for ioctl() backend +*/ +union smb_ioctl { + /* generic interface */ struct { - uint16 fnum; - uint32 request; - } in; + enum ioctl_level level; + + } generic; + + /* struct for SMBioctl */ struct { - DATA_BLOB blob; - } out; + enum ioctl_level level; + struct { + uint16 fnum; + uint32 request; + } in; + struct { + DATA_BLOB blob; + } out; + } ioctl; + + + /* struct for NT ioctl call */ + struct { + enum ioctl_level level; + struct { + uint32 function; + uint16 fnum; + BOOL fsctl; + uint8 filter; + } in; + struct { + DATA_BLOB blob; + } out; + } ntioctl; }; /* struct for SMBflush */ @@ -1671,19 +1700,10 @@ struct smb_notify { } out; }; -/* struct for NT ioctl call */ -struct smb_ntioctl { - struct { - uint32 function; - uint16 fnum; - BOOL fsctl; - uint8 filter; - } in; -}; - enum search_level {RAW_SEARCH_GENERIC = 0xF000, RAW_SEARCH_SEARCH, /* SMBsearch */ + RAW_SEARCH_FCLOSE, /* SMBfclose */ RAW_SEARCH_STANDARD = SMB_FIND_STANDARD, RAW_SEARCH_EA_SIZE = SMB_FIND_EA_SIZE, RAW_SEARCH_DIRECTORY_INFO = SMB_FIND_DIRECTORY_INFO, @@ -1914,6 +1934,20 @@ union smb_search_close { enum search_close_level level; } generic; + /* SMBfclose (old search) interface */ + struct { + enum search_level level; + + struct { + uint16 max_count; + uint16 search_attrib; + DATA_BLOB search_id; + } in; + struct { + uint16 count; + } out; + } search_next; + /* SMBfindclose interface */ struct { enum search_close_level level; @@ -1924,4 +1958,3 @@ union smb_search_close { } findclose; }; - -- cgit