1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-14 01:57:53 +03:00

368 Commits

Author SHA1 Message Date
Christopher R. Hertel
5b975d3a9c Same as nmbd.c. These now test wins_srv_count() instead of lp_wins_server
to determine whether the 'wins server' parameter is set.
-
Christopher R. Hertel
0777ebc04b Instead of checking lp_wins_server() to see if a WINS server was specified,
nmbd now calls wins_srv_count().  This returns the number of WINS servers
specified in the 'wins server' parameter.  The return value will be zero if
'wins server' is not specified.

Quick change to make room for WINS failover.
-
Tim Potter
efcbcfaa48 Process the SAM/UAS change notification message. -
Tim Potter
b8fe147430 Only register the #1b name if we are ROLE_DOMAIN_PDC rather than
lp_domain_master()
-
Jeremy Allison
c13b77eb35 Fixes for varargs problems with std c.
Fix from Rick Lake <rwlake@anp.nl> for QNX.
Jeremy.
-
Jeremy Allison
f591ca9f25 Fixes from Jens-Uwe.Walther@force.de to make the -l option behave
consistently.
Jeremy.
-
Christopher R. Hertel
bbf14e2d4e Andrew B and I were commiting the same fix at the same time in different
trees.  This change simply brings HEAD and 2.2 in line with one another.
Otherwise the code would be differnt but the meaning would be the same,
which is awkward.
Chris 'fifty-seven commits per line changed' Hertel -)-----
-
Andrew Bartlett
cad6f53433 Fix tree breakage, the last change was entirly non-portable, and we already
have this nice variable to do exactly this...
-
Christopher R. Hertel
22ea0770d8 Fix from John Malmberg. When I added the additional information to the
debug block that reports multiple query responses I did not notice that
the local answer_ip variable was only selectively set.

Chris -)-----
-
Andrew Tridgell
c41fc06376 strchr and strrchr are macros when compiling with optimisation in gcc, so we can't redefine them. damn. -
Andrew Tridgell
debb471267 The big character set handling changeover!
This commit gets rid of all our old codepage handling and replaces it with
iconv. All internal strings in Samba are now in "unix" charset, which may
be multi-byte. See internals.doc and my posting to samba-technical for
a more complete explanation.
-
Simo Sorce
1aef522452 - sorry, forgot to test a pointer -
Simo Sorce
db36ed1d80 "netbios aliases" and "interfaces" options change from P_STRING to P_LIST -
Christopher R. Hertel
8f2f09af0a Added info to some of the debug messages to get a better handle on a problem
people are reporting regarding multiple responses to queries on <1D> names.

There should only ever be one LMB but some users are seeing multiple replies
to queries for the LMB name.  This is probably due to nodes on the LAN that
have NetBIOS over NetBEUI and/or IPX enabled.  Previously, the debug message
did not include the IP address associated with the name.  It *did* include
the source address of the packet, but in the examples I've seen all of these
were the same, eg:

[2000/06/22 11:58:25, 0] nmbd/nmbd_namequery.c:query_name_response(93)
query_name_response: Multiple (2) responses received for a query on subnet
129.130.10.136 for name NT.CIS.KSU.EDU<1d>. This response was from IP
129.130.10.24
 [2000/06/22 11:58:25, 0] nmbd/nmbd_namequery.c:query_name_response(93)
query_name_response: Multiple (3) responses received for a query on subnet
129.130.10.136 for name NT.CIS.KSU.EDU<1d>. This response was from IP
129.130.10.24
 [2000/06/22 11:58:25, 0] nmbd/nmbd_namequery.c:query_name_response(93)
query_name_response: Multiple (4) responses received for a query on subnet
129.130.10.136 for name NT.CIS.KSU.EDU<1d>. This response was from IP
129.130.10.24
[2000/06/22 11:58:25, 0] nmbd/nmbd_namequery.c:query_name_response(93)
query_name_response: Multiple (5) responses received for a query on subnet
129.130.10.136 for name NT.CIS.KSU.EDU<1d>. This response was from IP
129.130.10.24

Note that all of the above are reported as having come from 129.130.10.24.
This should never happen.  If 129.130.10.24 is a WINS server it should
send a Negative Name Query Response for a <1D> name query (wierd but true).

So, are all of the above coming from different systems, all of which
think are the LMB?  Are they all coming from one system that is, for some
strange reason, replying five times to the same query?

Anyway, I needed more info so I've changed the debug messages.

