mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +03:00
this looks like a big commit, but it isn't really :)
This fixes our netbios scope handling. We now have a 'netbios scope' option
in smb.conf and the scope option is removed from make_nmb_name()
this was prompted by a bug in our PDC finding code where it didn't append
the scope to the query of the '*' name.
(This used to be commit b563be824b
)
This commit is contained in:
parent
102e44e446
commit
171da4d787
@ -42,7 +42,6 @@ static char *cmdstr;
|
||||
static BOOL got_pass;
|
||||
static int io_bufsize = 65520;
|
||||
extern struct in_addr ipzero;
|
||||
extern pstring scope;
|
||||
|
||||
static int name_type = 0x20;
|
||||
|
||||
@ -1890,8 +1889,8 @@ struct cli_state *do_connect(char *server, char *share)
|
||||
|
||||
ip = ipzero;
|
||||
|
||||
make_nmb_name(&calling, global_myname, 0x0, "");
|
||||
make_nmb_name(&called , server, name_type, "");
|
||||
make_nmb_name(&calling, global_myname, 0x0);
|
||||
make_nmb_name(&called , server, name_type);
|
||||
|
||||
again:
|
||||
ip = ipzero;
|
||||
@ -1914,7 +1913,7 @@ struct cli_state *do_connect(char *server, char *share)
|
||||
goto again;
|
||||
}
|
||||
if (strcmp(called.name, "*SMBSERVER")) {
|
||||
make_nmb_name(&called , "*SMBSERVER", 0x20, "");
|
||||
make_nmb_name(&called , "*SMBSERVER", 0x20);
|
||||
goto again;
|
||||
}
|
||||
return NULL;
|
||||
@ -2141,8 +2140,8 @@ static int do_message_op(void)
|
||||
|
||||
ip = ipzero;
|
||||
|
||||
make_nmb_name(&calling, global_myname, 0x0, "");
|
||||
make_nmb_name(&called , desthost, name_type, "");
|
||||
make_nmb_name(&calling, global_myname, 0x0);
|
||||
make_nmb_name(&called , desthost, name_type);
|
||||
|
||||
ip = ipzero;
|
||||
if (have_ip) ip = dest_ip;
|
||||
@ -2329,7 +2328,11 @@ static int do_message_op(void)
|
||||
message = True;
|
||||
break;
|
||||
case 'i':
|
||||
pstrcpy(scope,optarg);
|
||||
{
|
||||
extern pstring global_scope;
|
||||
pstrcpy(global_scope,optarg);
|
||||
strupper(global_scope);
|
||||
}
|
||||
break;
|
||||
case 'N':
|
||||
got_pass = True;
|
||||
|
@ -37,7 +37,6 @@
|
||||
extern struct in_addr ipzero;
|
||||
extern int DEBUGLEVEL;
|
||||
|
||||
extern pstring scope;
|
||||
extern BOOL in_client;
|
||||
extern pstring user_socket_options;
|
||||
|
||||
@ -142,8 +141,8 @@ static struct cli_state *do_connection(char *service)
|
||||
|
||||
ip = ipzero;
|
||||
|
||||
make_nmb_name(&calling, my_netbios_name, 0x0, "");
|
||||
make_nmb_name(&called , server, 0x20, "");
|
||||
make_nmb_name(&calling, my_netbios_name, 0x0);
|
||||
make_nmb_name(&called , server, 0x20);
|
||||
|
||||
again:
|
||||
ip = ipzero;
|
||||
@ -160,7 +159,7 @@ static struct cli_state *do_connection(char *service)
|
||||
fprintf(stderr, "session request to %s failed\n", called.name);
|
||||
cli_shutdown(c);
|
||||
if (strcmp(called.name, "*SMBSERVER")) {
|
||||
make_nmb_name(&called , "*SMBSERVER", 0x20, "");
|
||||
make_nmb_name(&called , "*SMBSERVER", 0x20);
|
||||
goto again;
|
||||
}
|
||||
return NULL;
|
||||
@ -517,6 +516,7 @@ static void parse_mount_smb(int argc, char **argv)
|
||||
char *opteq;
|
||||
extern char *optarg;
|
||||
int val;
|
||||
extern pstring global_scope;
|
||||
|
||||
if (argc < 2 || argv[1][0] == '-') {
|
||||
usage();
|
||||
@ -591,7 +591,7 @@ static void parse_mount_smb(int argc, char **argv)
|
||||
} else if(!strcmp(opts, "sockopt")) {
|
||||
pstrcpy(user_socket_options,opteq+1);
|
||||
} else if(!strcmp(opts, "scope")) {
|
||||
pstrcpy(scope,opteq+1);
|
||||
pstrcpy(global_scope,opteq+1);
|
||||
} else {
|
||||
usage();
|
||||
exit(1);
|
||||
|
@ -242,8 +242,8 @@ smb_connect(char *workgroup, /* I - Workgroup */
|
||||
|
||||
ip = ipzero;
|
||||
|
||||
make_nmb_name(&calling, myname, 0x0, "");
|
||||
make_nmb_name(&called, server, 0x20, "");
|
||||
make_nmb_name(&calling, myname, 0x0);
|
||||
make_nmb_name(&called, server, 0x20);
|
||||
|
||||
/*
|
||||
* Open a new connection to the SMB server...
|
||||
|
@ -682,7 +682,7 @@ void free_packet(struct packet_struct *packet);
|
||||
struct packet_struct *parse_packet(char *buf,int length,
|
||||
enum packet_type packet_type);
|
||||
struct packet_struct *read_packet(int fd,enum packet_type packet_type);
|
||||
void make_nmb_name( struct nmb_name *n, const char *name, int type, const char *this_scope );
|
||||
void make_nmb_name( struct nmb_name *n, const char *name, int type);
|
||||
BOOL nmb_name_equal(struct nmb_name *n1, struct nmb_name *n2);
|
||||
int build_packet(char *buf, struct packet_struct *p);
|
||||
BOOL send_packet(struct packet_struct *p);
|
||||
|
@ -26,7 +26,6 @@
|
||||
#include "trans2.h"
|
||||
|
||||
extern int DEBUGLEVEL;
|
||||
extern pstring scope;
|
||||
extern pstring global_myname;
|
||||
|
||||
struct msrpc_use
|
||||
|
@ -58,8 +58,6 @@ extern SSL *ssl;
|
||||
extern int sslFd;
|
||||
#endif /* WITH_SSL */
|
||||
|
||||
pstring scope = "";
|
||||
|
||||
extern int DEBUGLEVEL;
|
||||
|
||||
int Protocol = PROTOCOL_COREPLUS;
|
||||
@ -297,6 +295,7 @@ int name_mangle( char *In, char *Out, char name_type )
|
||||
int len;
|
||||
char buf[20];
|
||||
char *p = Out;
|
||||
extern pstring global_scope;
|
||||
|
||||
/* Safely copy the input string, In, into buf[]. */
|
||||
(void)memset( buf, 0, 20 );
|
||||
@ -320,9 +319,9 @@ int name_mangle( char *In, char *Out, char name_type )
|
||||
p[0] = '\0';
|
||||
|
||||
/* Add the scope string. */
|
||||
for( i = 0, len = 0; NULL != scope; i++, len++ )
|
||||
for( i = 0, len = 0; NULL != global_scope; i++, len++ )
|
||||
{
|
||||
switch( scope[i] )
|
||||
switch( global_scope[i] )
|
||||
{
|
||||
case '\0':
|
||||
p[0] = len;
|
||||
@ -335,7 +334,7 @@ int name_mangle( char *In, char *Out, char name_type )
|
||||
len = -1;
|
||||
break;
|
||||
default:
|
||||
p[len+1] = scope[i];
|
||||
p[len+1] = global_scope[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -27,7 +27,6 @@
|
||||
|
||||
extern int DEBUGLEVEL;
|
||||
extern pstring user_socket_options;
|
||||
extern pstring scope;
|
||||
|
||||
static void cli_process_oplock(struct cli_state *cli);
|
||||
|
||||
@ -3223,7 +3222,7 @@ BOOL attempt_netbios_session_request(struct cli_state *cli, char *srchost, char
|
||||
{
|
||||
struct nmb_name calling, called;
|
||||
|
||||
make_nmb_name(&calling, srchost, 0x0, scope);
|
||||
make_nmb_name(&calling, srchost, 0x0);
|
||||
|
||||
/*
|
||||
* If the called name is an IP address
|
||||
@ -3231,9 +3230,9 @@ BOOL attempt_netbios_session_request(struct cli_state *cli, char *srchost, char
|
||||
*/
|
||||
|
||||
if(is_ipaddress(desthost))
|
||||
make_nmb_name(&called, "*SMBSERVER", 0x20, scope);
|
||||
make_nmb_name(&called, "*SMBSERVER", 0x20);
|
||||
else
|
||||
make_nmb_name(&called, desthost, 0x20, scope);
|
||||
make_nmb_name(&called, desthost, 0x20);
|
||||
|
||||
if (!cli_session_request(cli, &calling, &called)) {
|
||||
struct nmb_name smbservername;
|
||||
@ -3245,7 +3244,7 @@ BOOL attempt_netbios_session_request(struct cli_state *cli, char *srchost, char
|
||||
|
||||
cli_shutdown(cli);
|
||||
|
||||
make_nmb_name(&smbservername , "*SMBSERVER", 0x20, scope);
|
||||
make_nmb_name(&smbservername , "*SMBSERVER", 0x20);
|
||||
|
||||
if (!nmb_name_equal(&called, &smbservername) ||
|
||||
!cli_initialise(cli) ||
|
||||
|
@ -22,7 +22,6 @@
|
||||
|
||||
#include "includes.h"
|
||||
|
||||
extern pstring scope;
|
||||
extern int DEBUGLEVEL;
|
||||
|
||||
/* nmbd.c sets this to True. */
|
||||
@ -131,7 +130,7 @@ static BOOL internal_name_status(int fd,char *name,int name_type,BOOL recurse,
|
||||
nmb->header.nscount = 0;
|
||||
nmb->header.arcount = 0;
|
||||
|
||||
make_nmb_name(&nmb->question.question_name,name,name_type,scope);
|
||||
make_nmb_name(&nmb->question.question_name,name,name_type);
|
||||
|
||||
nmb->question.question_type = 0x21;
|
||||
nmb->question.question_class = 0x1;
|
||||
@ -238,7 +237,7 @@ struct in_addr *name_query(int fd,const char *name,int name_type,
|
||||
nmb->header.nscount = 0;
|
||||
nmb->header.arcount = 0;
|
||||
|
||||
make_nmb_name(&nmb->question.question_name,name,name_type,scope);
|
||||
make_nmb_name(&nmb->question.question_name,name,name_type);
|
||||
|
||||
nmb->question.question_type = 0x20;
|
||||
nmb->question.question_class = 0x1;
|
||||
@ -781,8 +780,8 @@ BOOL lookup_pdc_name(const char *srcname, const char *domain, struct in_addr *pd
|
||||
dgram->header.dgm_length = 0; /* Let build_dgram() handle this. */
|
||||
dgram->header.packet_offset = 0;
|
||||
|
||||
make_nmb_name(&dgram->source_name,srcname,0,scope);
|
||||
make_nmb_name(&dgram->dest_name,domain,0x1B,scope);
|
||||
make_nmb_name(&dgram->source_name,srcname,0);
|
||||
make_nmb_name(&dgram->dest_name,domain,0x1B);
|
||||
|
||||
ptr = &dgram->data[0];
|
||||
|
||||
|
@ -819,13 +819,14 @@ static int build_dgram(char *buf,struct packet_struct *p)
|
||||
/*******************************************************************
|
||||
build a nmb name
|
||||
*******************************************************************/
|
||||
void make_nmb_name( struct nmb_name *n, const char *name, int type, const char *this_scope )
|
||||
void make_nmb_name( struct nmb_name *n, const char *name, int type)
|
||||
{
|
||||
extern pstring global_scope;
|
||||
memset( (char *)n, '\0', sizeof(struct nmb_name) );
|
||||
StrnCpy( n->name, name, 15 );
|
||||
strupper( n->name );
|
||||
n->name_type = (unsigned int)type & 0xFF;
|
||||
StrnCpy( n->scope, this_scope, 63 );
|
||||
StrnCpy( n->scope, global_scope, 63 );
|
||||
strupper( n->scope );
|
||||
}
|
||||
|
||||
|
@ -23,7 +23,6 @@
|
||||
|
||||
|
||||
extern pstring global_myname;
|
||||
extern pstring scope;
|
||||
|
||||
/*************************************************************
|
||||
change a password on a remote machine using IPC calls
|
||||
@ -52,8 +51,8 @@ BOOL remote_password_change(const char *remote_machine, const char *user_name,
|
||||
return False;
|
||||
}
|
||||
|
||||
make_nmb_name(&calling, global_myname , 0x0 , scope);
|
||||
make_nmb_name(&called , remote_machine, 0x20, scope);
|
||||
make_nmb_name(&calling, global_myname , 0x0);
|
||||
make_nmb_name(&called , remote_machine, 0x20);
|
||||
|
||||
if (!cli_session_request(&cli, &calling, &called)) {
|
||||
slprintf(err_str, err_str_len-1, "machine %s rejected the session setup. Error was : %s.\n",
|
||||
|
@ -32,8 +32,6 @@ extern int DEBUGLEVEL;
|
||||
extern pstring debugf;
|
||||
pstring servicesf = CONFIGFILE;
|
||||
|
||||
extern pstring scope;
|
||||
|
||||
int ClientNMB = -1;
|
||||
int ClientDGRAM = -1;
|
||||
int global_nmb_port = -1;
|
||||
@ -606,7 +604,7 @@ static void usage(char *pname)
|
||||
{
|
||||
|
||||
printf( "Usage: %s [-DaohV] [-H lmhosts file] [-d debuglevel] [-l log basename]\n", pname );
|
||||
printf( " [-n name] [-p port] [-s configuration file] [-i scope]\n" );
|
||||
printf( " [-n name] [-p port] [-s configuration file]\n" );
|
||||
printf( "\t-D Become a daemon\n" );
|
||||
printf( "\t-a Append to log file (default)\n" );
|
||||
printf( "\t-o Overwrite log file, don't append\n" );
|
||||
@ -618,7 +616,6 @@ static void usage(char *pname)
|
||||
printf( "\t-n netbiosname. Primary netbios name\n" );
|
||||
printf( "\t-p port Listen on the specified port\n" );
|
||||
printf( "\t-s configuration file Configuration file name\n" );
|
||||
printf( "\t-i scope NetBIOS scope\n" );
|
||||
printf( "\n");
|
||||
} /* usage */
|
||||
|
||||
@ -686,7 +683,7 @@ static void usage(char *pname)
|
||||
#endif /* SIGUSR2 */
|
||||
|
||||
while( EOF !=
|
||||
(opt = getopt( argc, argv, "Vaos:T:I:C:bAi:B:N:Rn:l:d:Dp:hSH:G:f:" )) )
|
||||
(opt = getopt( argc, argv, "Vaos:T:I:C:bAB:N:Rn:l:d:Dp:hSH:G:f:" )) )
|
||||
{
|
||||
switch (opt)
|
||||
{
|
||||
@ -710,10 +707,6 @@ static void usage(char *pname)
|
||||
case 'l':
|
||||
slprintf(debugf,sizeof(debugf)-1, "%s.nmb",optarg);
|
||||
break;
|
||||
case 'i':
|
||||
pstrcpy(scope,optarg);
|
||||
strupper(scope);
|
||||
break;
|
||||
case 'a':
|
||||
append_log = True;
|
||||
break;
|
||||
|
@ -26,7 +26,6 @@
|
||||
|
||||
extern int DEBUGLEVEL;
|
||||
|
||||
extern pstring scope;
|
||||
extern pstring global_myname;
|
||||
extern fstring global_myworkgroup;
|
||||
extern char **my_netbios_names;
|
||||
@ -133,7 +132,7 @@ in workgroup %s on subnet %s\n",
|
||||
will stop us syncing with ourself if we are also
|
||||
a local master browser. */
|
||||
|
||||
make_nmb_name(&nmbname, global_myname, 0x20, scope);
|
||||
make_nmb_name(&nmbname, global_myname, 0x20);
|
||||
|
||||
work->dmb_name = nmbname;
|
||||
/* Pick the first interface ip address as the domain master browser ip. */
|
||||
@ -282,7 +281,7 @@ static void become_domain_master_browser_bcast(char *workgroup_name)
|
||||
if (work && (work->dom_state == DOMAIN_NONE))
|
||||
{
|
||||
struct nmb_name nmbname;
|
||||
make_nmb_name(&nmbname,workgroup_name,0x1b,scope);
|
||||
make_nmb_name(&nmbname,workgroup_name,0x1b);
|
||||
|
||||
/*
|
||||
* Check for our name on the given broadcast subnet first, only initiate
|
||||
@ -330,7 +329,7 @@ static void become_domain_master_browser_wins(char *workgroup_name)
|
||||
{
|
||||
struct nmb_name nmbname;
|
||||
|
||||
make_nmb_name(&nmbname,workgroup_name,0x1b,scope);
|
||||
make_nmb_name(&nmbname,workgroup_name,0x1b);
|
||||
|
||||
/*
|
||||
* Check for our name on the unicast subnet first, only initiate
|
||||
|
@ -25,7 +25,6 @@
|
||||
#include "includes.h"
|
||||
|
||||
extern int DEBUGLEVEL;
|
||||
extern pstring scope;
|
||||
extern pstring global_myname;
|
||||
|
||||
extern uint16 samba_nb_type; /* Samba's NetBIOS name type. */
|
||||
@ -126,7 +125,7 @@ in workgroup %s on subnet %s\n",
|
||||
* master browser.
|
||||
*/
|
||||
|
||||
make_nmb_name(&nmbname, work->work_group, 0x1d, scope);
|
||||
make_nmb_name(&nmbname, work->work_group, 0x1d);
|
||||
|
||||
remove_permanent_name_from_unicast( subrec, &nmbname);
|
||||
|
||||
@ -208,7 +207,7 @@ static void release_1d_name( struct subnet_record *subrec, char *workgroup_name,
|
||||
struct nmb_name nmbname;
|
||||
struct name_record *namerec;
|
||||
|
||||
make_nmb_name(&nmbname, workgroup_name, 0x1d, scope);
|
||||
make_nmb_name(&nmbname, workgroup_name, 0x1d);
|
||||
if((namerec = find_name_on_subnet( subrec, &nmbname, FIND_SELF_NAME))!=NULL)
|
||||
{
|
||||
struct userdata_struct *userdata;
|
||||
@ -308,7 +307,7 @@ in workgroup %s on subnet %s\n",
|
||||
release_1d_name( subrec, work->work_group, force_new_election);
|
||||
|
||||
/* Deregister any browser names we may have. */
|
||||
make_nmb_name(&nmbname, MSBROWSE, 0x1, scope);
|
||||
make_nmb_name(&nmbname, MSBROWSE, 0x1);
|
||||
if((namerec = find_name_on_subnet( subrec, &nmbname, FIND_SELF_NAME))!=NULL)
|
||||
{
|
||||
release_name(subrec, namerec,
|
||||
|
@ -26,7 +26,6 @@
|
||||
#include "smb.h"
|
||||
|
||||
extern int DEBUGLEVEL;
|
||||
extern pstring scope;
|
||||
extern struct in_addr ipzero;
|
||||
extern pstring global_myname;
|
||||
extern fstring global_myworkgroup;
|
||||
@ -226,7 +225,7 @@ static void domain_master_node_status_success(struct subnet_record *subrec,
|
||||
{
|
||||
struct nmb_name nmbname;
|
||||
|
||||
make_nmb_name(&nmbname, qname, name_type, scope);
|
||||
make_nmb_name(&nmbname, qname, name_type);
|
||||
|
||||
/* Copy the dmb name and IP address
|
||||
into the workgroup struct. */
|
||||
@ -324,8 +323,7 @@ static void find_domain_master_name_query_success(struct subnet_record *subrec,
|
||||
putip((char *)&work->dmb_addr, &ipzero);
|
||||
|
||||
/* Now initiate the node status request. */
|
||||
memset((char *)&nmbname, '\0',sizeof(nmbname));
|
||||
nmbname.name[0] = '*';
|
||||
make_nmb_name(&nmbname,"*",0x0);
|
||||
|
||||
/* Put the workgroup name into the userdata so we know
|
||||
what workgroup we're talking to when the reply comes
|
||||
@ -391,7 +389,7 @@ void announce_and_sync_with_domain_master_browser( struct subnet_record *subrec,
|
||||
return;
|
||||
}
|
||||
|
||||
make_nmb_name(&nmbname,work->work_group,0x1b,scope);
|
||||
make_nmb_name(&nmbname,work->work_group,0x1b);
|
||||
|
||||
/* First, query for the WORKGROUP<1b> name from the WINS server. */
|
||||
query_name(unicast_subnet, nmbname.name, nmbname.name_type,
|
||||
@ -486,7 +484,7 @@ static void get_domain_master_name_node_status_success(struct subnet_record *sub
|
||||
|
||||
/* remember who the master is */
|
||||
fstrcpy(work->local_master_browser_name, server_name);
|
||||
make_nmb_name(&nmbname, server_name, 0x20, scope);
|
||||
make_nmb_name(&nmbname, server_name, 0x20);
|
||||
work->dmb_name = nmbname;
|
||||
work->dmb_addr = from_ip;
|
||||
}
|
||||
@ -549,8 +547,7 @@ static void find_all_domain_master_names_query_success(struct subnet_record *sub
|
||||
for(i = 0; i < rrec->rdlength / 6; i++)
|
||||
{
|
||||
/* Initiate the node status requests. */
|
||||
memset((char *)&nmbname, '\0', sizeof(nmbname));
|
||||
nmbname.name[0] = '*';
|
||||
make_nmb_name(&nmbname, "*", 0);
|
||||
|
||||
putip((char *)&send_ip, (char *)&rrec->rdata[(i*6) + 2]);
|
||||
|
||||
@ -636,7 +633,7 @@ void collect_all_workgroup_names_from_wins_server(time_t t)
|
||||
|
||||
lastrun = t;
|
||||
|
||||
make_nmb_name(&nmbname,"*",0x1b,scope);
|
||||
make_nmb_name(&nmbname,"*",0x1b);
|
||||
|
||||
/* First, query for the *<1b> name from the WINS server. */
|
||||
query_name(unicast_subnet, nmbname.name, nmbname.name_type,
|
||||
@ -694,7 +691,7 @@ void sync_all_dmbs(time_t t)
|
||||
the same as the unicast local master */
|
||||
make_nmb_name(&work->dmb_name,
|
||||
work->local_master_browser_name,
|
||||
0x20, scope);
|
||||
0x20);
|
||||
}
|
||||
|
||||
DEBUG(3,("Initiating DMB<->DMB sync with %s(%s)\n",
|
||||
|
@ -26,8 +26,6 @@
|
||||
|
||||
extern int DEBUGLEVEL;
|
||||
|
||||
extern pstring scope;
|
||||
|
||||
extern pstring global_myname;
|
||||
extern fstring global_myworkgroup;
|
||||
|
||||
@ -194,7 +192,7 @@ void run_elections(time_t t)
|
||||
*/
|
||||
struct nmb_name nmbname;
|
||||
|
||||
make_nmb_name(&nmbname, work->work_group, 0x1e, scope);
|
||||
make_nmb_name(&nmbname, work->work_group, 0x1e);
|
||||
if(find_name_on_subnet( subrec, &nmbname, FIND_SELF_NAME)==NULL) {
|
||||
DEBUG(8,("run_elections: Cannot send election packet yet as name %s not \
|
||||
yet registered on subnet %s\n", nmb_namestr(&nmbname), subrec->subnet_name ));
|
||||
@ -365,7 +363,7 @@ BOOL check_elections(void)
|
||||
*/
|
||||
struct nmb_name nmbname;
|
||||
|
||||
make_nmb_name(&nmbname, work->work_group, 0x1e, scope);
|
||||
make_nmb_name(&nmbname, work->work_group, 0x1e);
|
||||
if(find_name_on_subnet( subrec, &nmbname, FIND_SELF_NAME)==NULL) {
|
||||
DEBUG(8,("check_elections: Cannot send election packet yet as name %s not \
|
||||
yet registered on subnet %s\n", nmb_namestr(&nmbname), subrec->subnet_name ));
|
||||
|
@ -26,7 +26,6 @@
|
||||
|
||||
extern int DEBUGLEVEL;
|
||||
|
||||
extern pstring scope;
|
||||
extern pstring global_myname;
|
||||
extern fstring global_myworkgroup;
|
||||
extern char **my_netbios_names;
|
||||
@ -152,7 +151,7 @@ void add_logon_names(void)
|
||||
if (work && (work->log_state == LOGON_NONE))
|
||||
{
|
||||
struct nmb_name nmbname;
|
||||
make_nmb_name(&nmbname,global_myworkgroup,0x1c,scope);
|
||||
make_nmb_name(&nmbname,global_myworkgroup,0x1c);
|
||||
|
||||
if (find_name_on_subnet(subrec, &nmbname, FIND_SELF_NAME) == NULL)
|
||||
{
|
||||
|
@ -28,7 +28,6 @@ extern int DEBUGLEVEL;
|
||||
|
||||
extern char **my_netbios_names;
|
||||
extern fstring global_myworkgroup;
|
||||
extern pstring scope;
|
||||
|
||||
extern uint16 samba_nb_type; /* Samba's NetBIOS type. */
|
||||
|
||||
@ -119,13 +118,13 @@ BOOL register_my_workgroup_and_names(void)
|
||||
*/
|
||||
struct nmb_name nmbname;
|
||||
|
||||
make_nmb_name(&nmbname, my_netbios_names[i],0x20, scope);
|
||||
make_nmb_name(&nmbname, my_netbios_names[i],0x20);
|
||||
insert_permanent_name_into_unicast(subrec, &nmbname, samba_nb_type);
|
||||
|
||||
make_nmb_name(&nmbname, my_netbios_names[i],0x3, scope);
|
||||
make_nmb_name(&nmbname, my_netbios_names[i],0x3);
|
||||
insert_permanent_name_into_unicast(subrec, &nmbname, samba_nb_type);
|
||||
|
||||
make_nmb_name(&nmbname, my_netbios_names[i],0x0, scope);
|
||||
make_nmb_name(&nmbname, my_netbios_names[i],0x0);
|
||||
insert_permanent_name_into_unicast(subrec, &nmbname, samba_nb_type);
|
||||
}
|
||||
}
|
||||
@ -142,10 +141,10 @@ BOOL register_my_workgroup_and_names(void)
|
||||
*/
|
||||
struct nmb_name nmbname;
|
||||
|
||||
make_nmb_name(&nmbname, global_myworkgroup, 0x0, scope);
|
||||
make_nmb_name(&nmbname, global_myworkgroup, 0x0);
|
||||
insert_permanent_name_into_unicast(subrec, &nmbname, samba_nb_type|NB_GROUP);
|
||||
|
||||
make_nmb_name(&nmbname, global_myworkgroup, 0x1e, scope);
|
||||
make_nmb_name(&nmbname, global_myworkgroup, 0x1e);
|
||||
insert_permanent_name_into_unicast(subrec, &nmbname, samba_nb_type|NB_GROUP);
|
||||
}
|
||||
}
|
||||
|
@ -26,7 +26,6 @@
|
||||
|
||||
extern int DEBUGLEVEL;
|
||||
|
||||
extern pstring scope;
|
||||
extern char **my_netbios_names;
|
||||
|
||||
uint16 samba_nb_type = 0; /* samba's NetBIOS name type */
|
||||
@ -213,8 +212,8 @@ struct name_record *add_name_to_subnet( struct subnet_record *subrec,
|
||||
|
||||
namerec->subnet = subrec;
|
||||
|
||||
make_nmb_name( &namerec->name, name, type, scope );
|
||||
upcase_name( &namerec->name, NULL );
|
||||
make_nmb_name(&namerec->name, name, type);
|
||||
upcase_name(&namerec->name, NULL );
|
||||
|
||||
/* Enter the name as active. */
|
||||
namerec->data.nb_flags = nb_flags | NB_ACTIVE;
|
||||
|
@ -26,8 +26,6 @@
|
||||
|
||||
extern int DEBUGLEVEL;
|
||||
|
||||
extern pstring scope;
|
||||
|
||||
/****************************************************************************
|
||||
Deal with a response packet when querying a name.
|
||||
****************************************************************************/
|
||||
@ -180,7 +178,7 @@ BOOL query_name(struct subnet_record *subrec, char *name, int type,
|
||||
struct nmb_name nmbname;
|
||||
struct name_record *namerec;
|
||||
|
||||
make_nmb_name(&nmbname, name, type, scope);
|
||||
make_nmb_name(&nmbname, name, type);
|
||||
|
||||
/*
|
||||
* We need to check our local namelists first.
|
||||
@ -247,7 +245,7 @@ BOOL query_name_from_wins_server(struct in_addr ip_to,
|
||||
{
|
||||
struct nmb_name nmbname;
|
||||
|
||||
make_nmb_name(&nmbname, name, type, scope);
|
||||
make_nmb_name(&nmbname, name, type);
|
||||
|
||||
if(queue_query_name_from_wins_server( ip_to,
|
||||
query_name_response,
|
||||
|
@ -26,7 +26,6 @@
|
||||
|
||||
extern int DEBUGLEVEL;
|
||||
|
||||
extern pstring scope;
|
||||
extern fstring global_myworkgroup;
|
||||
|
||||
/****************************************************************************
|
||||
@ -333,7 +332,7 @@ BOOL register_name(struct subnet_record *subrec,
|
||||
{
|
||||
struct nmb_name nmbname;
|
||||
|
||||
make_nmb_name(&nmbname, name, type, scope);
|
||||
make_nmb_name(&nmbname, name, type);
|
||||
|
||||
/* Always set the NB_ACTIVE flag on the name we are
|
||||
registering. Doesn't make sense without it.
|
||||
|
@ -26,8 +26,6 @@
|
||||
|
||||
extern int DEBUGLEVEL;
|
||||
|
||||
extern pstring scope;
|
||||
|
||||
/****************************************************************************
|
||||
Deal with a response packet when releasing one of our names.
|
||||
****************************************************************************/
|
||||
|
@ -26,8 +26,6 @@
|
||||
|
||||
extern int DEBUGLEVEL;
|
||||
|
||||
extern pstring scope;
|
||||
|
||||
/****************************************************************************
|
||||
Deal with a successful node status response.
|
||||
****************************************************************************/
|
||||
|
@ -32,7 +32,6 @@ extern int DEBUGLEVEL;
|
||||
|
||||
extern int num_response_packets;
|
||||
|
||||
extern pstring scope;
|
||||
extern struct in_addr loopback_ip;
|
||||
|
||||
static void queue_packet(struct packet_struct *packet);
|
||||
@ -1026,14 +1025,15 @@ static void process_browse_packet(struct packet_struct *p, char *buf,int len)
|
||||
struct dgram_packet *dgram = &p->packet.dgram;
|
||||
int command = CVAL(buf,0);
|
||||
struct subnet_record *subrec = find_subnet_for_dgram_browse_packet(p);
|
||||
extern pstring global_scope;
|
||||
|
||||
/* Drop the packet if it's a different NetBIOS scope, or
|
||||
the source is from one of our names. */
|
||||
|
||||
if (!strequal(dgram->dest_name.scope,scope ))
|
||||
if (!strequal(dgram->dest_name.scope, global_scope))
|
||||
{
|
||||
DEBUG(7,("process_browse_packet: Discarding datagram from IP %s. Scope (%s) \
|
||||
mismatch with our scope (%s).\n", inet_ntoa(p->ip), dgram->dest_name.scope, scope));
|
||||
mismatch with our scope (%s).\n", inet_ntoa(p->ip), dgram->dest_name.scope, global_scope));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1138,14 +1138,15 @@ static void process_lanman_packet(struct packet_struct *p, char *buf,int len)
|
||||
struct dgram_packet *dgram = &p->packet.dgram;
|
||||
int command = SVAL(buf,0);
|
||||
struct subnet_record *subrec = find_subnet_for_dgram_browse_packet(p);
|
||||
extern pstring global_scope;
|
||||
|
||||
/* Drop the packet if it's a different NetBIOS scope, or
|
||||
the source is from one of our names. */
|
||||
|
||||
if (!strequal(dgram->dest_name.scope,scope ))
|
||||
if (!strequal(dgram->dest_name.scope, global_scope))
|
||||
{
|
||||
DEBUG(7,("process_lanman_packet: Discarding datagram from IP %s. Scope (%s) \
|
||||
mismatch with our scope (%s).\n", inet_ntoa(p->ip), dgram->dest_name.scope, scope));
|
||||
mismatch with our scope (%s).\n", inet_ntoa(p->ip), dgram->dest_name.scope, global_scope));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1927,8 +1928,8 @@ BOOL send_mailslot(BOOL unique, char *mailslot,char *buf,int len,
|
||||
dgram->header.dgm_length = 0; /* Let build_dgram() handle this. */
|
||||
dgram->header.packet_offset = 0;
|
||||
|
||||
make_nmb_name(&dgram->source_name,srcname,src_type,scope);
|
||||
make_nmb_name(&dgram->dest_name,dstname,dest_type,scope);
|
||||
make_nmb_name(&dgram->source_name,srcname,src_type);
|
||||
make_nmb_name(&dgram->dest_name,dstname,dest_type);
|
||||
|
||||
ptr = &dgram->data[0];
|
||||
|
||||
|
@ -28,7 +28,6 @@ extern int ClientNMB;
|
||||
|
||||
extern int DEBUGLEVEL;
|
||||
|
||||
extern pstring scope;
|
||||
extern struct in_addr ipzero;
|
||||
|
||||
int num_response_packets = 0;
|
||||
|
@ -32,7 +32,6 @@
|
||||
#include "smb.h"
|
||||
|
||||
extern int DEBUGLEVEL;
|
||||
extern pstring scope;
|
||||
|
||||
struct sync_record {
|
||||
struct sync_record *next, *prev;
|
||||
@ -77,8 +76,8 @@ static void sync_child(char *name, int nm_type,
|
||||
return;
|
||||
}
|
||||
|
||||
make_nmb_name(&calling, local_machine, 0x0 , scope);
|
||||
make_nmb_name(&called , name , nm_type, scope);
|
||||
make_nmb_name(&calling, local_machine, 0x0);
|
||||
make_nmb_name(&called , name , nm_type);
|
||||
|
||||
if (!cli_session_request(&cli, &calling, &called))
|
||||
{
|
||||
|
@ -71,6 +71,7 @@ BOOL bLoaded = False;
|
||||
extern int DEBUGLEVEL;
|
||||
extern pstring user_socket_options;
|
||||
extern pstring global_myname;
|
||||
pstring global_scope = "";
|
||||
|
||||
#ifndef GLOBAL_NAME
|
||||
#define GLOBAL_NAME "global"
|
||||
@ -542,6 +543,7 @@ static struct parm_struct parm_table[] =
|
||||
{"workgroup", P_USTRING, P_GLOBAL, &Globals.szWorkGroup, NULL, NULL, FLAG_BASIC|FLAG_DOS_STRING},
|
||||
{"netbios name", P_UGSTRING,P_GLOBAL, global_myname, NULL, NULL, FLAG_BASIC|FLAG_DOS_STRING},
|
||||
{"netbios aliases", P_STRING, P_GLOBAL, &Globals.szNetbiosAliases, NULL, NULL, FLAG_DOS_STRING},
|
||||
{"netbios scope", P_UGSTRING,P_GLOBAL, global_scope, NULL, NULL, 0},
|
||||
{"server string", P_STRING, P_GLOBAL, &Globals.szServerString, NULL, NULL, FLAG_BASIC|FLAG_DOS_STRING},
|
||||
{"interfaces", P_STRING, P_GLOBAL, &Globals.szInterfaces, NULL, NULL, FLAG_BASIC},
|
||||
{"bind interfaces only", P_BOOL,P_GLOBAL, &Globals.bBindInterfacesOnly,NULL, NULL, 0},
|
||||
|
@ -30,7 +30,6 @@
|
||||
#include "includes.h"
|
||||
|
||||
extern int DEBUGLEVEL;
|
||||
extern pstring scope;
|
||||
extern pstring global_myname;
|
||||
extern fstring global_myworkgroup;
|
||||
|
||||
|
@ -30,7 +30,6 @@
|
||||
#endif
|
||||
|
||||
extern pstring debugf;
|
||||
extern pstring scope;
|
||||
extern pstring global_myname;
|
||||
|
||||
extern pstring user_socket_options;
|
||||
@ -71,8 +70,8 @@ static BOOL rpcclient_connect(struct client_info *info)
|
||||
struct nmb_name calling;
|
||||
struct nmb_name called;
|
||||
|
||||
make_nmb_name(&called , dns_to_netbios_name(info->dest_host ), info->name_type, scope);
|
||||
make_nmb_name(&calling, dns_to_netbios_name(info->myhostname), 0x0 , scope);
|
||||
make_nmb_name(&called , dns_to_netbios_name(info->dest_host ), info->name_type);
|
||||
make_nmb_name(&calling, dns_to_netbios_name(info->myhostname), 0x0 );
|
||||
|
||||
if (!cli_establish_connection(smb_cli,
|
||||
info->dest_host, &info->dest_ip,
|
||||
@ -573,7 +572,9 @@ enum client_action
|
||||
|
||||
case 'i':
|
||||
{
|
||||
pstrcpy(scope, optarg);
|
||||
extern pstring global_scope;
|
||||
pstrcpy(global_scope, optarg);
|
||||
strupper(global_scope);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -28,7 +28,6 @@ extern struct in_addr ipzero;
|
||||
/* users from session setup */
|
||||
static pstring session_users="";
|
||||
|
||||
extern pstring scope;
|
||||
extern pstring global_myname;
|
||||
extern fstring global_myworkgroup;
|
||||
|
||||
|
@ -35,7 +35,6 @@ int last_message = -1;
|
||||
/* a useful macro to debug the last message processed */
|
||||
#define LAST_MESSAGE() smb_fn_name(last_message)
|
||||
|
||||
extern pstring scope;
|
||||
extern int DEBUGLEVEL;
|
||||
|
||||
extern pstring user_socket_options;
|
||||
@ -478,7 +477,7 @@ static void usage(char *pname)
|
||||
{
|
||||
|
||||
printf("Usage: %s [-DaoPh?V] [-d debuglevel] [-l log basename] [-p port]\n", pname);
|
||||
printf(" [-O socket options] [-s services file] [-i scope]\n");
|
||||
printf(" [-O socket options] [-s services file]\n");
|
||||
printf("\t-D Become a daemon\n");
|
||||
printf("\t-a Append to log file (default)\n");
|
||||
printf("\t-o Overwrite log file, don't append\n");
|
||||
@ -491,7 +490,6 @@ static void usage(char *pname)
|
||||
printf("\t-p port Listen on the specified port\n");
|
||||
printf("\t-O socket options Socket options\n");
|
||||
printf("\t-s services file. Filename of services file\n");
|
||||
printf("\t-i scope NetBIOS scope to use (default none)\n");
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
@ -520,16 +518,12 @@ static void usage(char *pname)
|
||||
argc--;
|
||||
}
|
||||
|
||||
while ( EOF != (opt = getopt(argc, argv, "O:i:l:s:d:Dp:h?VPaof:")) )
|
||||
while ( EOF != (opt = getopt(argc, argv, "O:l:s:d:Dp:h?VPaof:")) )
|
||||
switch (opt) {
|
||||
case 'O':
|
||||
pstrcpy(user_socket_options,optarg);
|
||||
break;
|
||||
|
||||
case 'i':
|
||||
pstrcpy(scope,optarg);
|
||||
break;
|
||||
|
||||
case 'P':
|
||||
{
|
||||
extern BOOL passive;
|
||||
|
@ -26,8 +26,6 @@
|
||||
|
||||
extern int DEBUGLEVEL;
|
||||
|
||||
extern pstring scope;
|
||||
|
||||
extern struct in_addr ipzero;
|
||||
|
||||
static BOOL use_bcast = True;
|
||||
@ -178,9 +176,12 @@ int main(int argc,char *argv[])
|
||||
translate_addresses = !translate_addresses;
|
||||
break;
|
||||
case 'i':
|
||||
fstrcpy(scope,optarg);
|
||||
strupper(scope);
|
||||
break;
|
||||
{
|
||||
extern pstring global_scope;
|
||||
pstrcpy(global_scope,optarg);
|
||||
strupper(global_scope);
|
||||
}
|
||||
break;
|
||||
case 'M':
|
||||
find_master = True;
|
||||
break;
|
||||
|
@ -29,7 +29,6 @@
|
||||
#define REGISTER 0
|
||||
#endif
|
||||
|
||||
extern pstring scope;
|
||||
extern pstring global_myname;
|
||||
|
||||
extern pstring user_socket_options;
|
||||
@ -69,8 +68,8 @@ static BOOL rpcclient_connect(struct client_info *info)
|
||||
struct nmb_name calling;
|
||||
struct nmb_name called;
|
||||
|
||||
make_nmb_name(&called , dns_to_netbios_name(info->dest_host ), info->name_type, scope);
|
||||
make_nmb_name(&calling, dns_to_netbios_name(info->myhostname), 0x0 , scope);
|
||||
make_nmb_name(&called , dns_to_netbios_name(info->dest_host ), info->name_type);
|
||||
make_nmb_name(&calling, dns_to_netbios_name(info->myhostname), 0x0);
|
||||
|
||||
if (!cli_establish_connection(smb_cli,
|
||||
info->dest_host, &info->dest_ip,
|
||||
|
Loading…
Reference in New Issue
Block a user