mirror of
https://github.com/samba-team/samba.git
synced 2024-12-27 03:21:53 +03:00
e5893bdfbe
Luke, can you take special note of the bug fixes to nmbd so you can
propogate them to your new code.
- rewrote the code that used to use fromhost(). We now call
gethostbyaddr() only if necessary and a maximum of once per
connection. Calling gethostbyaddr() causes problems on some systems so
avoiding it if possible is a good thing :-)
- added the "fake oplocks" option. See the docs in smb.conf(5) and
Speed.txt
- fixed a serious bug in nmbd where it would try a DNS lookup on
FIND_SELF queries. This caused a lot of unnecessary (and incorrect)
DNS lookups to happen. FIND_SELF queries should only go to the
internal name tables.
- don't set FIND_SELF for name queries if we are a wins proxy, as we
are supposed to be answering queries for other hosts.
- fixed a bug in nmbd which had "if (search | FIND_LOCAL)" instead of
"if (search & FIND_LOCAL)". Luke, this was in nameservreply.c
- the above 3 bugs together meant that DNS queries were being cached,
but the cache wasn't being used, so every query was going to DNS, no
wonder nmbd has been chewing so much CPU time! Another side effect was
that queries on names in lmhosts weren't being answered for bcast
queries with "wins proxy" set.
- ignore the maxxmit for seconday session setups (see CIFS spec)
- close user opened files in a uLogoffX for user level security (see
CIFS spec)
- added uid into the files struct to support the above change
(This used to be commit ea472b7217
)
113 lines
2.7 KiB
C
113 lines
2.7 KiB
C
/*
|
|
Unix SMB/Netbios implementation.
|
|
Version 1.9.
|
|
Test validity of smb.conf
|
|
Copyright (C) Karl Auer 1993, 1994
|
|
|
|
Extensively modified by Andrew Tridgell, 1995
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
*/
|
|
|
|
/*
|
|
* Testbed for loadparm.c/params.c
|
|
*
|
|
* This module simply loads a specified configuration file and
|
|
* if successful, dumps it's contents to stdout. Note that the
|
|
* operation is performed with DEBUGLEVEL at 3.
|
|
*
|
|
* Useful for a quick 'syntax check' of a configuration file.
|
|
*
|
|
*/
|
|
|
|
#include "includes.h"
|
|
#include "smb.h"
|
|
|
|
/* these live in util.c */
|
|
extern FILE *dbf;
|
|
extern int DEBUGLEVEL;
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
pstring configfile;
|
|
int s;
|
|
|
|
TimeInit();
|
|
|
|
setup_logging(argv[0],True);
|
|
|
|
charset_initialise();
|
|
|
|
if (argc < 2)
|
|
strcpy(configfile,CONFIGFILE);
|
|
else
|
|
strcpy(configfile,argv[1]);
|
|
|
|
dbf = stdout;
|
|
DEBUGLEVEL = 2;
|
|
|
|
printf("Load smb config files from %s\n",configfile);
|
|
|
|
if (!lp_load(configfile,False))
|
|
{
|
|
printf("Error loading services.\n");
|
|
return(1);
|
|
}
|
|
|
|
|
|
printf("Loaded services file OK.\n");
|
|
|
|
for (s=0;s<1000;s++)
|
|
if (VALID_SNUM(s))
|
|
if (strlen(lp_servicename(s)) > 8) {
|
|
printf("WARNING: You have some share names that are longer than 8 chars\n");
|
|
printf("These may give errors while browsing or may not be accessible\nto some older clients\n");
|
|
break;
|
|
}
|
|
|
|
if (argc < 4)
|
|
{
|
|
printf("Press enter to see a dump of your service definitions\n");
|
|
fflush(stdout);
|
|
getc(stdin);
|
|
lp_dump();
|
|
}
|
|
|
|
if (argc == 4)
|
|
{
|
|
char *cname = argv[2];
|
|
char *caddr = argv[3];
|
|
|
|
/* this is totally ugly, a real `quick' hack */
|
|
for (s=0;s<1000;s++)
|
|
if (VALID_SNUM(s))
|
|
{
|
|
if (allow_access(lp_hostsdeny(s),lp_hostsallow(s),cname,caddr))
|
|
{
|
|
printf("Allow connection from %s (%s) to %s\n",
|
|
cname,caddr,lp_servicename(s));
|
|
}
|
|
else
|
|
{
|
|
printf("Deny connection from %s (%s) to %s\n",
|
|
cname,caddr,lp_servicename(s));
|
|
}
|
|
}
|
|
}
|
|
return(0);
|
|
}
|
|
|
|
|