[jcifs] no name with type 0x00 with no scope for host

Christopher R. Hertel crh at ubiqx.org
Wed Feb 20 12:53:08 EST 2002


"Allen, Michael B (RSCH)" wrote:
:
> > Use "*\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" for NODE STATUS REQUESTS.
> >
>         Same thing. The 16th byte is <00>.

But you are not sending a name.  You're sending the wildcard.  If I do:

$ nmblookup -S foo

Then the first thing nmblookup does is send a name query for

  FOO\20\20\20\20\20\20\20\20\20\20\20\20\0

If it gets a response, the -S option will cause it to send a follow-up node
query for the same name.  Yes, it ends with a <00>, but it still starts with
"FOO".  We know this will work, however, because the positive name query
response tells us that the name in question exists on the other node.

If you don't know what names are on the other node, then use a wildcard
query.  Yes, it ends with a <00> but then entire name is different.

Note that Microsoft doesn't even bother to decode the names when doing
comparisons.  Windows compares the level-1 encoded name itself.  So, it's
looking for CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.  That's a wildcard name to
Windows.

> >   It's a
> > wierd name, I know, but it's actually in the RFCs.  It's an asterisk
> > followed by 15 nul bytes, then encoded as usual.  It's the wildcard name.
> > It is illegal to register it, but all NBT nodes are supposed to respond to
> > it (within the proper scope ID, of course).  It is also the precursor to the
> > "*SMBSERVER" name.
> >
>         What is, node status?

No, the wildcard name (just '*' followed by 15 nuls) is the precursor to
*SMBSERVER.


> Actually at this point sending the node status *after*
> SMBSERVER is a little better I think. The node status is a last resort.

Depending upon what you're doing.  I you are trying to find a called name in
order to set up an SMB session, then it all depends upon whether you think
there are more Samba, Win/NT4, W2K, and W/XP systems out there than W/9x and
W/Me.  Probably a good guess, so *SMBSERVER should come before adapter
status.

All I'm saying about Adapter Status is that you should use the wildcard name
unless you *know* that a specific name (eg., FOO<00>) exists on the remote
node.  From the original problem report, it looked as though the
<machine><00> name was being used.  On XP, which doesn't register
<machine><00> by default, you really do need to use the wildcard name.

Chris -)-----

-- 
Samba Team -- http://www.samba.org/     -)-----   Christopher R. Hertel
jCIFS Team -- http://jcifs.samba.org/   -)-----   ubiqx development, uninq.
ubiqx Team -- http://www.ubiqx.org/     -)-----   crh at ubiqx.mn.org




More information about the jcifs mailing list