From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=DKIM_SIGNED,DKIM_VALID autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 13433 invoked from network); 28 Sep 2023 07:18:13 -0000 Received: from 9front.inri.net (168.235.81.73) by inbox.vuxu.org with ESMTPUTF8; 28 Sep 2023 07:18:13 -0000 Received: from pb-smtp20.pobox.com ([173.228.157.52]) by 9front; Thu Sep 28 03:14:26 -0400 2023 Received: from pb-smtp20.pobox.com (unknown [127.0.0.1]) by pb-smtp20.pobox.com (Postfix) with ESMTP id C16BB242A3 for <9front@9front.org>; Thu, 28 Sep 2023 03:14:25 -0400 (EDT) (envelope-from unobe@cpan.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=pobox.com; h=message-id :to:subject:date:from:in-reply-to:mime-version:content-type :content-transfer-encoding; s=sasl; bh=hWpmSRai3KelDjkRnHzfnxb6v bn0nElMX//rOnsDMfk=; b=LbU+Bf2ET6NM2ta1zYwV7ERXWxQACERUEU8ezrnLw 43KMadtWpYDWs1jHqYyHdQwIACXAh/ZqGlo0lBt+HaquJHwy753/FCkbVV11UnWA dCpss/CBLdHxJ+VcIeQrPINsV5jb79n92fQEcEbGDRy6VHjeiPS9XgSA/F/zFArR TA= Received: from pb-smtp20.sea.icgroup.com (unknown [127.0.0.1]) by pb-smtp20.pobox.com (Postfix) with ESMTP id B9F57242A2 for <9front@9front.org>; Thu, 28 Sep 2023 03:14:25 -0400 (EDT) (envelope-from unobe@cpan.org) Received: from strider.localdomain (unknown [75.237.252.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pb-smtp20.pobox.com (Postfix) with ESMTPSA id 004362429D for <9front@9front.org>; Thu, 28 Sep 2023 03:14:21 -0400 (EDT) (envelope-from unobe@cpan.org) Message-ID: <8FA83A0AE7B16EFD59606402877A4FCD@smtp.pobox.com> To: 9front@9front.org Date: Thu, 28 Sep 2023 00:14:19 -0700 From: unobe@cpan.org In-Reply-To: <338BDD1F7133D9F883631FC57D34393C@smtp.pobox.com> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Pobox-Relay-ID: A5C32D84-5DCE-11EE-A598-F515D2CDFF5E-09620299!pb-smtp20.pobox.com List-ID: <9front.9front.org> List-Help: X-Glyph: ➈ X-Bullshit: GPU singleton realtime controller Subject: Re: [9front] [PATCH 2/6] cifsd: clarify SMBv1 is supported, not SMB 2/3. Reply-To: 9front@9front.org Precedence: bulk Desktop Mac (OS X) can connect to cifsd just fine, but iPhones (iOS) cannot. My hope is that the documentation will clarify what is supported for someone down the road, and the logging will help diagnose situations where a client is connecting with an unsupported version. Quoth Romano : > > SMB 2/3 is not supported by cifsd, so clarify that in the man page and update teh code to mention in the log file if SMB2/3 is attempted. Also, while in the code, fix a typo, add a few more commands to the explicitly unsupported list, and align the return value for unsupported calls to the SMBv1 spec. > --- > diff 755ac2c11ce134f76d83a2a42edb07a6304d1de8 f48ee862768b677d0b0fca82a7efecd0b4fb3b06 > --- a/sys/man/8/cifsd > +++ b/sys/man/8/cifsd > @@ -1,6 +1,6 @@ > .TH CIFSD 8 > .SH NAME > -cifsd \- CIFS/SMB network daemon > +cifsd \- CIFS/SMBv1 network daemon > .SH SYNOPSIS > .PP > .B ip/cifsd > @@ -25,6 +25,7 @@ > exports filesystems to > .SM CIFS or > .SM SMB > +version 1 > clients like Microsoft \(tm Windows. > .PP > It is normally started by the network listen process via the > --- a/sys/src/cmd/ip/cifsd/dat.h > +++ b/sys/src/cmd/ip/cifsd/dat.h > @@ -139,9 +139,11 @@ > STATUS_SMB_BAD_TID = 0x00050002, > STATUS_SMB_BAD_FID = 0x00060001, > STATUS_OS2_INVALID_ACCESS = 0x000C0001, > + STATUS_SMB_BAD_COMMAND = 0x00160002, > STATUS_SMB_BAD_UID = 0x005B0002, > STATUS_OS2_INVALID_LEVEL = 0x007C0001, > STATUS_NO_MORE_FILES = 0x80000006, > + STATUS_NOT_IMPLEMENTED = 0xC0000002, > STATUS_INVALID_HANDLE = 0xC0000008, > STATUS_NO_SUCH_FILE = 0xC000000F, > STATUS_ACCESS_DENIED = 0xC0000022, > --- a/sys/src/cmd/ip/cifsd/main.c > +++ b/sys/src/cmd/ip/cifsd/main.c > @@ -7,6 +7,7 @@ > LENHDR = 4, > > MAGIC = 0xFF | ('S'<<8) | ('M'<<16) | ('B'<<24), > + MAGIC_SMB2 = 0xFE | ('S'<<8) | ('M'<<16) | ('B'<<24), > > SMB_FLAGS_CASE_INSENSITIVE = 0x08, > SMB_FLAGS_CANONICALIZED_PATHS = 0x10, > @@ -88,8 +89,8 @@ > exits("botch"); > return; > } > - if(magic != MAGIC){ > - logit("bad smb magic"); > + if(magic != MAGIC) { > + logit("bad smb magic [%x] %s", magic, (magic == MAGIC_SMB2 ? "(SMB2/3 not supported)" : "")); > exits("botch"); > return; > } > --- a/sys/src/cmd/ip/cifsd/smb.c > +++ b/sys/src/cmd/ip/cifsd/smb.c > @@ -135,7 +135,7 @@ > free(mcr); > } > remoteuser = getuser(); > - logit("auth successfull"); > + logit("auth successful"); > break; > } > sessionuid = (namehash(getuser()) & 0x7FFF) | 1; > @@ -794,6 +794,12 @@ > } > > void > +smbstatusnotimplemented(Req *r, uchar *, uchar *, uchar *) > +{ > + r->respond(r, STATUS_NOT_IMPLEMENTED); > +} > + > +void > smbecho(Req *r, uchar *h, uchar *p, uchar *e) > { > uchar *t, *d, *de; > @@ -1711,7 +1717,7 @@ > void > smbnoandxcommand(Req *r, uchar *, uchar *, uchar *) > { > - r->respond(r, (r->cmd == 0xFF) ? STATUS_INVALID_SMB : 0); > + r->respond(r, (r->cmd == 0xFF) ? STATUS_SMB_BAD_COMMAND : 0); > } > > struct { > @@ -1731,6 +1737,10 @@ > [0x23] { "SMB_COM_QUERY_INFORMATION2", smbqueryinformation2 }, > [0x24] { "SMB_COM_LOCKING_ANDX", smblockingandx }, > [0x25] { "SMB_COM_TRANSACTION", smbtransaction }, > + [0x27] { "SMB_COM_IOCTL", smbstatusnotimplemented }, > + [0x28] { "SMB_COM_IOCTL_SECONDARY", smbstatusnotimplemented }, > + [0x29] { "SMB_COM_COPY", smbstatusnotimplemented }, > + [0x2a] { "SMB_COM_MOVE", smbstatusnotimplemented }, > [0x2b] { "SMB_COM_ECHO", smbecho }, > [0x2d] { "SMB_COM_OPEN_ANDX", smbopenandx }, > [0x2e] { "SMB_COM_READ_ANDX", smbreadandx }, > @@ -1737,6 +1747,7 @@ > [0x2f] { "SMB_COM_WRITE_ANDX", smbwriteandx }, > [0x32] { "SMB_COM_TRANSACTION2", smbtransaction }, > [0x34] { "SMB_COM_FIND_CLOSE2", smbcloseflush }, > + [0x40] { "SMB_IOS", smbnoandxcommand }, > [0x71] { "SMB_COM_DISCONNECT_TREE", smbdisconnecttree }, > [0x72] { "SMB_COM_NEGOTIATE", smbnegotiate }, > [0x73] { "SMB_COM_SESSION_SETUP_ANX", smbsessionsetupandx }, > @@ -1750,6 +1761,7 @@ > void > smbcmd(Req *r, int cmd, uchar *h, uchar *p, uchar *e) > { > + logit("processing [%.2x] command", cmd); > if((cmd >= nelem(optab)) || (optab[cmd].fun == nil)){ > logit("[%.2x] command not implemented", cmd); > r->respond(r, STATUS_NOT_SUPPORTED); > >