`
`Extended 2.0 Protocol SMBtrans2
`
`smb_dscnt
`
`Number of data bytes being sent in this buffer.
`
`smb_dso1T
`
`Offset from the start of an SlVlB header to the data bytes.
`
`smb_dsd1'sp
`
`Byte displacement for these data bytes.
`
`smb_fid
`
`smb_bcc
`
`Value = Oxffff. No FID in this request.
`
`Total bytes following including pad bytes.
`
`smb_data[]
`
`Data bytes (size = smb_dscnt).
`
`Re sponse Form at
`
`smb_wct
`
`Value = 10.
`
`smb_tprcnt
`
`Value = 2.
`
`smb_tdrcnt
`
`Value = 0. No data bytes.
`
`smb_rsvd
`
`Reserved. Must be zero.
`
`smb_prcnt
`
`Value = 2. Parameter bytes being returned.
`
`smb_prolT
`
`Offset from the start of an SlVlB header to the parameter bytes.
`
`smb_prd1'sp
`
`Value = 0. Byte displacement for these parameter bytes.
`
`smb_bcc
`
`Total bytes following including pad bytes.
`
`smb_param[]
`
`The parameter block for the TRANSACT2_MKD1R function response is the
`mkdir—specific return information in the following form at:
`
`Location
`
`Nam e
`
`l'Ult.-aning
`
`smb_param[0—1] mkdir_ofl%rror Offset into FEALIST data of first error
`which
`occurred while
`setting
`the
`extended attributes.
`
`250
`
`X/Open CAE Specification (1992)
`
`Page 268 of 534
`
`Verizon Exhibit 1004
`
`
`
` Appendix A
`
`SIVIB Transmission Analysis
`
`A.1
`
`Introduction
`
`This appendix describes the mapping between DOS and OS/2 system calls on an Sl\/[B
`redirector, and the associated SMB requests sent from the SIVIB redirector to an LMX server. The
`DOS SMB redirector is assumed to be using the core SMB protocols, and the OS/2 SIVIB
`redirector is assumed to be using the LAN Manager extended SIVIB protocols. While an OS/2
`Sl\/[B redirector will use core Sl\/[B requests to communicate with a core Ll\/IX server, and a DOS
`LAN Manager client will use extended SIVIB requests to communicate with an OS/2 server, these
`situations will not be considered here.
`
`The mappings given here do not com pletely describe the behaviour of all SMB redirectors; they
`do not take into account various optimisations which Sl\/[B redirectors may do which will result
`in behaviour which differs from that described here. In particular, the extended SMB protocol
`contains a number of facilities which allow a redirector to improve performance. These include:
`SIVIB chaining, opportunistic locking, caching and various specialised Sl\/[B requests, such as
`Read Block Multiplex, Write Block Multiplex, Read Block Raw and Write Block Raw. Redirectors
`which make use of these facilities may not behave exactly as described here.
`
`It should also be noted that the OS/2 SIVIB redirector and file system make extensive use of
`internal buffers and heuristics that make it difficult to determine an exact mapping between
`OS/2 API calls and SIVIB emissions. The listed API calls give an indication of which Sl\/lBs are
`sent when invoked, and where possible, an explanation is given regarding any special
`circumstances.
`
`DOS and OS/2 system calls which are not listed here will not normally result in SIVIB requests
`being transmitted.
`
`Protocols for X/Open PC Interworking: SIVIB, Version 2
`
`251
`
`Page 269 of 534
`
`
`
`DOS Functions
`
`SMB Transmission Analysis
`
`A.2
`
`DOS Functions
`
`Function Number
`
`DOS Function
`
`0x00
`0x05
`0x0d
`0x0f
`0x10
`0x11
`0x12
`0x13
`0x14
`0x15
`0x16
`0x17
`Oxlb
`Oxlc
`0x21
`0x22
`0x23
`0x27
`0x28
`0x36
`0x39
`0x3a
`0x3b
`0x3C
`0x3d
`0x3e
`0x3f
`0x40
`0x41
`0x42
`0x43
`0x4b
`0x4C
`0x4e
`0x4f
`0x56
`0x57
`0x5a
`0x5b
`0x5C
`0x5f
`0x68
`
`Term inate Program m e
`Print Character
`Reset Disk
`
`Open File (FCB I/ O)
`Close File (FCB I/ O)
`Search For First Entry
`Search For Next Entry
`Delete File (FCB I/ O)
`Sequential Read (FCB I/O)
`Sequential Write (FCB I/ O)
`Create File (FCB I/ O)
`Renam e File (FCB I/O)
`Get Default Drive Data
`Get Drive Data
`
`Random Read (FCB I/ O)
`Random Write (FCB I/ O)
`Get File Size (FCB I/ O)
`Random Block Read (FCB I/ O)
`Random Block Write (FCB I/ O)
`Get Disk Free Space
`Create Directory
`Rem ove Directory
`Change Current Directory
`Create File Handle
`
`Open File Handle
`Close File Handle
`Read Via File Handle
`Write Via File Handle
`
`Delete Directory Entry
`Move File Pointer
`Set/Get File Attributes
`
`Load and Execute Program me/Load Overlay
`End Process
`Find First File
`Find Next File
`
`Change Directory Entry
`Set/Get Date/Time of File
`
`Create Temporary File Handle
`Create New File
`Unlock/Lock File
`
`Get Assign List Entry
`Flush Buffer
`
`252
`
`Page 270 of 534
`
`X/ Open CAE Specification (1992)
`
`
`
`SMB Transmission Analysis
`
`DOS Functions
`
`Change Curre nt Dire ctory
`
`Function number
`
`0x3b.
`
`SIVIB sent
`
`Reason
`
`SIVlBchkpth.
`
`Change directory.
`
`Change Directory Entry
`
`Function number
`
`0x56.
`
`SIVIB sent
`
`Reason
`
`SIVlBmV.
`
`Rename file.
`
`Close File (FCB I/O)
`
`Function number
`
`0x10.
`
`SIVIB sent
`
`S1VlBc1ose.
`
`Reason
`
`Close file (FCB I/O).
`
`Close File Handle
`
`Function number
`
`0x3e.
`
`SIVIB sent
`
`Reason
`
`S1VlBc1ose, SMBsp1close (printer device).
`
`Close file.
`
`Create Directory
`
`Function number
`
`0x39.
`
`SIVIB sent
`
`SIVlBmkd1'r.
`
`Reason
`
`Make directory.
`
`Create File (FCB I/O)
`
`Function number
`
`0x16.
`
`SIVIB sent
`
`Reason
`
`S1VlBcreate.
`
`Create file.
`
`Create File Handle
`
`Function number
`
`0x3c.
`
`SIVIB sent
`
`Reason
`
`S1VlBcreate.
`
`Create file.
`
`Protocols for X/ Open PC Interworking: SIVIB, Version 2
`
`253
`
`Page 271 of 534
`
`
`
`DOS Functions
`
`SMB Transmission Analysis
`
`Create New File
`
`Function number
`
`0x5b.
`
`SIVIB sent
`
`Reason
`
`SA/Bmknew.
`
`Create file.
`
`Delete Dire ctory Entry
`
`Function number
`
`0x41.
`
`SIVIB sent
`
`Reason
`
`SIVlBun1inI(.
`
`Delete file.
`
`Delete File (FCB I/O)
`
`Function number
`
`0x13.
`
`SIVIB sent
`
`SIVlBun1inI(.
`
`Reason
`
`Delete file (FCB I/O).
`
`End Proce ss
`
`Function number
`
`0x4c.
`
`SIVIB sent
`
`SIVlBeXit.
`
`Reason
`
`Exit program in e.
`
`Find First File
`
`Function number
`
`0x4e.
`
`SIVIB sent
`
`S1VlBsearch.
`
`Reason
`
`Find first matching filenam e.
`
`Find Next File
`
`Function number
`
`0x4f.
`
`SIVIB sent
`
`S1VlBsearch.
`
`Reason
`
`Find next matching filenam e.
`
`Flush Buffe r
`
`Function number
`
`0x68.
`
`SIVIB sent
`
`Reason
`
`S1VlBflush.
`
`Comm it file.
`
`254
`
`X/ Open CAE Specification (1992)
`
`Page 272 of 534
`
`
`
`SMB Transmission Analysis
`
`DOS Functions
`
`Get Assign List Entry
`
`Function number
`
`0x5f.
`
`SIVIB sent
`
`Reason
`
`S1VlBtcon, S1VlBtd1's.
`
`Redirect device, cancel redirection.
`
`Get De fault Drive Data
`
`Function number
`
`Oxlb.
`
`SIVIB sent
`
`Reason
`
`S1VlBdskattr.
`
`Get data on the default drive.
`
`Get Disk Free Space
`
`Function number
`
`0x36.
`
`SIVIB sent
`
`S1VlBdskattr.
`
`Reason
`
`Get free space on disk.
`
`Get Drive data
`
`Function number
`
`Oxlc.
`
`SIVIB sent
`
`Reason
`
`S1VlBdskattr.
`
`Get data on a drive.
`
`Get File Size (FCB I/O)
`
`Function number
`
`0x23.
`
`SIVIB sent
`
`Reason
`
`S1VlBsearch.
`
`File size in records.
`
`Load and Execute Programme /Load Overlay
`
`Function number
`
`0x4b.
`
`SIVIB sent
`
`Reason
`
`SIVlBopen, S1VlBread, SIVlBc1ose.
`
`Load/execute program III e.
`
`Move File Pointer
`
`Function number
`
`0x42.
`
`SIVIB sent
`
`S1VlB1seek.
`
`Reason
`
`Set position in file.
`
`Protocols for X/ Open PC Interworking: SIVIB, Version 2
`
`255
`
`Page 273 of 534
`
`
`
`DOS Functions
`
`SMB Transmiss1'on Analysis
`
`Open File (FCB I/O)
`
`Function number
`
`0x0f.
`
`SIVIB sent
`
`Reason
`
`SIVlBopen (read/write/share set to Oxfl).
`
`Open file (FCB I/O).
`
`Ope n File Handle
`
`Function number
`
`0x3d.
`
`SIVIB sent
`
`Reason
`
`Print Charac te r
`
`SIVlBopen, SIVlBso1open (printer device).
`
`Open file.
`
`Function number
`
`0x05.
`
`SIVIB sent
`
`Reason
`
`S1VlBsp1open, SIVlBsp1wr, SIVlBsp1c1ose.
`
`Printer output.
`
`Random Block Re ad (FCB I/O)
`
`Function number
`
`0x27.
`
`SIVIB sent
`
`S1VlBread.
`
`Reason
`
`Random block read (FCB I/O).
`
`Random Block Write (FCB I/O)
`
`Function number
`
`0x28.
`
`SIVIB sent
`
`SMBwrite.
`
`Reason
`
`Random block write (FCB I/O).
`
`Random Re ad (FCB LO)
`
`Function number
`
`0x21.
`
`SIVIB sent
`
`SIVlBread.
`
`Reason
`
`Random read (FCB I/O).
`
`Random Write (FCB I/O)
`
`Function number
`
`0x22.
`
`SIVIB sent
`
`Reason
`
`SIVlBwrite.
`
`Random write.
`
`256
`
`X/ Open CAE Specification (1992)
`
`Page 274 of 534
`
`
`
`SMB Transmission Analysis
`
`DOS Functions
`
`Re ad Via File Handle
`
`Function number
`
`0x3f.
`
`SIVIB sent
`
`Reason
`
`S1VlBread.
`
`Read file.
`
`Re In ove Dire ctory
`
`Function number
`
`0x3a.
`
`SIVIB sent
`
`SIVlBrmdir.
`
`Reason
`
`Rem ove directory.
`
`Rename File (FCB I/O)
`
`Function number
`
`0x17.
`
`SIVIB sent
`
`Reason
`
`Re se t Disk
`
`S1VlBmV.
`
`Renam e file.
`
`Function number
`
`0x0d.
`
`SIVIB sent
`
`S1VlBflush.
`
`Reason
`
`Disk reset (flush file bufl°ers).
`
`Search For First Entry
`
`Function number
`
`0x11.
`
`SIVIB sent
`
`SIVlBsearch.
`
`Reason
`
`Search first matching entry.
`
`3 e arch For Ne xt Entry
`
`Function number
`
`0x12.
`
`SIVIB sent
`
`SIVlBsearch.
`
`Reason
`
`Search next matching entry.
`
`Se que ntial Re ad (FCB I/O)
`
`Function number
`
`0x14.
`
`SIVIB sent
`
`S1VlBread.
`
`Reason
`
`Sequential read (FCB I/O).
`
`Protocols for X/ Open PC Interworking: SIVIB, Version 2
`
`257
`
`Page 275 of 534
`
`
`
`DOS Functions
`
`SMB Transmission Analysis
`
`Sequential Write (FCB I/O)
`
`Function number
`
`0x15.
`
`SIVIB sent
`
`SIVlBwrite.
`
`Reason
`
`Sequential write (FCB I/ O).
`
`Set/Get Date /Time of File
`
`Function number
`
`0x57.
`
`SIVIB sent
`
`Reason
`
`SIVlBsearch, SA/lBsetatr.
`
`Get/set file date and time.
`
`S e t/Get File Attribute s
`
`Function number
`
`0x43.
`
`SIVIB sent
`
`SIVlBsetatr.
`
`Reason
`
`Change file attributes.
`
`Te rm inate Program m e
`
`Function number
`
`0x00.
`
`SIVIB sent
`
`S1VlBeXit.
`
`Reason
`
`Program III e term inate.
`
`Unlock/Lock File
`
`Function number
`
`0x5c.
`
`SIVIB sent
`
`Reason
`
`SMB1ock, SIVlBun1ock.
`
`Lock/Unlock file.
`
`Write Via File Handle
`
`Function number
`
`0x40.
`
`SIVIB sent
`
`Reason
`
`SIVlBwr1'te, SA/lBsp1Wr (printer device).
`
`Write file.
`
`258
`
`X/ Open CAE Specification (1992)
`
`Page 276 of 534
`
`
`
`SIVIB Transmission Analysis
`
`O82 Functions
`
`A.3
`
`OS/Z Functions
`
`The SMB requests generated from OS/2 redirectors will vary based on the protocol dialect
`negotiated. This variation is highlighted in the sequences below by listing the SMB request that
`will be sent if the extended 1.0 dialect was negotiated first followed by the SMB request for the
`extended 2.0 dialect.
`
`DosBufRe se t
`
`SIVIB sent
`
`Reason
`
`DosChDir
`
`SIVIB sent
`
`Reason
`
`DosClose
`
`SIVIB sent
`
`Reason
`
`DosDe le te
`
`SIVIB sent
`
`Reason
`
`DosDe VIO Ctl
`
`SIVIB sent
`
`Reason
`
`DosExecPgm
`
`SIVIB sent
`
`S1VlBf1ush.
`
`Flush file buffer.
`
`SIVlBchkpth.
`
`Change the current working directory.
`
`SIVlBc1ose, SIVlBwr1'tec1ose, SIVlBWrite.
`
`Close F]D.
`
`If the file I/ O is buffered, a DosClose will cause the data in the buffers to
`
`be flushed. This type of situation may cause an SIVlBwritec1ose or
`SIVlBwrite to be sent.
`
`S1VlBun11'nk.
`
`Delete a file.
`
`SIVlB1'oct1, SIVlBioct1s.
`
`Pass a device—specific I/ O control request to a driver.
`
`SIVlBopen, SIVlBread, SIVlBc1ose. SIVlBtrans2('IRANSACT2_OPEN) may be
`used for the open function instead of SIVlBopen for the extended 2.0
`dialect.
`
`Reason
`
`Start a programme as a child process.
`
`DosExecPgm makes use of OS/2’s standard file I/O functions.
`
`DosFile Locks
`
`SIVIB sent
`
`Reason
`
`SIVlB1ock SIVlB1ock1'ngX, SIVlBlockread, SIVlBun1ock, SIVlBWr1'teun1ock.
`
`Set or reset a byte lock range in an open file.
`
`An SIVlBwriteunlock is sent after unlocking bytes which were just written
`out. SIVlB1ockread is used to lock and then read ahead.
`
`Protocols for X/ Open PC Interworkingz SIVIB, Version 2
`
`259
`
`Page 277 of 534
`
`
`
`O82 Functions
`
`SIVIB Transmission Analysis
`
`DosFindClose
`
`SIVIB sent
`
`Reason
`
`DosFindFirst
`
`SIVIB sent
`
`Reason
`
`DosFindFirst2
`
`SIVIB sent
`
`Reason
`
`DosFindNe xt
`
`SIVIB sent
`
`Reason
`
`DosFindNotifyClose
`
`SIVIB sent
`
`Reason
`
`DosMkDir
`
`SIVIB sent
`
`Reason
`
`DosMove
`
`SIVIB sent
`
`Reason
`
`DosOpe n
`
`SIVIB sent
`
`Reason
`
`SIVlB1cl0se and possibly SIVlBfindnc10se.
`
`If change notification was
`Close an active directory search handle.
`involved, the SIVlBfindnc10se will be sent to cancel further notifications.
`
`SIVlBfl‘lrst or SIVlBtrans2('IRANSA CT2_F1NDF1RS'1) .
`
`Find the first file in a directory matching the search pattern.
`
`SIVlBtrans2('IRANSACT2_F1NDF1RS'1). An SIVlBfindc10se may follow.
`
`If no
`Find the first file in a directory matching the search pattern.
`additional searchs are desired the SA/lBfindc10se will be used to allow the
`server to free resources associated with the find.
`
`SIVlBfl‘lrst or SIVlBtrans2('IRANSA CT2_F1NDNEX'D .
`
`Get the next file from the search pattern.
`
`If this function is used on a sufficiently large directory it will eventually
`send an S1VlBfind request.
`
`SIVlBfindnc10se.
`
`To indicate to the LMX server that directory search requests are complete.
`
`SIVlBn1kd1'r SIVlBtrans2('IRANSACT2_IV1KD1R) .
`
`Create a new directory.
`
`SIVlBn1 V.
`
`Rename or move a file.
`
`SIVlB0penX, SIVlB0pen, SIVlBcreate, SIVlBreadX or
`SIVlBtrans2('IRANSACT2_ OPEN) .
`
`Open a device/file for I/O.
`
`D0sOpen may send an SIVlBreadX read ahead. D0sOpen will send an
`SIVlB0penX instead of an SA/lB0pen when in protected mode. SIVlB0pen has
`no capabilities for creating a file when opening, so D0sOpen may send an
`SIVlBcreate.
`
`260
`
`Page 278 of 534
`
`X/Open CAE Specification (1992)
`
`
`
`SMB Transmission Analysis
`
`O82 Functions
`
`DosQCurDir
`
`SIVIB sent
`
`Reason
`
`DosQFS Info
`
`SIVIB sent
`
`Reason
`
`DosQFile Info
`
`SIVIB sent
`
`Reason
`
`DosQFile Mode
`
`SIVIB sent
`
`Reason
`
`DosRe ad
`
`SIVIB sent
`
`Reason
`
`DosRe adAsync
`
`SIVIB sent
`
`Reason
`
`SlVlBchI(pth.
`
`Determine the current directory of a logical drive.
`
`SIVlBdskattr or SIVlBtrans2('IRANSACT2_QFS1NFO).
`
`Retrieve file system information data.
`
`SIVlBgeta ttrE or SIVlBtrans2('IRANSACT2_QF1LE1NFO).
`
`Retrieve a file information record.
`
`SIVlBgeta tr.
`
`Get a file’s attribute byte.
`
`SIVlBread, SIVlBrea dX, S1VlBreadbraW, S1VlBreadbmpX.
`
`Read characters from an F]D.
`
`SIVlBreadbrawis used to send a block of data which is larger than the data
`size which was negotiated.
`
`SIVlBread, SIVlBrea dX, S1VlBreadbraW, S1VlBreadbmpX.
`
`Read characters from an F]D asynchronously.
`
`Same behaviour as DosRead.
`
`DosRm Dir
`
`SIVIB sent
`
`SIVlBrmd1'r.
`
`Reason
`
`Delete a subdirectory.
`
`DosSe tFile Info
`
`SIVIB sent
`
`SIVlBsetattrE.
`
`Reason
`
`Change a file’s directory information.
`
`Protocols for X/ Open PC Interworkingz SNIB, Version 2
`
`261
`
`Page 279 of 534
`
`
`
`OS£ Functions
`
`SMB Transmission Analysis
`
`DosS e tFile Mode
`
`SIVIB sent
`
`SIVlBseta tr.
`
`Reason
`
`DosWrite
`
`SIVIB sent
`
`Reason
`
`DosWrite Async
`
`SIVIB sent
`
`Reason
`
`Change a fi1e’s attribute.
`
`SIVlBwrite, SIVlBwriteX, SIVlBwritebraw, SIVlBwritebmpX.
`
`Write characters to an F]D.
`
`SIVlBWr1'tebrawis used to send a block of data which is larger than the data
`size which was negotiated.
`
`SIVlBwrite, SIVlBWriteX, SIVlBwritebraw, SIVlBwritebmpX.
`
`Write characters to an F]D asynchronously.
`
`Same behaviour as DosWn'te.
`
`262
`
`X/Open CAE Specification (1992)
`
`Page 280 of 534
`
`
`
`
`
`Remote API Protocol
`
`LAN I\/Ianager Remote Administration Protocol
`
`B.2
`
`Remote API Protocol
`
`1. All remote API operations are done using the share name IPC$. The Sl\/[B redirector will
`automatically connect to that share if necessary in order to do a remote API call.
`
`2. All remote API operations are done using the Transaction SMB SMBtrans.
`
`3. The smb_name field of the Transaction SMB is always \PIPE\LANMAN. The server uses
`this to identify a remote API request. The SIVIB resembles a normal named pipe operation,
`which is also done using a Transaction SMB. However, the smb_setup[0] field, which
`would norm ally contain
`the desired named pipe operation,
`is
`ignored;
`the
`\PIPE\LANMAN name field is suificient to identify a remote API operation.
`
`The arguments for the remote API call are encapsulated in the Transaction request SMB; return
`values are encapsulated in the Transaction response SMB. In both the request and the response,
`all binary values are stored in little—endian order, least significant byte first. There are no pad
`bytes other than those explicitly specified in descriptor strings; therefore, items may be located
`at an arbitrary byte boundary — there are no alignment restrictions.
`
`The request and response Transaction SlVlBs contain a parameter section and a data section. The
`arguments for a remote API call are split into two parts, and placed in these sections of the
`request Transaction. The Transaction response message contains the results of the call, split
`between the parameter and data sections of the Transaction response. A number of fields in the
`Transaction Sl\/[B identify the size and location of these sections within the Sl\/IB, and also allow a
`single Transaction request or response to be split into several messages (refer to X/ Open CAE
`Specification, IPC Mechanisms for Sl\/IB).
`
`264
`
`X/Open CAE Specification (1992)
`
`Page 282 of 534
`
`
`
`LAN A/Ianager Remote Administration Protocol
`
`LMX Access Control Lists Mapping
`
`B.3
`
`LMX Access Control Lists Mapping
`
`Access control lists (ACLs) are used by LMX servers running in user—level security mode.
`Though the implementation of ACLs is outside the scope of the specification the following list is
`a set of possible access permissions, which is used by LAN Manager implementations.
`
`User—level security allows access permissions to be set for each shared resource (for example, file
`system subtree, individual file, spooler, device, etc.). Each shared resource has a list of users and
`groups, with the permissions allowed for each user or group on that resource.
`
`_ ACL Permissions
`R
`read
`
`W write
`X
`execute
`C
`create
`
`D
`
`A
`
`delete
`
`change attributes
`
`P
`
`change permissions
`
`Permission to read data from a resource and, by
`default, execute the resource.
`Permission to write data to the resource.
`Permission to execute the resource.
`Permission to create an instance of the resource
`
`(for example, a file); data can be written to the
`resource when creating it.
`Permission to delete the resource.
`
`Permission to modify the resources attributes
`(for example, the date and time a file was last
`modified).
`
`Permission to modify the permissions (read,
`write, create, execute and delete) assigned to a
`resource for a user, group or application.
`
`N
`Y
`
`deny access
`allow spuul rf.'E]l1E?’SI‘>'
`
`No permissions.
`
`Since the X/ Open CAE does not provide an access control list (ACL) mechanism, the usual CAE
`access control mechanisms should be used instead. Following the principle of least surprise, a
`mapping is defined for access mechanisms which cannot easily be provided under CAE systems.
`The CAE access control mechanisms are used to permit interoperability for applications which
`reside on both PCs and on CAE hosts.
`
`A mapping from (SMB) U]D and username/password supplied by the client to CAE User ID
`(uid) and Group ]D(s) (gid) is established by the SIVlBsesssetupX and will be maintained by the
`LMX server. The mapped—to CAE User ID and one or more Group ]Ds are used for all accesses
`on the CAE system in the usual manner.
`
`The differences between the functionality provided by ACLs and the access control mechanisms
`for LMX servers described above include:
`
`1. ACL permissions apply to shared resources. This includes file system directories as well as
`individual files. CAE permissions apply to individual files and directories but are not
`extended to subtrees.
`
`2. For each resource, ACL permissions can be listed for any number of individual users, for
`any number of groups, and for anyone else. A CAE file or directory specifies permissions
`for the owner, one group and everyone else.
`
`Protocols for X/Open PC Interworking: SIVIB, Version 2
`
`265
`
`Page 283 of 534
`
`
`
`LMX Access Control Lists A/lapping
`
`LAN A/Ianager Remote Administration Protocol
`
`The following table shows the mapping between the ACL permissions and CAE permissions:
`
`SMB Permissions
`R
`read
`W write
`
`X
`C
`D
`A
`P
`N
`Y
`
`execute
`create
`delete
`change attributes
`change permissions
`deny access
`allow spool requests
`
`Equivalent CAE Permission
`r
`read
`w write
`
`read (Note 1)
`r
`w write on parent dir
`w write on parent dir
`not supportable
`(Note 2)
`no permissions (Note 3)
`not supportable
`
`—
`
`Note s:
`
`1. Execute permission for LMX servers requires only read permission, as the client
`need only be able to read the file before it can execute it.
`
`2. Not an assignable access right. The owner of a file and users with appropriate
`privileges always have P access and cannot relinquish it; no other user can
`acquire P access.
`
`3. Not a specific right, but the absence of rights. Note that the privileged user
`always has all rights and can relinquish none of them.
`
`ACLs could be partially implemented for LMX servers by placing the required checks into the
`LMX server itself. The list would be used to further restrict (but not grant) access to files and
`directories beyond the restrictions imposed by the usual CAE access control mechanisms. A
`client may have access to a resource only if it does not conflict with CAE permissions and if it is
`specified in the ACL. There may be cases where the ACL indicates that a user should have
`access, but the CAE security would have to be circumvented to honour it. The access will be
`denied in accordance with the CAE in these cases. This permits access security to be maintained
`on both the server and client system equivalently; if a user local on the CAE system is denied
`access, access should be denied for the user on a client system as well.
`
`X/Open—compliant system implementations which support native ACLs as an enhancement
`may use that mechanism instead of the normal CAE access control mechanisms if desired, as
`long as the ACLs do not grant permission where the expected CAE access mechanisms would
`have denied it.
`
`266
`
`X/Open CAE Specification (1992)
`
`Page 284 of 534
`
`
`
`LAN A/Ianager Remote Administration Protocol
`
`Transaction API Request Format
`
`B.4
`
`Transaction API Re quest Form at
`
`B.4.1
`
`Paramete r Section
`
`The parameter section (smb_param) of the Transaction request contains the following:
`
`o API number: 16-bit integer
`
`- parameter descriptor string: null—terminated ASCII string
`
`o data descriptor string: null—terminated ASCII string
`
`o parms: subroutine arguments, as described by the parameter descriptor string
`
`- auxiliary data descriptor string: optional null—terminated ASCII string
`
`The API number identifies which API routine the SMB redirector wishes the LMX server to call
`
`on its behalf. A list of API numbers is given in Section B.8 on page 275.
`
`The parameter descriptor string describes the types of the arguments in the data section
`(smb_data), as given in the original call to the routine on the SMB redirector.
`
`The data descriptor string describes the form at of a data structure, or data buffer, which is sent
`to the API routine. The API routine on the SMB redirector is normally given a pointer to this
`buffer. Note that this descriptor string is also used by the server to determine the form at of the
`data buffer to be sent back from the API call.
`
`The parms field contains the actual subroutine arguments, as described by the parameter
`descriptor string.
`
`The auxiliary data descriptor string describes the format of a second, auxiliary data structure
`which is either sent to or received from the API routine, in addition to that defined by the data
`descriptor string. The data described by this descriptor string is located in the data section
`(smb_data) of SIVlBtrans,
`immediately following the data described by the primary data
`descriptor.
`
`B.4.2 Data Section
`
`The data section (smb_data) of the SIVlBtrans request contains the following:
`
`o the primary data buffer, as described by the data descriptor string in the parameter section
`
`- the auxiliary data buffer (optional), as described by the auxiliary data descriptor in the
`param eter section
`
`Protocols for X/Open PC Interworking: SMB, Version 2
`
`267
`
`Page 285 of 534
`
`
`
`Transaction API Response Format
`
`LAN A/Ianager Remote Administration Protocol
`
`B.5
`
`Transaction API Response Form at
`
`B.5.1
`
`Parameter Section
`
`The parameter section (smb_param) of the S1VlBtrans response contains the following:
`
`- Status: a 16-bit integer. This is the return status as if the requested LAN Manager API routine
`would be executed on the responder’s system. Zero norm ally indicates success.
`
`- Converter word: 16-bit integer, used by the requestor’s system to adjust the pointer in the
`data section. The use of this field is described below.
`
`o Parms: return parameters, as described by the parameter descriptor string in the request
`message. Only those parameters which are identified in the parameter descriptor string as
`being receive pointers (that is, which will be modified by the server) are actually returned
`here.
`
`B.5.2 Data Section
`
`The data section (smb_data) of the S1VlBtrans request contains:
`
`- the primary returned data bufl°er, as described by the data descriptor in the request message
`
`- the auxiliary data bufi°er (optional), as described by the auxiliary data descriptor in the
`request message
`
`268
`
`X/Open CAE Specification (1992)
`
`Page 286 of 534
`
`
`
`LAN Manager Remote Administration Protocol
`
`Descriptor Strings
`
`B.6
`
`Descriptor Strings
`
`A descriptor string is a null—terminated ASCII string. Descriptor string elements consist of a
`letter describing the type of the argument, possibly followed by a number
`(in ASCII
`representation), specifying the size of the argument. Each item in the descriptor string describes
`one data element.
`
`B.6.1
`
`De scrlptor String Type s
`
`The following describes the characters which may be encountered in a descriptor string, and the
`form at of the corresponding data described by the descriptor string.
`
`B
`
`Byte
`
`If followed by one or more digits (that is, B13) this refers to an array of bytes. One or more
`bytes will be located in the corresponding data area. Note that this type will not be found in
`the parameter descriptor string (that
`is,
`it will not be used to describe subroutine
`arguments), since single bytes cannot be pushed onto the stack by the SMB redirector.
`
`W 16-bit integer
`
`If followed by one or more numbers (that is, W4) this refers to an array of 16-bit integers.
`One or more 16-bit integers will be located in the corresponding parameter or data area.
`
`D 32-bit integer
`
`If followed by one or more numbers (that is, D3) this refers to an array of 32-bit integers.
`One or more 32-bit integers will be located in the corresponding parameter or data area.
`
`2
`
`Null—terminated ASCII string
`
`The corresponding parameter or data area contains a null—terminated ASCII string. This
`type has a different meaning when applied to returned data. (See below.)
`
`b
`
`Byte pointer
`
`The original argument list or data structure contained a pointer to one (that is, b) or more
`(that is, b8) bytes at this position. The bytes themselves are located in the corresponding
`parameter or data area. This type has a different meaning when applied to returned data.
`(See below.)
`
`w Word pointer
`
`The original argument list or data structure contained a pointer to one (that is, w) or more
`(that is, w2) 16-bit integers at this position. The integers themselves are located in the
`corresponding parameter or data area. This type has a different meaning when applied to
`returned data. (See below.)
`
`(:1 Dword pointer
`
`The original argument list or data structure contained a pointer to one (that is, cl) or more
`(that is, d3) 32-bit integers at this position. The integers themselves are located in the
`corresponding parameter or data area. This type has a different meaning when applied to
`returned data. (See below.)
`
`g
`
`Receive byte pointer
`
`The original argument list contained a pointer to one (that is, g) or more (that is, g8) bytes at
`this position, which are to receive return values from the API call. The Transaction request
`contains nothing at this position in the corresponding parameter or data area; the response
`message contains data.
`
`Protocols for X/Open PC Interworking: SMB, Version 2
`
`269
`
`Page 287 of 534
`
`
`
`Descriptor Strings
`
`LAN A/Ianager Remote Administration Protocol
`
`h
`
`Receive word pointer
`
`Contains data in the parameter section. The original argument list contained a pointer to
`one (that is, h) or more (that is, h2) 16-bit integers at this position, which are to receive
`return values from the API call. The Transaction request contains nothing at this position in
`the corresponding parameter or data area; the response message contains data in the
`param eter section.
`
`i
`
`Receive dword pointer
`
`The original argument list contained a pointer to one (that is, i) or more (that is, i3) 32-bit
`integers at
`this position, which are to receive return values from the API call. The
`Transaction request contains nothing at this position in the corresponding parameter or data
`area; the response message contains data in the parameter section.
`
`0 Null pointer
`
`The original argument list or data structure contained a null pointer at this position. There
`is nothing stored at this position in the corresponding parms or data area.
`
`s
`
`Send data buffer pointer
`
`The original argument list contained a pointer at this position to a data structure containing
`more data arguments to the API call. This item appears only in a parameter descriptor
`string. The form at of the secondary data structure is described in the data descriptor string
`(contained in the parameter section of the Transaction request message). The data itself is
`contained in the data section of the Transaction request message.
`
`T
`
`Length of send buffer
`
`The original argument list contained a 16-bit integer argument at this position which
`specified the length of the send buffer. This item appears only in a parameter descriptor
`string. No value is placed in the corresponding parameter area.
`
`r
`
`Receive data buffer pointer
`
`The original argument list contained a pointer at this position to a data structure which was
`to be filled in by the API call. This item appears only in a parameter descriptor string. The
`form at of the secondary data structure is described in the data descriptor string (contained
`in the parameter section of the Transaction request message). The data itself is contained in
`the data section of the Transaction response message.
`
`L
`
`Length of receive buffer
`
`The original argument list contained a 16-bit integer argument at this position which
`specified the length of the receive buffer. This item appears only in a parameter descriptor
`string. The corresponding parameter area contains a 16-bit integer specifying the length of
`the receive buffer.
`
`P
`
`Param eter num ber
`
`The corresponding parameter or data area contains a 16-bit short integer.
`
`e
`
`Entries read
`
`The original argument list contained a pointer to a 16-bit integer at this position, which is to
`receive the number of entries returned by the API call in the receive buifer. The Transaction
`request contains nothing at this position in the corresponding parameter or data area; the
`response message contains the numbers of entries returned in the receive data buifer.
`
`270
`
`X/Open CAE Specification (1992)
`
`Page 288 of 534
`
`
`
`LAN Manager Remote Administration Protocol
`
`Descriptor Strings
`
`N Number of auxiliary structures
`
`This field is only found in data descriptor strings. The presence of the field indicates that
`there will be auxiliary data sent (if found in a send data descriptor string), or received (if
`found in a receive data descriptor string). The corresponding data block contains a 16-bit
`integer specifying the number of auxiliary data structures to be sent (for a send data buffer),
`or which have been received (for a receive data buffer).
`
`K Unstructured data block
`
`This will norm ally be the only item in a descriptor string.
`Fill
`
`F
`
`The corresponding data area contains one (that is, F) or more (that is, F3) fill bytes at this
`position.
`
`B.6.2
`
`Pointe r Type s and Re turne d Data
`
`Lower—case letters are considered pointer types. These pointer types 2, b, w and d have a
`different meaning if they are used to describe returned information.
`In this case the pointers
`occur in a data descriptor string or auxiliary data descriptor string and describe data to be
`returned in the data section (smb_data) of the S1VlBtrans response message. In this case the item
`referred to by the pointer is not the array or string itself, but a 32-bit integer. The high—order 16-
`bits are to be ignored and the low—order 16—bits contain an offset. The offset subtracted by the
`converter word points to the array or string within the returned data buffer itself.
`
`The data descriptor describes one instance of the returned data structure. The response buffer
`may contain several of these data structures, each of which is a fixed size. Together, these make
`up the fixed—length portion of the returned data area. The returned data buffer may also contain
`data pointed to by the various pointer types described above. This data may contain strings, and
`is likely to be of variable length. The fixed—length data is always placed at the beginning of the
`returned data buffer; the placement of the variable—length data is up to the server.
`
`The responder must place variable—length data at the end of the data buffer and set the pointers
`accordingly. Since the total length of the data buffer is only known at the end of processing,
`there may be a gap between the fixed—length data and the variable—length data. To avoid
`sending this gap accross the network the responder may posi