Difference between revisions of "UNIX Extensions"

(PosixOpen)
(PosixOpen)
Line 13: Line 13:
 
|}
 
|}
  
in the reply to a trans2 qfsinfo (TRANSACT2_QFSINFO 0x03) info level SMB_QUERY_CIFS_UNIX_INFO (0x200) call.
+
in the reply to a trans2 qfsinfo (TRANSACT2_QFSINFO 0x03) info level SMB_QUERY_CIFS_UNIX_INFO (0x200) call. All values are little endian.
  
 
For open, call TRANSACT2_SETPATHINFO (0x06) call info level :
 
For open, call TRANSACT2_SETPATHINFO (0x06) call info level :
Line 19: Line 19:
 
SMB_POSIX_PATH_OPEN            0x209
 
SMB_POSIX_PATH_OPEN            0x209
  
The request data block should be 14 bytes consisting of
+
The request data block should be 14 bytes consisting of the following :
the following :
 
  
 
{|
 
{|
Line 32: Line 31:
 
|-
 
|-
 
||2 bytes || 12 || Reply info level requested (see below)
 
||2 bytes || 12 || Reply info level requested (see below)
 +
|}
 +
 +
Encodings are as follows :
 +
 +
{|
 +
!POSIX open flags !! Value
 +
|-
 +
|| SMB_O_RDONLY  ||                  0x1
 +
|-
 +
|| SMB_O_WRONLY  ||                  0x2
 +
|-
 +
|| SMB_O_RDWR        ||              0x4
 +
|- 
 +
||SMB_O_CREAT    ||                0x10
 +
|-
 +
|| SMB_O_EXCL      ||                0x20
 +
|-
 +
|| SMB_O_TRUNC    ||                0x40
 +
|-
 +
|| SMB_O_APPEND    ||                0x80
 +
|-
 +
|| SMB_O_SYNC      ||              0x100
 +
|-
 +
|| SMB_O_DIRECTORY    ||            0x200
 +
|-
 +
|| SMB_O_NOFOLLOW    ||              0x400
 +
|-
 +
|| SMB_O_DIRECT        ||            0x800
 
|}
 
|}
  

Revision as of 22:00, 7 February 2007

See http://samba.org/samba/CIFS_POSIX_extensions.html

All Unix extensions are TRANSACT2 commands in the range from 0x200 to 0x2FF (inclusive).

PosixOpen

Server specifies it can serve these by returning :

Capability Value
CIFS_UNIX_POSIX_PATH_OPERATIONS_CAP 0x20

in the reply to a trans2 qfsinfo (TRANSACT2_QFSINFO 0x03) info level SMB_QUERY_CIFS_UNIX_INFO (0x200) call. All values are little endian.

For open, call TRANSACT2_SETPATHINFO (0x06) call info level :

SMB_POSIX_PATH_OPEN 0x209

The request data block should be 14 bytes consisting of the following :

Size Offset Value
4 bytes 0 Flags field (same as smb_ntcreate_flags in SMBNTCreateX to request oplocks)
4 bytes 4 POSIX open flags (see below)
4 bytes 8 POSIX mode_t (see below)
2 bytes 12 Reply info level requested (see below)

Encodings are as follows :

POSIX open flags Value
SMB_O_RDONLY 0x1
SMB_O_WRONLY 0x2
SMB_O_RDWR 0x4
SMB_O_CREAT 0x10
SMB_O_EXCL 0x20
SMB_O_TRUNC 0x40
SMB_O_APPEND 0x80
SMB_O_SYNC 0x100
SMB_O_DIRECTORY 0x200
SMB_O_NOFOLLOW 0x400
SMB_O_DIRECT 0x800

Negotiating Capabilities

Capability Value
CIFS_UNIX_FCNLT_LOCKS_CAP 0x01
CIFS_UNIX_POSIX_ACLS_CAP 0x02
CIFS_UNIX_XATTR_CAP 0x04
CIFS_UNIX_EXATTR_CAP 0x08
CIFS_UNIX_POSIX_PATH_OPERATIONS_CAP 0x20