[jcifs] Re: ACLs - SmbException: Incorrect function

Thomas Bley thomas.bley at simple-groupware.de
Wed Jun 27 01:31:29 GMT 2007


I have the same problem. Here is what I found out so far:
When Windows explorer is the client, it starts the DCERPC with the 
command "Write AndX" (0x2f).
When JCIFS is the client, it starts DCERPC with "TransactNmPipe" (0x0026).
Windows servers and Samba understand the TransactNmPipe very well, but 
for some reason NetApp doesn't.
My tests were made with a NetApp FAS3050; OS-Version Ontap 7.1.1.

If the error is happening, jCIFS falls back to NetShareEnum methods 
which resolve share names, but without unicode characters and only up to 
12 characters in length.
Maybe it is an older method which requires some compatibility setting 
enabled in the NetApp machine (maybe sth. like enable WindowsNT 
compatibility, enable namedpipe rpcs, etc.). Do you have any idea or 
maybe you can even ask the NetApp support for this ?
(if required, I can provide some Ethereal traces)


Jake Goulding wrote:
> It is a NetApp SAN, and it is configured with local groups, which 
> would lead me to think that this type of function would be 
> implemented. For what it's worth, a user from the Windows Explorer can 
> right-click and see resolved local groups.
> Michael B Allen wrote:
>> Hey Jake,
>> That looks like the server doesn't understand DCERPC. Like Novell
>> maybe. But I would have to see a trace to confirm.
>> Mike
>> On Mon, 25 Jun 2007 09:43:17 -0400
>> Jake Goulding <goulding at vivisimo.com> wrote:
>>> Trying to retrieve some ACLs for a file, I get the following 
>>> Exception. Does this ring a bell for anyone? I'm working on getting 
>>> more information about the particular setup being used, but I 
>>> figured I could check here first.
>>> com.vivisimo.connector.SMBConnector$SMBException: Could not get the ACL
>>>     at 
>>> com.vivisimo.connector.SMBConnector.setACL(SMBConnector.java:315)
>>>     at 
>>> com.vivisimo.connector.SMBConnector.processFile(SMBConnector.java:293)
>>>     at 
>>> com.vivisimo.connector.SMBConnector.processNode(SMBConnector.java:102)
>>>     at 
>>> com.vivisimo.connector.ConnectorWorker.run(ConnectorWorker.java:502)
>>> Caused by: jcifs.smb.SmbException: Incorrect function.
>>>     at jcifs.smb.SmbTransport.checkStatus(SmbTransport.java:514)
>>>     at jcifs.smb.SmbTransport.send(SmbTransport.java:591)
>>>     at jcifs.smb.SmbSession.send(SmbSession.java:239)
>>>     at jcifs.smb.SmbTree.send(SmbTree.java:109)
>>>     at jcifs.smb.SmbFile.send(SmbFile.java:693)
>>>     at
>>> jcifs.smb.TransactNamedPipeOutputStream.write(TransactNamedPipeOutputStream.java:67) 
>>>     at 
>>> jcifs.dcerpc.DcerpcPipeHandle.doSendFragment(DcerpcPipeHandle.java:50)
>>>     at jcifs.dcerpc.DcerpcHandle.sendrecv(DcerpcHandle.java:162)
>>>     at jcifs.dcerpc.DcerpcHandle.sendrecv(DcerpcHandle.java:129)
>>>     at 
>>> jcifs.dcerpc.msrpc.LsaPolicyHandle.<init>(LsaPolicyHandle.java:32)
>>>     at jcifs.smb.SID.resolveSids0(SID.java:119)
>>>     at jcifs.smb.SID.resolveSids(SID.java:162)
>>>     at jcifs.smb.SmbFile.processAces(SmbFile.java:2626)
>>>     at jcifs.smb.SmbFile.getSecurity(SmbFile.java:2660)
>>>     at 
>>> com.vivisimo.connector.SMBConnector.setACL(SMBConnector.java:313)
>>>     ... 3 more

More information about the jcifs mailing list