Chris -)-----
-
Andrew Tridgell
e2ecff419f fixed usage of socklen_t and also tidied up SIG_ATOMIC_T, using a typedef instead of a define -
Jeremy Allison
d57feb2c85 Mismatched format and args.
Jeremy.
-
Jeremy Allison
53f35a71c6 More paranioa fixes against nmbd lengths.
Jeremy.
-
Jeremy Allison
8bd27845f0 Fix bad length in dgram.
Jeremy.
-
Jeremy Allison
eacb96396d Patch for nmbd core dump in printing debug packets. No length check.
Jeremy.
-
Jeremy Allison
fc76681812 Merge of Andrew's changes in 2.2.
Jeremy.
-
Jeremy Allison
e7d59d6de8 As Andrew suggested, make smbrun return a fd for a deleted file which can then
be read.
Jeremy.
-
Jeremy Allison
94747b4639 Got "medieval on our ass" about adding the -1 to slprintf.
Jeremy.
-
Jeremy Allison
2f658691e4 Fix insure-found parameter size missmatch.
Jeremy.
-
Andrew Tridgell
978980050e added option "enhanced browsing"
this allows users to disable the cross-subnet browse extensions that I
added to Samba a couple of years ago. This may be useful for getting
rid of empty workgroups.
-
Jeremy Allison
28a0bc5f57 AS/U on a sparc now joins and authenticates against a Samba PDC !
Jeremy.
-
Jeremy Allison
0a84839dc0 Fixed double fclose() call (I love insure :-).
Jeremy.
-
Herb Lewis
01dfd59712 samba/source/nmbd/nmbd.c change remote_machine name to nmbd instead
of nmb so we write to same log file that
				was originally created as log.nmbd
samba/source/smbd/server.c	change remote_machine name to smbd instead
				of smb so we write to same log file that
				was originally created as log.smbd
samba/source/lib/interface.c	allow binding to all interface IP addresses
				even if on same subnet. This allows you to
				specify which IP's you want in interfaces
				line and use bind interfaces only
-
David O'Neill
b4c98196fc Changes from APPLIANCE_HEAD:
source/smbd/server.c
    source/nmbd/nmbd.c
        - Fixed a very subtle bug with signals. Seems that POSIX requires
          that the signal mask be inhereted. So, if you happen to kick off
          smbd/nmbd from code that has the mask set on SIGUSR1, you lose
          messages.
-
Richard Sharpe
7f862e387f I need a callback arg for cli_NetServerEnum and cli_RNetShareEnum, so I had
to modifiy any routine that calls it to pass NULL and so forth.

Should have no impact. It compiles OK.
-
Richard Sharpe
05e2dd5e85 We only want to mark mailslot packets as loopback packets if they are to
the DGRAM_PORT, since we want to actually send those to other ports.

They might be for the client library running on the Samba server!
-
Richard Sharpe
46a3a56ecf Make the use of generate_name_trn_id conform to the usage elsewhere ... -
Richard Sharpe
fb5798e1d9 Comment out unused generate_name_trn_id ... -
Jeremy Allison
245907f2af John Reillys fix for de-registering broadcast names (NT doesn't do this).
Jeremy.
-
Jeremy Allison
580e2e044c Ignore SIGUSR2. Terminate nmbd if we have no interfaces.
Jeremy.
-
Jeremy Allison
279d0ec656 Ensure browse.dat is written and read in UNIX character set format.
Jeremy.
-
Andrew Tridgell
f1c49ca7ce - changed the msg_type to be an int instead of an enum so that it is
easier to add new message types to messages.h without breaking old
binaries

- added a MSG_FORCE_ELECTION message to force nmbd to hold an election
-
Andrew Tridgell
6a503f95b1 debug messages now work for nmbd -
Andrew Tridgell
2a34ee95f3 the first cut of the internal messaging system.
The motivation for this system is to replace the UDP message for
oplocks, but this commit only does the "set debug level" message.
-
Jeremy Allison
9890740121 Fix for bind interfaces only sometimes picking the wrong IP address
for a name query. From Steve Langasek <vorlon@netexpress.net>.
Jeremy.
-
Christopher R. Hertel
73aa188320 Instead of handing back a string (which might be a DNS name or an IP
string), the wins_srv module now hands back a struct in_addr when it's
called.  It caches the IP address once it has been looked up.  The IP
is cleared (and must be looked up again) if the 'wins server' parameter
is reread, or if the node is marked 'dead'.  A dead node will not be
re-tried for 10 minutes (per a #define in wins_srv.c).

As it was, the code was reading the WINS server name or IP directly from
lp_wins_server.  That's okay, except that if the value was expressed as
a name, then a DNS lookup would be done every time the client wanted to
talk to the server.

I still need to work out the implications of failover regarding the
'unicast subnet' list.

Chris -)-----
-
Christopher R. Hertel
cc08bdc74f First cut toward adding WINS server failover.
*Note: failover doesn't actually work yet!*  It's just that the code I'm
adding provides all of the pieces necessary.

I do have one big question.  Something that I'll have to ask Jeremy, I'm
thinkin'.  In nmbd/nmbd_subnetdb.c the IP of the WINS server is used to
set up the Unicast subnet.

...so what happens if the WINS server changes?

My guess is either:
  a) nothing.
  b) I'd have to change the unicast subnet entry whenever the WINS server
     changes.

