diff options
Diffstat (limited to 'source3/namequery.doc')
-rw-r--r-- | source3/namequery.doc | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/source3/namequery.doc b/source3/namequery.doc new file mode 100644 index 0000000000..77a75714e5 --- /dev/null +++ b/source3/namequery.doc @@ -0,0 +1,56 @@ +this module contains non-threaded versions of name status and name +query functions. if a multi-threaded nmbd was to be written, these +functions would be the starting point. + +at the moment, the expected response queueing system is used to +replace these functions without needing to multi-thread nmbd. + +these functions are used in smbclient and nmblookup at present to +avoid having the vast quantities of complex and unused code needed +to support even a simple name query (or providing stubs for the +unused side of these functions). + +there is a down-side to these functions, which is all microsoft's +fault. microsoft machines always always reply to queries on the +priveleged ports, rather than following the usual tcp/ip mechanism +of replying on the client's port (the exception to this i am led +to believe is windows nt 3.50). + +as a result of this, in order to receive a response to a name +query from a microsoft machine, we must be able to listen on +the priveleged netbios name server ports. this is simply not +possible with some versions of unix, unless you have root access. + +it is also not possible if you run smbclient or nmblookup on an +interface that already has been claimed by the netbios name server +daemon nmbd. + +all in all, i wish that microsoft would fix this. + +a solution does exist: nmbd _does_ actually reply on the client's +port, so if smbclient and nmblookup were to use nmbd as a proxy +forwarder of queries (or to use samba's WINS capabilities) then +a query could be made without needing access to the priveleged +ports. in order to do this properly, samba must implement secured +netbios name server functionality (see rfc1001.txt 15.1.6). + + +/************************************************************************* + name_query() + *************************************************************************/ + + + +/************************************************************************* + name_status() + *************************************************************************/ + + + +/************************************************************************* + _interpret_node_status() + *************************************************************************/ + + +this is a older version of interpret_node_status(). + |