Urq.

BTW, the lp_wins_server() function no longer returns the WINS server name
or IP.  It returns the list of WINS servers entered in smb.conf.  To get
the currently 'live' WINS server, use the wins_srv() function.

Fun, eh?

Chris -)-----
-
Andrew Tridgell
b28cc4163b Linux kernel oplocks now seem to work, but need a _lot_ of testing
I had to modify sys_select() to not loop on EINTR. I added a wrapper
called sys_select_intr() which gives the old behaviour.
-
Andrew Tridgell
d178c00aae more merging
it is now at the stage that winbindd can compile in the head branch,
but not link
-
Jeremy Allison
158d9cada8 Fixed wild pointer diff found by insure.
Jeremy.
-
Jeremy Allison
148628b616 Added sys_fork() and sys_getpid() functions to stop the overhead
of doing a system call every time we want to just get our pid.
Jeremy.
-
Andrew Tridgell
6faa3c23ae don't qsort a list less than 2 entries -
Andrew Tridgell
a559a8066f fixed a parameter bug found by insure -
Jeremy Allison
ab0ecc39d6 This is a *big* checkin that may break some things, but implements the
new open mechanism Andrew & I discussed.

config.sub:
configure: Included the QNX patch.

include/vfs.h:
smbd/vfs-wrap.c:
smbd/vfs.c: Added ftruncate vfs call (needed).

Note that we will also need locking calls in the vfs (to be added).

lib/util_unistr.c:
nmbd/nmbd_processlogon.c: Fix for NT domain logons causing nmbd to core dump.
                          Also fix for sidsize DOS bug.

locking/locking.c: Check value of ret before using it for memdup.

printing/printing.c: Convert print_fsp_open to return an allocated fsp.

rpc_server/srv_lsa.c: Fix for NT domain logons.

I have removed all use of lp_share_modes() from the code (although I
left the parameter in the table for backwards compatibility). It no longer makes
sense for this to exist.

smbd/close.c: Removed lp_share_modes().
smbd/fileio.c: Fixed parameters to unlock_share_entry call in panic code.
smbd/files.c: Correctly set the unix_ERR_code to ERRnofids on fsp allocation fail.

smbd/nttrans.c:
smbd/reply.c:
smbd/trans2.c: Changed all occurrences of open_file_shared/open_directory/
               open_file_stat to return an fsp from the call.

smbd/open.c: Changed all occurrences of open_file_shared/open_directory/
             open_file_stat to return an fsp from the call.

In addition I have fixed a long standing race condition in the deny mode
processing w.r.t. two smbd's creating a file. Andrew, please note that
your original idea of using open with O_EXCL in this case would not work
(I went over the races very carefully) and so we must re-check deny modes
*after* the open() call returns. This is because there is a race between
the open with O_EXCL and the lock of the share mode entry. Imagine the
case where the first smbd does the open with O_EXCL and a deny mode of DENY_ALL,
but is pre-empted before it locks the share modes and creates the deny
mode entry for DENY_ALL. A second smbd could then come in with O_RDONLY
and a deny mode of DENY_NONE and the two opens would be allowed.

The *only* way to fix this race is to lock the share modes after the
open and then do the deny mode checks *after* this lock in the case
where the file did not originally exist.

This code will need extensive testing but seems to initially work.

Jeremy.
-
Andrew Tridgell
36fb5bc72f updates from the TNG branch -
Luke Leighton
5086e6425f logic for domainsidsize is if size is zero, there's no sid, so don't
advance over it and 4-byte align.

this _used_ to be "regardless of domainsidsize, advance by domainsidsize+3"
which is wrong.
-