mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +03:00
This looks like a big change but really isn't.
It is changing the global variables "myname" and "myworkgroup"
to "global_myname" and "global_myworkgroup" respectively.
This is to make it very explicit when we are messing
with a global (don't ask - it makes the domain client
code much clearer :-).
Jeremy.
(This used to be commit 866406bfe3
)
This commit is contained in:
parent
9189005f7f
commit
e7ac86607c
@ -33,7 +33,7 @@ pstring cur_dir = "\\";
|
||||
pstring cd_path = "";
|
||||
extern pstring service;
|
||||
extern pstring desthost;
|
||||
extern pstring myname;
|
||||
extern pstring global_myname;
|
||||
extern pstring myhostname;
|
||||
extern pstring password;
|
||||
extern pstring username;
|
||||
@ -3705,7 +3705,7 @@ static void usage(char *pname)
|
||||
}
|
||||
break;
|
||||
case 'n':
|
||||
strcpy(myname,optarg);
|
||||
strcpy(global_myname,optarg);
|
||||
break;
|
||||
case 'N':
|
||||
got_pass = True;
|
||||
@ -3779,8 +3779,8 @@ static void usage(char *pname)
|
||||
strcpy(workgroup,lp_workgroup());
|
||||
|
||||
load_interfaces();
|
||||
get_myname((*myname)?NULL:myname,NULL);
|
||||
strupper(myname);
|
||||
get_myname((*global_myname)?NULL:global_myname,NULL);
|
||||
strupper(global_myname);
|
||||
|
||||
if(*new_name_resolve_order)
|
||||
lp_set_name_resolve_order(new_name_resolve_order);
|
||||
|
@ -31,7 +31,7 @@
|
||||
|
||||
pstring service="";
|
||||
pstring desthost="";
|
||||
extern pstring myname;
|
||||
extern pstring global_myname;
|
||||
pstring password = "";
|
||||
pstring smb_login_passwd = "";
|
||||
pstring username="";
|
||||
@ -331,7 +331,7 @@ BOOL cli_send_session_request(char *inbuf,char *outbuf)
|
||||
|
||||
/* and my name */
|
||||
p = outbuf+len;
|
||||
name_mangle(myname,p,0);
|
||||
name_mangle(global_myname,p,0);
|
||||
len += name_len(p);
|
||||
|
||||
/* setup the packet length */
|
||||
@ -378,7 +378,7 @@ BOOL cli_send_session_request(char *inbuf,char *outbuf)
|
||||
{
|
||||
int ecode = CVAL(inbuf,4);
|
||||
DEBUG(0,("Session request failed (%d,%d) with myname=%s destname=%s\n",
|
||||
CVAL(inbuf,0),ecode,myname,desthost));
|
||||
CVAL(inbuf,0),ecode,global_myname,desthost));
|
||||
switch (ecode)
|
||||
{
|
||||
case 0x80:
|
||||
@ -388,7 +388,7 @@ BOOL cli_send_session_request(char *inbuf,char *outbuf)
|
||||
break;
|
||||
case 0x81:
|
||||
DEBUG(0,("Not listening for calling name\n"));
|
||||
DEBUG(0,("Try to connect as another name (instead of %s)\n",myname));
|
||||
DEBUG(0,("Try to connect as another name (instead of %s)\n",global_myname));
|
||||
DEBUG(0,("You may find the -n option useful for this\n"));
|
||||
break;
|
||||
case 0x82:
|
||||
@ -508,7 +508,7 @@ BOOL cli_send_login(char *inbuf,char *outbuf,BOOL start_session,BOOL use_setup,
|
||||
if (CVAL(inbuf,smb_rcls) != 0 || ((int)SVAL(inbuf,smb_vwv0) >= numprots))
|
||||
{
|
||||
DEBUG(0,("SMBnegprot failed. myname=%s destname=%s - %s \n",
|
||||
myname,desthost,smb_errstr(inbuf)));
|
||||
global_myname,desthost,smb_errstr(inbuf)));
|
||||
if (was_null)
|
||||
{
|
||||
free(inbuf);
|
||||
@ -665,7 +665,7 @@ BOOL cli_send_login(char *inbuf,char *outbuf,BOOL start_session,BOOL use_setup,
|
||||
}
|
||||
|
||||
DEBUG(0,("Session setup failed for username=%s myname=%s destname=%s %s\n",
|
||||
username,myname,desthost,smb_errstr(inbuf)));
|
||||
username,global_myname,desthost,smb_errstr(inbuf)));
|
||||
DEBUG(0,("You might find the -U, -W or -n options useful\n"));
|
||||
DEBUG(0,("Sometimes you have to use `-n USERNAME' (particularly with OS/2)\n"));
|
||||
DEBUG(0,("Some servers also insist on uppercase-only passwords\n"));
|
||||
@ -882,10 +882,10 @@ BOOL cli_open_sockets(int port )
|
||||
strcpy(desthost,host);
|
||||
}
|
||||
|
||||
if (!(*myname)) {
|
||||
get_myname(myname,NULL);
|
||||
if (!(*global_myname)) {
|
||||
get_myname(global_myname,NULL);
|
||||
}
|
||||
strupper(myname);
|
||||
strupper(global_myname);
|
||||
|
||||
DEBUG(3,("Opening sockets\n"));
|
||||
|
||||
|
@ -44,7 +44,7 @@ pstring cur_dir = "\\";
|
||||
pstring cd_path = "";
|
||||
extern pstring service;
|
||||
extern pstring desthost;
|
||||
extern pstring myname;
|
||||
extern pstring global_myname;
|
||||
extern pstring myhostname;
|
||||
extern pstring password;
|
||||
extern pstring username;
|
||||
@ -818,7 +818,7 @@ static void usage(char *pname)
|
||||
}
|
||||
break;
|
||||
case 'n':
|
||||
strcpy(myname,optarg);
|
||||
strcpy(global_myname,optarg);
|
||||
break;
|
||||
case 'N':
|
||||
got_pass = True;
|
||||
@ -880,8 +880,8 @@ static void usage(char *pname)
|
||||
strcpy(workgroup,lp_workgroup());
|
||||
|
||||
load_interfaces();
|
||||
get_myname((*myname)?NULL:myname,NULL);
|
||||
strupper(myname);
|
||||
get_myname((*global_myname)?NULL:global_myname,NULL);
|
||||
strupper(global_myname);
|
||||
|
||||
if (cli_open_sockets(port))
|
||||
{
|
||||
|
@ -383,6 +383,9 @@ char *getwd(char *);
|
||||
#define USE_WAITPID
|
||||
#define USE_SETSID
|
||||
#define USE_SYSV_IPC
|
||||
#ifndef QSORT_CAST
|
||||
#define QSORT_CAST (int (*)(const void *, const void *))
|
||||
#endif /* QSORT_CAST */
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -251,13 +251,6 @@ typedef fstring string;
|
||||
#define PIPE_LSASS "\\PIPE\\lsass"
|
||||
#define PIPE_LSARPC "\\PIPE\\lsarpc"
|
||||
|
||||
/* 32 bit time (sec) since 01jan1970 - cifs6.txt, section 3.5, page 30 */
|
||||
typedef struct time_info
|
||||
{
|
||||
uint32 time;
|
||||
|
||||
} UTIME;
|
||||
|
||||
/* 64 bit time (100usec) since ????? - cifs6.txt, section 3.5, page 30 */
|
||||
typedef struct nttime_info
|
||||
{
|
||||
@ -281,40 +274,69 @@ typedef struct nttime_info
|
||||
|
||||
struct smb_passwd
|
||||
{
|
||||
int smb_userid;
|
||||
char *smb_name;
|
||||
unsigned char *smb_passwd; /* Null if no password */
|
||||
unsigned char *smb_nt_passwd; /* Null if no password */
|
||||
/* Other fields / flags may be added later */
|
||||
uint16 acct_ctrl;
|
||||
time_t last_change_time;
|
||||
int smb_userid;
|
||||
char *smb_name;
|
||||
unsigned char *smb_passwd; /* Null if no password */
|
||||
unsigned char *smb_nt_passwd; /* Null if no password */
|
||||
/* Other fields / flags may be added later */
|
||||
uint16 acct_ctrl;
|
||||
time_t last_change_time;
|
||||
};
|
||||
|
||||
/* DOM_CHAL - challenge info */
|
||||
typedef struct chal_info
|
||||
{
|
||||
uchar data[8]; /* credentials */
|
||||
} DOM_CHAL;
|
||||
|
||||
/* 32 bit time (sec) since 01jan1970 - cifs6.txt, section 3.5, page 30 */
|
||||
typedef struct time_info
|
||||
{
|
||||
uint32 time;
|
||||
|
||||
} UTIME;
|
||||
|
||||
/* DOM_CREDs - timestamped client or server credentials */
|
||||
typedef struct cred_info
|
||||
{
|
||||
DOM_CHAL challenge; /* credentials */
|
||||
UTIME timestamp; /* credential time-stamp */
|
||||
|
||||
} DOM_CRED;
|
||||
|
||||
struct cli_state {
|
||||
int fd;
|
||||
int cnum;
|
||||
int pid;
|
||||
int mid;
|
||||
int uid;
|
||||
int protocol;
|
||||
int sec_mode;
|
||||
int rap_error;
|
||||
uint32 nt_error;
|
||||
int privilages;
|
||||
fstring eff_name;
|
||||
fstring desthost;
|
||||
char cryptkey[8];
|
||||
uint32 sesskey;
|
||||
int serverzone;
|
||||
uint32 servertime;
|
||||
int readbraw_supported;
|
||||
int writebraw_supported;
|
||||
int timeout;
|
||||
int max_xmit;
|
||||
char *outbuf;
|
||||
char *inbuf;
|
||||
int bufsize;
|
||||
int initialised;
|
||||
int fd;
|
||||
int cnum;
|
||||
int pid;
|
||||
int mid;
|
||||
int uid;
|
||||
int protocol;
|
||||
int sec_mode;
|
||||
int rap_error;
|
||||
int privilages;
|
||||
fstring eff_name;
|
||||
fstring desthost;
|
||||
char cryptkey[8];
|
||||
uint32 sesskey;
|
||||
int serverzone;
|
||||
uint32 servertime;
|
||||
int readbraw_supported;
|
||||
int writebraw_supported;
|
||||
int timeout;
|
||||
int max_xmit;
|
||||
char *outbuf;
|
||||
char *inbuf;
|
||||
int bufsize;
|
||||
int initialised;
|
||||
/*
|
||||
* Only used in NT domain calls.
|
||||
*/
|
||||
uint32 nt_error; /* NT RPC error code. */
|
||||
uint16 nt_pipe_fnum; /* Pipe handle. */
|
||||
unsigned char sess_key[16]; /* Current session key. */
|
||||
DOM_CRED clnt_cred; /* Client credential. */
|
||||
fstring mach_acct;
|
||||
fstring srv_name;
|
||||
};
|
||||
|
||||
|
||||
@ -445,20 +467,6 @@ typedef struct
|
||||
|
||||
} connection_struct;
|
||||
|
||||
/* DOM_CHAL - challenge info */
|
||||
typedef struct chal_info
|
||||
{
|
||||
uchar data[8]; /* credentials */
|
||||
} DOM_CHAL;
|
||||
|
||||
/* DOM_CREDs - timestamped client or server credentials */
|
||||
typedef struct cred_info
|
||||
{
|
||||
DOM_CHAL challenge; /* credentials */
|
||||
UTIME timestamp; /* credential time-stamp */
|
||||
|
||||
} DOM_CRED;
|
||||
|
||||
/* Domain controller authentication protocol info */
|
||||
struct dcinfo
|
||||
{
|
||||
|
@ -86,8 +86,8 @@ pstring samlogon_user="";
|
||||
|
||||
BOOL sam_logon_in_ssb = False;
|
||||
|
||||
pstring myname = "";
|
||||
fstring myworkgroup = "";
|
||||
pstring global_myname = "";
|
||||
fstring global_myworkgroup = "";
|
||||
char **my_netbios_names;
|
||||
|
||||
int smb_read_error = 0;
|
||||
|
@ -27,7 +27,6 @@ extern int DEBUGLEVEL;
|
||||
int num_good_sends = 0;
|
||||
int num_good_receives = 0;
|
||||
extern pstring scope;
|
||||
extern pstring myname;
|
||||
extern struct in_addr ipzero;
|
||||
|
||||
static struct opcode_names {
|
||||
|
@ -40,8 +40,8 @@ int global_nmb_port = -1;
|
||||
|
||||
extern pstring myhostname;
|
||||
static pstring host_file;
|
||||
extern pstring myname;
|
||||
extern fstring myworkgroup;
|
||||
extern pstring global_myname;
|
||||
extern fstring global_myworkgroup;
|
||||
extern char **my_netbios_names;
|
||||
|
||||
extern BOOL global_in_nmbd;
|
||||
@ -450,23 +450,23 @@ static BOOL init_structs(void)
|
||||
int nodup;
|
||||
pstring nbname;
|
||||
|
||||
if (! *myname)
|
||||
if (! *global_myname)
|
||||
{
|
||||
fstrcpy( myname, myhostname );
|
||||
p = strchr( myname, '.' );
|
||||
fstrcpy( global_myname, myhostname );
|
||||
p = strchr( global_myname, '.' );
|
||||
if (p)
|
||||
*p = 0;
|
||||
}
|
||||
strupper( myname );
|
||||
strupper( global_myname );
|
||||
|
||||
/* Add any NETBIOS name aliases. Ensure that the first entry
|
||||
is equal to myname.
|
||||
is equal to global_myname.
|
||||
*/
|
||||
/* Work out the max number of netbios aliases that we have */
|
||||
ptr = lp_netbios_aliases();
|
||||
for( namecount=0; next_token(&ptr,nbname,NULL); namecount++ )
|
||||
;
|
||||
if ( *myname )
|
||||
if ( *global_myname )
|
||||
namecount++;
|
||||
|
||||
/* Allocate space for the netbios aliases */
|
||||
@ -477,10 +477,10 @@ static BOOL init_structs(void)
|
||||
return( False );
|
||||
}
|
||||
|
||||
/* Use the myname string first */
|
||||
/* Use the global_myname string first */
|
||||
namecount=0;
|
||||
if ( *myname )
|
||||
my_netbios_names[namecount++] = myname;
|
||||
if ( *global_myname )
|
||||
my_netbios_names[namecount++] = global_myname;
|
||||
|
||||
ptr = lp_netbios_aliases();
|
||||
while ( next_token( &ptr, nbname, NULL ) )
|
||||
@ -508,7 +508,7 @@ static BOOL init_structs(void)
|
||||
/* Terminate name list */
|
||||
my_netbios_names[namecount++] = NULL;
|
||||
|
||||
fstrcpy( local_machine, myname );
|
||||
fstrcpy( local_machine, global_myname );
|
||||
trim_string( local_machine, " ", " " );
|
||||
p = strchr( local_machine, ' ' );
|
||||
if (p)
|
||||
@ -615,8 +615,8 @@ int main(int argc,char *argv[])
|
||||
pstrcpy(host_file,optarg);
|
||||
break;
|
||||
case 'n':
|
||||
pstrcpy(myname,optarg);
|
||||
strupper(myname);
|
||||
pstrcpy(global_myname,optarg);
|
||||
strupper(global_myname);
|
||||
break;
|
||||
case 'l':
|
||||
sprintf(debugf,"%s.nmb",optarg);
|
||||
@ -674,9 +674,9 @@ int main(int argc,char *argv[])
|
||||
|
||||
reload_services( True );
|
||||
|
||||
fstrcpy( myworkgroup, lp_workgroup() );
|
||||
fstrcpy( global_myworkgroup, lp_workgroup() );
|
||||
|
||||
if (strequal(myworkgroup,"*"))
|
||||
if (strequal(global_myworkgroup,"*"))
|
||||
{
|
||||
DEBUG(0,("ERROR: a workgroup name of * is no longer supported\n"));
|
||||
exit(1);
|
||||
|
@ -27,8 +27,8 @@
|
||||
extern int DEBUGLEVEL;
|
||||
|
||||
extern pstring scope;
|
||||
extern pstring myname;
|
||||
extern fstring myworkgroup;
|
||||
extern pstring global_myname;
|
||||
extern fstring global_myworkgroup;
|
||||
extern char **my_netbios_names;
|
||||
extern struct in_addr ipzero;
|
||||
extern struct in_addr allones_ip;
|
||||
@ -56,11 +56,11 @@ static void unbecome_dmb_success(struct subnet_record *subrec,
|
||||
return;
|
||||
}
|
||||
|
||||
if((servrec = find_server_in_workgroup( work, myname)) == NULL)
|
||||
if((servrec = find_server_in_workgroup( work, global_myname)) == NULL)
|
||||
{
|
||||
DEBUG(0,("unbecome_dmb_success: Error - cannot find server %s \
|
||||
in workgroup %s on subnet %s\n",
|
||||
myname, released_name->name, subrec->subnet_name));
|
||||
global_myname, released_name->name, subrec->subnet_name));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -82,7 +82,7 @@ in workgroup %s on subnet %s\n",
|
||||
putip((char *)&work->dmb_addr, &ipzero);
|
||||
|
||||
DEBUG(0,("\n%s ***** Samba server %s has stopped being a domain master browser \
|
||||
for workgroup %s on subnet %s *****\n\n", timestring(), myname, work->work_group, subrec->subnet_name));
|
||||
for workgroup %s on subnet %s *****\n\n", timestring(), global_myname, work->work_group, subrec->subnet_name));
|
||||
|
||||
}
|
||||
|
||||
@ -157,11 +157,11 @@ workgroup %s on subnet %s\n", fail_name->name, subrec->subnet_name));
|
||||
/* Set the state back to DOMAIN_NONE. */
|
||||
work->dom_state = DOMAIN_NONE;
|
||||
|
||||
if((servrec = find_server_in_workgroup( work, myname)) == NULL)
|
||||
if((servrec = find_server_in_workgroup( work, global_myname)) == NULL)
|
||||
{
|
||||
DEBUG(0,("become_domain_master_fail: Error - cannot find server %s \
|
||||
in workgroup %s on subnet %s\n",
|
||||
myname, work->work_group, subrec->subnet_name));
|
||||
global_myname, work->work_group, subrec->subnet_name));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -196,11 +196,11 @@ workgroup %s on subnet %s\n", registered_name->name, subrec->subnet_name));
|
||||
return;
|
||||
}
|
||||
|
||||
if((servrec = find_server_in_workgroup( work, myname)) == NULL)
|
||||
if((servrec = find_server_in_workgroup( work, global_myname)) == NULL)
|
||||
{
|
||||
DEBUG(0,("become_domain_master_stage2: Error - cannot find server %s \
|
||||
in workgroup %s on subnet %s\n",
|
||||
myname, registered_name->name, subrec->subnet_name));
|
||||
global_myname, registered_name->name, subrec->subnet_name));
|
||||
work->dom_state = DOMAIN_NONE;
|
||||
return;
|
||||
}
|
||||
@ -215,7 +215,7 @@ in workgroup %s on subnet %s\n",
|
||||
subrec->work_changed = True;
|
||||
|
||||
DEBUG(0,("\n%s ***** Samba server %s is now a domain master browser for \
|
||||
workgroup %s on subnet %s *****\n\n", timestring(),myname, work->work_group,
|
||||
workgroup %s on subnet %s *****\n\n", timestring(),global_myname, work->work_group,
|
||||
subrec->subnet_name));
|
||||
|
||||
if(subrec == unicast_subnet)
|
||||
@ -228,7 +228,7 @@ subrec->subnet_name));
|
||||
will stop us syncing with ourself if we are also
|
||||
a local master browser. */
|
||||
|
||||
make_nmb_name(&nmbname, myname, 0x20, scope);
|
||||
make_nmb_name(&nmbname, global_myname, 0x20, scope);
|
||||
|
||||
work->dmb_name = nmbname;
|
||||
/* Pick the first interface ip address as the domain master browser ip. */
|
||||
@ -464,9 +464,9 @@ void add_domain_names(time_t t)
|
||||
1.9.16p2 to 1.9.16p11 - due to a bug in namelogon.c,
|
||||
cannot provide domain master / domain logon services.
|
||||
*/
|
||||
become_domain_master_browser_wins(myworkgroup);
|
||||
become_domain_master_browser_wins(global_myworkgroup);
|
||||
}
|
||||
else
|
||||
become_domain_master_browser_bcast(myworkgroup);
|
||||
become_domain_master_browser_bcast(global_myworkgroup);
|
||||
}
|
||||
}
|
||||
|
@ -26,7 +26,7 @@
|
||||
|
||||
extern int DEBUGLEVEL;
|
||||
extern pstring scope;
|
||||
extern pstring myname;
|
||||
extern pstring global_myname;
|
||||
|
||||
extern uint16 samba_nb_type; /* Samba's NetBIOS name type. */
|
||||
|
||||
@ -90,11 +90,11 @@ subnet %s.\n", workgroup_name, subrec->subnet_name ));
|
||||
return;
|
||||
}
|
||||
|
||||
if((servrec = find_server_in_workgroup( work, myname)) == NULL)
|
||||
if((servrec = find_server_in_workgroup( work, global_myname)) == NULL)
|
||||
{
|
||||
DEBUG(0,("reset_workgroup_state: Error - cannot find server %s \
|
||||
in workgroup %s on subnet %s\n",
|
||||
myname, work->work_group, subrec->subnet_name));
|
||||
global_myname, work->work_group, subrec->subnet_name));
|
||||
work->mst_state = lp_local_master() ? MST_POTENTIAL : MST_NONE;
|
||||
return;
|
||||
}
|
||||
@ -146,7 +146,7 @@ void unbecome_local_master_success(struct subnet_record *subrec,
|
||||
reset_workgroup_state( subrec, released_name->name );
|
||||
|
||||
DEBUG(0,("\n%s ***** Samba name server %s has stopped being a local master browser for workgroup %s \
|
||||
on subnet %s *****\n\n", timestring(), myname, released_name->name, subrec->subnet_name));
|
||||
on subnet %s *****\n\n", timestring(), global_myname, released_name->name, subrec->subnet_name));
|
||||
|
||||
}
|
||||
|
||||
@ -171,7 +171,7 @@ Removing from namelist anyway.\n", namestr(fail_name)));
|
||||
reset_workgroup_state( subrec, fail_name->name );
|
||||
|
||||
DEBUG(0,("\n%s ***** Samba name server %s has stopped being a local master browser for workgroup %s \
|
||||
on subnet %s *****\n\n", timestring(), myname, fail_name->name, subrec->subnet_name));
|
||||
on subnet %s *****\n\n", timestring(), global_myname, fail_name->name, subrec->subnet_name));
|
||||
|
||||
}
|
||||
|
||||
@ -254,11 +254,11 @@ void unbecome_local_master_browser(struct subnet_record *subrec, struct work_rec
|
||||
DEBUG(2,("unbecome_local_master_browser: unbecoming local master for workgroup %s \
|
||||
on subnet %s\n",work->work_group, subrec->subnet_name));
|
||||
|
||||
if((servrec = find_server_in_workgroup( work, myname)) == NULL)
|
||||
if((servrec = find_server_in_workgroup( work, global_myname)) == NULL)
|
||||
{
|
||||
DEBUG(0,("unbecome_local_master_browser: Error - cannot find server %s \
|
||||
in workgroup %s on subnet %s\n",
|
||||
myname, work->work_group, subrec->subnet_name));
|
||||
global_myname, work->work_group, subrec->subnet_name));
|
||||
work->mst_state = lp_local_master() ? MST_POTENTIAL : MST_NONE;
|
||||
return;
|
||||
}
|
||||
@ -314,11 +314,11 @@ workgroup %s on subnet %s\n", registered_name->name, subrec->subnet_name));
|
||||
return;
|
||||
}
|
||||
|
||||
if((servrec = find_server_in_workgroup( work, myname)) == NULL)
|
||||
if((servrec = find_server_in_workgroup( work, global_myname)) == NULL)
|
||||
{
|
||||
DEBUG(0,("become_local_master_stage2: Error - cannot find server %s \
|
||||
in workgroup %s on subnet %s\n",
|
||||
myname, registered_name->name, subrec->subnet_name));
|
||||
global_myname, registered_name->name, subrec->subnet_name));
|
||||
work->mst_state = lp_local_master() ? MST_POTENTIAL : MST_NONE;
|
||||
return;
|
||||
}
|
||||
@ -336,7 +336,7 @@ on subnet %s\n", work->work_group, subrec->subnet_name));
|
||||
subrec->work_changed = True;
|
||||
|
||||
/* Add this name to the workgroup as local master browser. */
|
||||
set_workgroup_local_master_browser_name( work, myname);
|
||||
set_workgroup_local_master_browser_name( work, global_myname);
|
||||
|
||||
/* Count the number of servers we have on our list. If it's
|
||||
less than 10 (just a heuristic) request the servers
|
||||
@ -369,7 +369,7 @@ on subnet %s\n", work->work_group, subrec->subnet_name));
|
||||
reset_announce_timer();
|
||||
|
||||
DEBUG(0,("\n%s ***** Samba name server %s is now a local master browser for workgroup %s \
|
||||
on subnet %s *****\n\n", timestring(), myname, work->work_group, subrec->subnet_name));
|
||||
on subnet %s *****\n\n", timestring(), global_myname, work->work_group, subrec->subnet_name));
|
||||
|
||||
}
|
||||
|
||||
@ -456,11 +456,11 @@ workgroup %s on subnet %s\n", work_name, subrec->subnet_name));
|
||||
return;
|
||||
}
|
||||
|
||||
if((servrec = find_server_in_workgroup(work, myname)) == NULL)
|
||||
if((servrec = find_server_in_workgroup(work, global_myname)) == NULL)
|
||||
{
|
||||
DEBUG(0,("become_local_master_fail1: Error - cannot find server %s \
|
||||
in workgroup %s on subnet %s\n",
|
||||
myname, work->work_group, subrec->subnet_name));
|
||||
global_myname, work->work_group, subrec->subnet_name));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -499,11 +499,11 @@ void become_local_master_browser(struct subnet_record *subrec, struct work_recor
|
||||
return;
|
||||
}
|
||||
|
||||
if((servrec = find_server_in_workgroup( work, myname)) == NULL)
|
||||
if((servrec = find_server_in_workgroup( work, global_myname)) == NULL)
|
||||
{
|
||||
DEBUG(0,("become_local_master_browser: Error - cannot find server %s \
|
||||
in workgroup %s on subnet %s\n",
|
||||
myname, work->work_group, subrec->subnet_name));
|
||||
global_myname, work->work_group, subrec->subnet_name));
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -28,8 +28,8 @@
|
||||
extern int DEBUGLEVEL;
|
||||
extern pstring scope;
|
||||
extern struct in_addr ipzero;
|
||||
extern pstring myname;
|
||||
extern fstring myworkgroup;
|
||||
extern pstring global_myname;
|
||||
extern fstring global_myworkgroup;
|
||||
|
||||
/* This is our local master browser list database. */
|
||||
extern struct browse_cache_record *lmb_browserlist;
|
||||
@ -244,7 +244,7 @@ Do not announce to ourselves.\n", work->work_group ));
|
||||
CVAL(p,0) = ANN_MasterAnnouncement;
|
||||
p++;
|
||||
|
||||
StrnCpy(p,myname,15);
|
||||
StrnCpy(p,global_myname,15);
|
||||
strupper(p);
|
||||
p = skip_string(p,1);
|
||||
|
||||
@ -252,7 +252,7 @@ Do not announce to ourselves.\n", work->work_group ));
|
||||
to %s for workgroup %s.\n", namestr(&work->dmb_name), work->work_group ));
|
||||
|
||||
send_mailslot(True, BROWSE_MAILSLOT, outbuf,PTR_DIFF(p,outbuf),
|
||||
myname, 0x0, work->dmb_name.name, 0x0, work->dmb_addr, FIRST_SUBNET->myip);
|
||||
global_myname, 0x0, work->dmb_name.name, 0x0, work->dmb_addr, FIRST_SUBNET->myip);
|
||||
|
||||
}
|
||||
|
||||
@ -640,10 +640,10 @@ void collect_all_workgroup_names_from_wins_server(time_t t)
|
||||
return;
|
||||
|
||||
/* Check to see if we are a domain master browser on the unicast subnet. */
|
||||
if((work = find_workgroup_on_subnet( unicast_subnet, myworkgroup)) == NULL)
|
||||
if((work = find_workgroup_on_subnet( unicast_subnet, global_myworkgroup)) == NULL)
|
||||
{
|
||||
DEBUG(0,("collect_all_workgroup_names_from_wins_server: Cannot find my workgroup %s on subnet %s.\n",
|
||||
myworkgroup, unicast_subnet->subnet_name ));
|
||||
global_myworkgroup, unicast_subnet->subnet_name ));
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -26,8 +26,8 @@
|
||||
|
||||
extern int DEBUGLEVEL;
|
||||
|
||||
extern pstring myname;
|
||||
extern fstring myworkgroup;
|
||||
extern pstring global_myname;
|
||||
extern fstring global_myworkgroup;
|
||||
|
||||
/* Election parameters. */
|
||||
extern time_t StartupTime;
|
||||
@ -95,7 +95,7 @@ static void check_for_master_browser_fail( struct subnet_record *subrec,
|
||||
return;
|
||||
}
|
||||
|
||||
if (strequal(work->work_group, myworkgroup))
|
||||
if (strequal(work->work_group, global_myworkgroup))
|
||||
{
|
||||
|
||||
if (lp_local_master())
|
||||
@ -117,7 +117,7 @@ static void check_for_master_browser_fail( struct subnet_record *subrec,
|
||||
not to become the local master, but we still need one,
|
||||
having detected that one doesn't exist.
|
||||
*/
|
||||
send_election_dgram(subrec, work->work_group, 0, 0, myname);
|
||||
send_election_dgram(subrec, work->work_group, 0, 0, global_myname);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -131,7 +131,7 @@ void check_master_browser_exists(time_t t)
|
||||
{
|
||||
static time_t lastrun=0;
|
||||
struct subnet_record *subrec;
|
||||
char *workgroup_name = myworkgroup;
|
||||
char *workgroup_name = global_myworkgroup;
|
||||
|
||||
if (!lastrun)
|
||||
lastrun = t;
|
||||
@ -186,7 +186,7 @@ void run_elections(time_t t)
|
||||
if (work->RunningElection)
|
||||
{
|
||||
send_election_dgram(subrec, work->work_group, work->ElectionCriterion,
|
||||
t - StartupTime, myname);
|
||||
t - StartupTime, global_myname);
|
||||
|
||||
if (work->ElectionCount++ >= 4)
|
||||
{
|
||||
@ -225,7 +225,7 @@ static BOOL win_election(struct work_record *work, int version,
|
||||
version, ELECTION_VERSION,
|
||||
criterion, mycriterion,
|
||||
timeup, mytimeup,
|
||||
server_name, myname));
|
||||
server_name, global_myname));
|
||||
|
||||
if (version > ELECTION_VERSION)
|
||||
return(False);
|
||||
@ -242,7 +242,7 @@ static BOOL win_election(struct work_record *work, int version,
|
||||
if (timeup < mytimeup)
|
||||
return(True);
|
||||
|
||||
if (strcasecmp(myname, server_name) > 0)
|
||||
if (strcasecmp(global_myname, server_name) > 0)
|
||||
return(False);
|
||||
|
||||
return(True);
|
||||
@ -276,7 +276,7 @@ void process_election(struct subnet_record *subrec, struct packet_struct *p, cha
|
||||
return;
|
||||
}
|
||||
|
||||
if (!strequal(work->work_group, myworkgroup))
|
||||
if (!strequal(work->work_group, global_myworkgroup))
|
||||
{
|
||||
DEBUG(3,("process_election: ignoring election request for workgroup %s on subnet %s as this \
|
||||
is not my workgroup.\n", work->work_group, subrec->subnet_name ));
|
||||
|
@ -26,8 +26,8 @@
|
||||
|
||||
extern int DEBUGLEVEL;
|
||||
|
||||
extern pstring myname;
|
||||
extern fstring myworkgroup;
|
||||
extern pstring global_myname;
|
||||
extern fstring global_myworkgroup;
|
||||
extern BOOL found_lm_clients;
|
||||
|
||||
#if 0
|
||||
@ -143,8 +143,8 @@ void process_host_announce(struct subnet_record *subrec, struct packet_struct *p
|
||||
* to be our primary workgroup name.
|
||||
*/
|
||||
|
||||
if(strequal(work_name, myname))
|
||||
work_name = myworkgroup;
|
||||
if(strequal(work_name, global_myname))
|
||||
work_name = global_myworkgroup;
|
||||
|
||||
/*
|
||||
* We are being very agressive here in adding a workgroup
|
||||
@ -391,10 +391,10 @@ master - ignoring master announce.\n"));
|
||||
return;
|
||||
}
|
||||
|
||||
if((work = find_workgroup_on_subnet(subrec, myworkgroup)) == NULL)
|
||||
if((work = find_workgroup_on_subnet(subrec, global_myworkgroup)) == NULL)
|
||||
{
|
||||
DEBUG(0,("process_master_browser_announce: Cannot find workgroup %s on subnet %s\n",
|
||||
myworkgroup, subrec->subnet_name));
|
||||
global_myworkgroup, subrec->subnet_name));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -481,8 +481,8 @@ originate from OS/2 Warp client. Ignoring packet.\n"));
|
||||
* not needed in the LanMan announce code, but it won't hurt.
|
||||
*/
|
||||
|
||||
if(strequal(work_name, myname))
|
||||
work_name = myworkgroup;
|
||||
if(strequal(work_name, global_myname))
|
||||
work_name = global_myworkgroup;
|
||||
|
||||
/*
|
||||
* We are being very agressive here in adding a workgroup
|
||||
@ -571,7 +571,7 @@ static void send_backup_list_response(struct subnet_record *subrec,
|
||||
|
||||
/* We always return at least one name - our own. */
|
||||
count = 1;
|
||||
StrnCpy(p,myname,15);
|
||||
StrnCpy(p,global_myname,15);
|
||||
strupper(p);
|
||||
p = skip_string(p,1);
|
||||
|
||||
@ -585,7 +585,7 @@ static void send_backup_list_response(struct subnet_record *subrec,
|
||||
if(count >= (unsigned int)max_number_requested)
|
||||
break;
|
||||
|
||||
if(strnequal(servrec->serv.name, myname,15))
|
||||
if(strnequal(servrec->serv.name, global_myname,15))
|
||||
continue;
|
||||
|
||||
if(!(servrec->serv.type & SV_TYPE_BACKUP_BROWSER))
|
||||
@ -610,7 +610,7 @@ static void send_backup_list_response(struct subnet_record *subrec,
|
||||
|
||||
send_mailslot(True, BROWSE_MAILSLOT,
|
||||
outbuf,PTR_DIFF(p,outbuf),
|
||||
myname, 0,
|
||||
global_myname, 0,
|
||||
send_to_name->name,0,
|
||||
sendto_ip, subrec->myip);
|
||||
}
|
||||
@ -643,7 +643,7 @@ void process_get_backup_list_request(struct subnet_record *subrec,
|
||||
for the requested workgroup. That means it must be our
|
||||
workgroup. */
|
||||
|
||||
if(strequal(workgroup_name, myworkgroup) == False)
|
||||
if(strequal(workgroup_name, global_myworkgroup) == False)
|
||||
{
|
||||
DEBUG(7,("process_get_backup_list_request: Ignoring announce request for workgroup %s.\n",
|
||||
workgroup_name));
|
||||
@ -769,7 +769,7 @@ void process_announce_request(struct subnet_record *subrec, struct packet_struct
|
||||
namestr(&dgram->dest_name)));
|
||||
|
||||
/* We only send announcement requests on our workgroup. */
|
||||
if(strequal(workgroup_name, myworkgroup) == False)
|
||||
if(strequal(workgroup_name, global_myworkgroup) == False)
|
||||
{
|
||||
DEBUG(7,("process_announce_request: Ignoring announce request for workgroup %s.\n",
|
||||
workgroup_name));
|
||||
@ -806,7 +806,7 @@ void process_lm_announce_request(struct subnet_record *subrec, struct packet_str
|
||||
namestr(&dgram->dest_name)));
|
||||
|
||||
/* We only send announcement requests on our workgroup. */
|
||||
if(strequal(workgroup_name, myworkgroup) == False)
|
||||
if(strequal(workgroup_name, global_myworkgroup) == False)
|
||||
{
|
||||
DEBUG(7,("process_lm_announce_request: Ignoring announce request for workgroup %s.\n",
|
||||
workgroup_name));
|
||||
|
@ -29,7 +29,7 @@
|
||||
#include "includes.h"
|
||||
|
||||
extern int DEBUGLEVEL;
|
||||
extern fstring myworkgroup;
|
||||
extern fstring global_myworkgroup;
|
||||
|
||||
/****************************************************************************
|
||||
Send a name release response.
|
||||
@ -102,7 +102,7 @@ subnet %s from owner IP %s\n",
|
||||
* names and *don't set the group bit* !!!!!
|
||||
*/
|
||||
|
||||
if( !group && !ismyip(owner_ip) && strequal(question->name, myworkgroup) &&
|
||||
if( !group && !ismyip(owner_ip) && strequal(question->name, global_myworkgroup) &&
|
||||
((question->name_type == 0x0) || (question->name_type == 0x1e)))
|
||||
{
|
||||
DEBUG(6,("process_name_release_request: FTP OnNet bug workaround. Ignoring \
|
||||
@ -290,20 +290,20 @@ We put our own names first, then in alphabetical order.
|
||||
|
||||
static int status_compare(char *n1,char *n2)
|
||||
{
|
||||
extern pstring myname;
|
||||
extern pstring global_myname;
|
||||
int l1,l2,l3;
|
||||
|
||||
/* It's a bit tricky because the names are space padded */
|
||||
for (l1=0;l1<15 && n1[l1] && n1[l1] != ' ';l1++) ;
|
||||
for (l2=0;l2<15 && n2[l2] && n2[l2] != ' ';l2++) ;
|
||||
l3 = strlen(myname);
|
||||
l3 = strlen(global_myname);
|
||||
|
||||
if ((l1==l3) && strncmp(n1,myname,l3) == 0 &&
|
||||
(l2!=l3 || strncmp(n2,myname,l3) != 0))
|
||||
if ((l1==l3) && strncmp(n1,global_myname,l3) == 0 &&
|
||||
(l2!=l3 || strncmp(n2,global_myname,l3) != 0))
|
||||
return -1;
|
||||
|
||||
if ((l2==l3) && strncmp(n2,myname,l3) == 0 &&
|
||||
(l1!=l3 || strncmp(n1,myname,l3) != 0))
|
||||
if ((l2==l3) && strncmp(n2,global_myname,l3) == 0 &&
|
||||
(l1!=l3 || strncmp(n1,global_myname,l3) != 0))
|
||||
return 1;
|
||||
|
||||
return memcmp(n1,n2,18);
|
||||
|
@ -27,8 +27,8 @@
|
||||
extern int DEBUGLEVEL;
|
||||
|
||||
extern pstring scope;
|
||||
extern pstring myname;
|
||||
extern fstring myworkgroup;
|
||||
extern pstring global_myname;
|
||||
extern fstring global_myworkgroup;
|
||||
extern char **my_netbios_names;
|
||||
extern struct in_addr ipzero;
|
||||
extern struct in_addr allones_ip;
|
||||
@ -52,11 +52,11 @@ workgroup %s on subnet %s\n", fail_name->name, subrec->subnet_name));
|
||||
return;
|
||||
}
|
||||
|
||||
if((servrec = find_server_in_workgroup( work, myname)) == NULL)
|
||||
if((servrec = find_server_in_workgroup( work, global_myname)) == NULL)
|
||||
{
|
||||
DEBUG(0,("become_logon_server_fail: Error - cannot find server %s \
|
||||
in workgroup %s on subnet %s\n",
|
||||
myname, fail_name->name, subrec->subnet_name));
|
||||
global_myname, fail_name->name, subrec->subnet_name));
|
||||
work->log_state = LOGON_NONE;
|
||||
return;
|
||||
}
|
||||
@ -92,11 +92,11 @@ workgroup %s on subnet %s\n", registered_name->name, subrec->subnet_name));
|
||||
return;
|
||||
}
|
||||
|
||||
if((servrec = find_server_in_workgroup( work, myname)) == NULL)
|
||||
if((servrec = find_server_in_workgroup( work, global_myname)) == NULL)
|
||||
{
|
||||
DEBUG(0,("become_logon_server_success: Error - cannot find server %s \
|
||||
in workgroup %s on subnet %s\n",
|
||||
myname, registered_name->name, subrec->subnet_name));
|
||||
global_myname, registered_name->name, subrec->subnet_name));
|
||||
work->log_state = LOGON_NONE;
|
||||
return;
|
||||
}
|
||||
@ -147,17 +147,17 @@ void add_logon_names(void)
|
||||
|
||||
for (subrec = FIRST_SUBNET; subrec; subrec = NEXT_SUBNET_INCLUDING_UNICAST(subrec))
|
||||
{
|
||||
struct work_record *work = find_workgroup_on_subnet(subrec, myworkgroup);
|
||||
struct work_record *work = find_workgroup_on_subnet(subrec, global_myworkgroup);
|
||||
|
||||
if (work && (work->log_state == LOGON_NONE))
|
||||
{
|
||||
struct nmb_name nmbname;
|
||||
make_nmb_name(&nmbname,myworkgroup,0x1c,scope);
|
||||
make_nmb_name(&nmbname,global_myworkgroup,0x1c,scope);
|
||||
|
||||
if (find_name_on_subnet(subrec, &nmbname, FIND_SELF_NAME) == NULL)
|
||||
{
|
||||
DEBUG(0,("add_domain_logon_names: At time %s attempting to become \
|
||||
logon server for workgroup %s on subnet %s\n", timestring(), myworkgroup,
|
||||
logon server for workgroup %s on subnet %s\n", timestring(), global_myworkgroup,
|
||||
subrec->subnet_name));
|
||||
become_logon_server(subrec, work);
|
||||
}
|
||||
|
@ -27,8 +27,7 @@
|
||||
extern int DEBUGLEVEL;
|
||||
|
||||
extern char **my_netbios_names;
|
||||
extern pstring myname;
|
||||
extern fstring myworkgroup;
|
||||
extern fstring global_myworkgroup;
|
||||
extern pstring scope;
|
||||
|
||||
extern uint16 samba_nb_type; /* Samba's NetBIOS type. */
|
||||
@ -58,10 +57,10 @@ BOOL register_my_workgroup_and_names(void)
|
||||
for(subrec = FIRST_SUBNET; subrec; subrec = NEXT_SUBNET_INCLUDING_UNICAST(subrec))
|
||||
{
|
||||
/* Create the workgroup on the subnet. */
|
||||
if((work = create_workgroup_on_subnet(subrec, myworkgroup, PERMANENT_TTL)) == NULL)
|
||||
if((work = create_workgroup_on_subnet(subrec, global_myworkgroup, PERMANENT_TTL)) == NULL)
|
||||
{
|
||||
DEBUG(0,("register_my_workgroup_and_names: Failed to create my workgroup %s on subnet %s. \
|
||||
Exiting.\n", myworkgroup, subrec->subnet_name));
|
||||
Exiting.\n", global_myworkgroup, subrec->subnet_name));
|
||||
return False;
|
||||
}
|
||||
|
||||
@ -128,10 +127,10 @@ Exiting.\n", myworkgroup, subrec->subnet_name));
|
||||
*/
|
||||
struct nmb_name nmbname;
|
||||
|
||||
make_nmb_name(&nmbname, myworkgroup, 0x0, scope);
|
||||
make_nmb_name(&nmbname, global_myworkgroup, 0x0, scope);
|
||||
insert_permanent_name_into_unicast(subrec, &nmbname, samba_nb_type|NB_GROUP);
|
||||
|
||||
make_nmb_name(&nmbname, myworkgroup, 0x1e, scope);
|
||||
make_nmb_name(&nmbname, global_myworkgroup, 0x1e, scope);
|
||||
insert_permanent_name_into_unicast(subrec, &nmbname, samba_nb_type|NB_GROUP);
|
||||
}
|
||||
}
|
||||
|
@ -27,7 +27,7 @@
|
||||
extern int DEBUGLEVEL;
|
||||
|
||||
extern pstring scope;
|
||||
extern fstring myworkgroup;
|
||||
extern fstring global_myworkgroup;
|
||||
|
||||
/****************************************************************************
|
||||
Deal with a response packet when registering one of our names.
|
||||
@ -73,7 +73,7 @@ name %s.\n", namestr(answer_name), namestr(question_name)));
|
||||
*/
|
||||
|
||||
#if 1 /* OLD_SAMBA_SERVER_HACK */
|
||||
if((nmb->header.rcode == ACT_ERR) && strequal(myworkgroup, answer_name->name) &&
|
||||
if((nmb->header.rcode == ACT_ERR) && strequal(global_myworkgroup, answer_name->name) &&
|
||||
(answer_name->name_type == 0x1b))
|
||||
{
|
||||
/* Pretend we did not get this. */
|
||||
|
@ -28,8 +28,8 @@
|
||||
|
||||
extern int DEBUGLEVEL;
|
||||
|
||||
extern pstring myname;
|
||||
extern fstring myworkgroup;
|
||||
extern pstring global_myname;
|
||||
extern fstring global_myworkgroup;
|
||||
|
||||
/****************************************************************************
|
||||
Process a domain logon packet
|
||||
@ -68,7 +68,7 @@ logons are not enabled.\n", inet_ntoa(p->ip) ));
|
||||
return;
|
||||
}
|
||||
|
||||
strcpy(my_name, myname);
|
||||
strcpy(my_name, global_myname);
|
||||
strupper(my_name);
|
||||
|
||||
code = SVAL(buf,0);
|
||||
@ -145,7 +145,7 @@ logons are not enabled.\n", inet_ntoa(p->ip) ));
|
||||
|
||||
PutUniCode(q, my_name); /* PDC name */
|
||||
q = skip_unicode_string(q, 1);
|
||||
PutUniCode(q, myworkgroup); /* Domain name*/
|
||||
PutUniCode(q, global_myworkgroup); /* Domain name*/
|
||||
q = skip_unicode_string(q, 1);
|
||||
|
||||
SIVAL(q, 0, ntversion); q += 4;
|
||||
@ -218,7 +218,7 @@ reporting %s domain %s 0x%x ntversion=%x lm_nt token=%x lm_20 token=%x\n",
|
||||
else
|
||||
{
|
||||
DEBUG(3,("process_logon_packet: SAMLOGON request from %s(%s) for %s, returning logon svr %s domain %s code %x token=%x\n",
|
||||
unistr(unicomp),inet_ntoa(p->ip), ascuser, reply_name, myworkgroup,
|
||||
unistr(unicomp),inet_ntoa(p->ip), ascuser, reply_name, global_myworkgroup,
|
||||
SAMLOGON_R ,lmnttoken));
|
||||
}
|
||||
|
||||
|
@ -29,7 +29,6 @@ extern int ClientNMB;
|
||||
extern int DEBUGLEVEL;
|
||||
|
||||
extern pstring scope;
|
||||
extern pstring myname;
|
||||
extern struct in_addr ipzero;
|
||||
|
||||
int num_response_packets = 0;
|
||||
|
@ -28,8 +28,8 @@
|
||||
#include "includes.h"
|
||||
|
||||
extern int DEBUGLEVEL;
|
||||
extern pstring myname;
|
||||
extern fstring myworkgroup;
|
||||
extern pstring global_myname;
|
||||
extern fstring global_myworkgroup;
|
||||
extern char **my_netbios_names;
|
||||
extern int updatecount;
|
||||
extern BOOL found_lm_clients;
|
||||
@ -54,7 +54,7 @@ void send_browser_reset(int reset_type, char *to_name, int to_type, struct in_ad
|
||||
p++;
|
||||
|
||||
send_mailslot(True, BROWSE_MAILSLOT, outbuf,PTR_DIFF(p,outbuf),
|
||||
myname, 0x0, to_name, to_type, to_ip, FIRST_SUBNET->myip);
|
||||
global_myname, 0x0, to_name, to_type, to_ip, FIRST_SUBNET->myip);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
@ -79,12 +79,12 @@ to subnet %s\n", work->work_group, subrec->subnet_name));
|
||||
|
||||
CVAL(p,0) = work->token; /* (local) Unique workgroup token id. */
|
||||
p++;
|
||||
StrnCpy(p,myname,15);
|
||||
StrnCpy(p,global_myname,15);
|
||||
strupper(p);
|
||||
p = skip_string(p,1);
|
||||
|
||||
send_mailslot(False, BROWSE_MAILSLOT, outbuf,PTR_DIFF(p,outbuf),
|
||||
myname, 0x0, work->work_group,0x1e, subrec->bcast_ip, subrec->myip);
|
||||
global_myname, 0x0, work->work_group,0x1e, subrec->bcast_ip, subrec->myip);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
@ -169,14 +169,14 @@ static void send_local_master_announcement(struct subnet_record *subrec, struct
|
||||
uint32 type = servrec->serv.type & ~SV_TYPE_LOCAL_LIST_ONLY;
|
||||
|
||||
DEBUG(3,("send_local_master_announcement: type %x for name %s on subnet %s for workgroup %s\n",
|
||||
type, myname, subrec->subnet_name, work->work_group));
|
||||
type, global_myname, subrec->subnet_name, work->work_group));
|
||||
|
||||
send_announcement(subrec, ANN_LocalMasterAnnouncement,
|
||||
myname, /* From nbt name. */
|
||||
global_myname, /* From nbt name. */
|
||||
work->work_group, 0x1e, /* To nbt name. */
|
||||
subrec->bcast_ip, /* To ip. */
|
||||
work->announce_interval, /* Time until next announce. */
|
||||
myname, /* Name to announce. */
|
||||
global_myname, /* Name to announce. */
|
||||
type, /* Type field. */
|
||||
servrec->serv.comment);
|
||||
}
|
||||
@ -191,13 +191,13 @@ static void send_workgroup_announcement(struct subnet_record *subrec, struct wor
|
||||
subrec->subnet_name, work->work_group));
|
||||
|
||||
send_announcement(subrec, ANN_DomainAnnouncement,
|
||||
myname, /* From nbt name. */
|
||||
global_myname, /* From nbt name. */
|
||||
MSBROWSE, 0x1, /* To nbt name. */
|
||||
subrec->bcast_ip, /* To ip. */
|
||||
work->announce_interval, /* Time until next announce. */
|
||||
work->work_group, /* Name to announce. */
|
||||
SV_TYPE_DOMAIN_ENUM|SV_TYPE_NT, /* workgroup announce flags. */
|
||||
myname); /* From name as comment. */
|
||||
global_myname); /* From name as comment. */
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
@ -256,7 +256,7 @@ static void announce_server(struct subnet_record *subrec, struct work_record *wo
|
||||
/* Only do domain announcements if we are a master and it's
|
||||
our primary name we're being asked to announce. */
|
||||
|
||||
if (AM_LOCAL_MASTER_BROWSER(work) && strequal(myname,servrec->serv.name))
|
||||
if (AM_LOCAL_MASTER_BROWSER(work) && strequal(global_myname,servrec->serv.name))
|
||||
{
|
||||
send_local_master_announcement(subrec, work, servrec);
|
||||
send_workgroup_announcement(subrec, work);
|
||||
@ -278,7 +278,7 @@ void announce_my_server_names(time_t t)
|
||||
|
||||
for (subrec = FIRST_SUBNET; subrec; subrec = NEXT_SUBNET_EXCLUDING_UNICAST(subrec))
|
||||
{
|
||||
struct work_record *work = find_workgroup_on_subnet(subrec, myworkgroup);
|
||||
struct work_record *work = find_workgroup_on_subnet(subrec, global_myworkgroup);
|
||||
|
||||
if(work)
|
||||
{
|
||||
@ -342,7 +342,7 @@ void announce_my_lm_server_names(time_t t)
|
||||
|
||||
for (subrec = FIRST_SUBNET; subrec; subrec = NEXT_SUBNET_EXCLUDING_UNICAST(subrec))
|
||||
{
|
||||
struct work_record *work = find_workgroup_on_subnet(subrec, myworkgroup);
|
||||
struct work_record *work = find_workgroup_on_subnet(subrec, global_myworkgroup);
|
||||
|
||||
if(work)
|
||||
{
|
||||
@ -512,7 +512,7 @@ void announce_remote(time_t t)
|
||||
if (wgroup)
|
||||
*wgroup++ = 0;
|
||||
if (!wgroup || !*wgroup)
|
||||
wgroup = myworkgroup;
|
||||
wgroup = global_myworkgroup;
|
||||
|
||||
addr = *interpret_addr2(s2);
|
||||
|
||||
@ -568,17 +568,17 @@ void browse_sync_remote(time_t t)
|
||||
* for our workgroup on the firsst subnet.
|
||||
*/
|
||||
|
||||
if((work = find_workgroup_on_subnet(FIRST_SUBNET, myworkgroup)) == NULL)
|
||||
if((work = find_workgroup_on_subnet(FIRST_SUBNET, global_myworkgroup)) == NULL)
|
||||
{
|
||||
DEBUG(0,("browse_sync_remote: Cannot find workgroup %s on subnet %s\n",
|
||||
myworkgroup, FIRST_SUBNET->subnet_name ));
|
||||
global_myworkgroup, FIRST_SUBNET->subnet_name ));
|
||||
return;
|
||||
}
|
||||
|
||||
if(!AM_LOCAL_MASTER_BROWSER(work))
|
||||
{
|
||||
DEBUG(5,("browse_sync_remote: We can only do this if we are a local master browser \
|
||||
for workgroup %s on subnet %s.\n", myworkgroup, FIRST_SUBNET->subnet_name ));
|
||||
for workgroup %s on subnet %s.\n", global_myworkgroup, FIRST_SUBNET->subnet_name ));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -587,7 +587,7 @@ for workgroup %s on subnet %s.\n", myworkgroup, FIRST_SUBNET->subnet_name ));
|
||||
CVAL(p,0) = ANN_MasterAnnouncement;
|
||||
p++;
|
||||
|
||||
StrnCpy(p,myname,15);
|
||||
StrnCpy(p,global_myname,15);
|
||||
strupper(p);
|
||||
p = skip_string(p,1);
|
||||
|
||||
@ -597,9 +597,9 @@ for workgroup %s on subnet %s.\n", myworkgroup, FIRST_SUBNET->subnet_name ));
|
||||
addr = *interpret_addr2(s2);
|
||||
|
||||
DEBUG(5,("announce_remote: Doing remote browse sync announce for server %s to IP %s.\n",
|
||||
myname, inet_ntoa(addr) ));
|
||||
global_myname, inet_ntoa(addr) ));
|
||||
|
||||
send_mailslot(True, BROWSE_MAILSLOT, outbuf,PTR_DIFF(p,outbuf),
|
||||
myname, 0x0, "*", 0x0, addr, FIRST_SUBNET->myip);
|
||||
global_myname, 0x0, "*", 0x0, addr, FIRST_SUBNET->myip);
|
||||
}
|
||||
}
|
||||
|
@ -29,8 +29,7 @@ extern int ClientNMB;
|
||||
|
||||
extern int DEBUGLEVEL;
|
||||
|
||||
extern pstring myname;
|
||||
extern fstring myworkgroup;
|
||||
extern fstring global_myworkgroup;
|
||||
extern char **my_netbios_names;
|
||||
|
||||
int updatecount = 0;
|
||||
@ -259,7 +258,7 @@ static uint32 write_this_server_name( struct subnet_record *subrec,
|
||||
|
||||
/*******************************************************************
|
||||
Decide if we should write out a workgroup record for this workgroup.
|
||||
We return zero if we should not. Don't write out myworkgroup (we've
|
||||
We return zero if we should not. Don't write out global_myworkgroup (we've
|
||||
already done it) and also don't write out a second workgroup record
|
||||
on the unicast subnet that we've already written out on one of the
|
||||
broadcast subnets.
|
||||
@ -270,7 +269,7 @@ static uint32 write_this_workgroup_name( struct subnet_record *subrec,
|
||||
{
|
||||
struct subnet_record *ssub;
|
||||
|
||||
if(strequal(myworkgroup, work->work_group))
|
||||
if(strequal(global_myworkgroup, work->work_group))
|
||||
return 0;
|
||||
|
||||
/* This is a workgroup we have seen on a broadcast subnet. All
|
||||
@ -358,10 +357,10 @@ void write_browse_list(time_t t, BOOL force_write)
|
||||
* subnet.
|
||||
*/
|
||||
|
||||
if((work = find_workgroup_on_subnet(FIRST_SUBNET, myworkgroup)) == NULL)
|
||||
if((work = find_workgroup_on_subnet(FIRST_SUBNET, global_myworkgroup)) == NULL)
|
||||
{
|
||||
DEBUG(0,("write_browse_list: Fatal error - cannot find my workgroup %s\n",
|
||||
myworkgroup));
|
||||
global_myworkgroup));
|
||||
fclose(fp);
|
||||
return;
|
||||
}
|
||||
@ -386,7 +385,7 @@ void write_browse_list(time_t t, BOOL force_write)
|
||||
stype = 0;
|
||||
for (subrec = FIRST_SUBNET; subrec ; subrec = NEXT_SUBNET_INCLUDING_UNICAST(subrec))
|
||||
{
|
||||
if((work = find_workgroup_on_subnet( subrec, myworkgroup )) == NULL)
|
||||
if((work = find_workgroup_on_subnet( subrec, global_myworkgroup )) == NULL)
|
||||
continue;
|
||||
if((servrec = find_server_in_workgroup( work, my_netbios_names[i])) == NULL)
|
||||
continue;
|
||||
@ -400,7 +399,7 @@ void write_browse_list(time_t t, BOOL force_write)
|
||||
fprintf(fp, "%08x ", stype);
|
||||
sprintf(tmp, "\"%s\" ", lp_serverstring());
|
||||
fprintf(fp, "%-30s", tmp);
|
||||
fprintf(fp, "\"%s\"\n", myworkgroup);
|
||||
fprintf(fp, "\"%s\"\n", global_myworkgroup);
|
||||
}
|
||||
|
||||
for (subrec = FIRST_SUBNET; subrec ; subrec = NEXT_SUBNET_INCLUDING_UNICAST(subrec))
|
||||
|
@ -33,7 +33,6 @@ extern int global_nmb_port;
|
||||
|
||||
extern int DEBUGLEVEL;
|
||||
|
||||
extern pstring myname;
|
||||
extern fstring myworkgroup;
|
||||
extern char **my_netbios_names;
|
||||
extern struct in_addr ipzero;
|
||||
|
@ -29,8 +29,8 @@ extern int ClientNMB;
|
||||
|
||||
extern int DEBUGLEVEL;
|
||||
|
||||
extern pstring myname;
|
||||
extern fstring myworkgroup;
|
||||
extern pstring global_myname;
|
||||
extern fstring global_myworkgroup;
|
||||
extern char **my_netbios_names;
|
||||
extern uint16 samba_nb_type;
|
||||
extern struct in_addr ipzero;
|
||||
@ -246,7 +246,7 @@ void initiate_myworkgroup_startup(struct subnet_record *subrec, struct work_reco
|
||||
{
|
||||
int i;
|
||||
|
||||
if(!strequal(myworkgroup, work->work_group))
|
||||
if(!strequal(global_myworkgroup, work->work_group))
|
||||
return;
|
||||
|
||||
/* If this is a broadcast subnet then start elections on it
|
||||
@ -264,11 +264,11 @@ workgroup %s on subnet %s\n", work->work_group, subrec->subnet_name));
|
||||
|
||||
/* Register the WORKGROUP<0> and WORKGROUP<1e> names on the network. */
|
||||
|
||||
register_name(subrec,myworkgroup,0x0,samba_nb_type|NB_GROUP,
|
||||
register_name(subrec,global_myworkgroup,0x0,samba_nb_type|NB_GROUP,
|
||||
NULL,
|
||||
fail_register,NULL);
|
||||
|
||||
register_name(subrec,myworkgroup,0x1e,samba_nb_type|NB_GROUP,
|
||||
register_name(subrec,global_myworkgroup,0x1e,samba_nb_type|NB_GROUP,
|
||||
NULL,
|
||||
fail_register,NULL);
|
||||
|
||||
@ -278,7 +278,7 @@ workgroup %s on subnet %s\n", work->work_group, subrec->subnet_name));
|
||||
int stype = lp_default_server_announce() | (lp_local_master() ?
|
||||
SV_TYPE_POTENTIAL_BROWSER : 0 );
|
||||
|
||||
if(!strequal(myname, name))
|
||||
if(!strequal(global_myname, name))
|
||||
stype &= ~(SV_TYPE_MASTER_BROWSER|SV_TYPE_POTENTIAL_BROWSER|
|
||||
SV_TYPE_DOMAIN_MASTER|SV_TYPE_DOMAIN_MEMBER);
|
||||
|
||||
|
@ -69,7 +69,7 @@ BOOL bLoaded = False;
|
||||
|
||||
extern int DEBUGLEVEL;
|
||||
extern pstring user_socket_options;
|
||||
extern pstring myname;
|
||||
extern pstring global_myname;
|
||||
|
||||
#ifndef GLOBAL_NAME
|
||||
#define GLOBAL_NAME "global"
|
||||
@ -432,7 +432,7 @@ static struct parm_struct parm_table[] =
|
||||
{"path", P_STRING, P_LOCAL, &sDefault.szPath, NULL, NULL, FLAG_BASIC|FLAG_PRINT},
|
||||
{"directory", P_STRING, P_LOCAL, &sDefault.szPath, NULL, NULL, 0},
|
||||
{"workgroup", P_USTRING, P_GLOBAL, &Globals.szWorkGroup, NULL, NULL, FLAG_BASIC},
|
||||
{"netbios name", P_UGSTRING,P_GLOBAL, myname, NULL, NULL, FLAG_BASIC},
|
||||
{"netbios name", P_UGSTRING,P_GLOBAL, global_myname, NULL, NULL, FLAG_BASIC},
|
||||
{"netbios aliases", P_STRING, P_GLOBAL, &Globals.szNetbiosAliases, NULL, NULL, 0},
|
||||
{"server string", P_STRING, P_GLOBAL, &Globals.szServerString, NULL, NULL, FLAG_BASIC},
|
||||
{"interfaces", P_STRING, P_GLOBAL, &Globals.szInterfaces, NULL, NULL, FLAG_BASIC},
|
||||
|
@ -26,13 +26,10 @@
|
||||
extern int DEBUGLEVEL;
|
||||
|
||||
/****************************************************************************
|
||||
Initialize domain session.
|
||||
Initialize domain session credentials.
|
||||
****************************************************************************/
|
||||
|
||||
BOOL do_nt_session_open(struct cli_state *cli, uint16 fnum,
|
||||
char *dest_host, char *myhostname,
|
||||
char *mach_acct,
|
||||
uchar sess_key[16], DOM_CRED *clnt_cred)
|
||||
BOOL cli_nt_setup_creds(struct cli_state *cli, unsigned char mach_pwd[16])
|
||||
{
|
||||
DOM_CHAL clnt_chal;
|
||||
DOM_CHAL srv_chal;
|
||||
@ -41,57 +38,19 @@ BOOL do_nt_session_open(struct cli_state *cli, uint16 fnum,
|
||||
|
||||
UTIME zerotime;
|
||||
|
||||
char nt_owf_mach_pwd[16];
|
||||
|
||||
RPC_IFACE abstract;
|
||||
RPC_IFACE transfer;
|
||||
|
||||
fstring mach_pwd;
|
||||
fstring dest_srv;
|
||||
|
||||
/******************** initialise ********************************/
|
||||
|
||||
zerotime.time = 0;
|
||||
|
||||
DEBUG(10,("do_nt_session_open: %d\n", __LINE__));
|
||||
|
||||
/**************** Set Named Pipe State ***************/
|
||||
if (!rpc_pipe_set_hnd_state(cli, PIPE_NETLOGON, fnum, 0x4300))
|
||||
{
|
||||
DEBUG(0,("do_nt_session_open: pipe hnd state failed\n"));
|
||||
return False;
|
||||
}
|
||||
|
||||
/******************* bind request on \PIPE\NETLOGON *****************/
|
||||
|
||||
if (!rpc_pipe_bind(cli, PIPE_NETLOGON, fnum, &abstract, &transfer,
|
||||
False, NULL, NULL))
|
||||
{
|
||||
DEBUG(0,("do_nt_session_open: rpc bind failed\n"));
|
||||
return False;
|
||||
}
|
||||
|
||||
/************ Check workstation trust account *******************/
|
||||
|
||||
FIXME !!
|
||||
/* default machine password is lower-case machine name (really secure) */
|
||||
fstrcpy(mach_pwd, myhostname);
|
||||
strlower(mach_pwd);
|
||||
|
||||
/* default machine password is lower-case machine name (really secure) */
|
||||
fstrcpy(prev_mpd, myhostname);
|
||||
strlower(prev_mpd);
|
||||
|
||||
/******************* Request Challenge ********************/
|
||||
|
||||
generate_random_buffer( clnt_chal.data, 8, False);
|
||||
|
||||
strcpy(dest_srv, "\\\\");
|
||||
strcat(dest_srv, dest_host);
|
||||
strupper(dest_srv);
|
||||
|
||||
/* send a client challenge; receive a server challenge */
|
||||
if (!do_net_req_chal(cli, fnum, dest_srv, myhostname, &clnt_chal, &srv_chal))
|
||||
if (!cli_net_req_chal(cli, &clnt_chal, &srv_chal))
|
||||
{
|
||||
DEBUG(0,("do_nt_session_open: request challenge failed\n"));
|
||||
return False;
|
||||
@ -99,17 +58,8 @@ FIXME !!
|
||||
|
||||
/**************** Long-term Session key **************/
|
||||
|
||||
#ifdef DEBUG_PASSWORD
|
||||
DEBUG(100,("generating nt owf from initial machine pwd: %s\n", mach_pwd));
|
||||
#endif
|
||||
nt_owf_gen( mach_pwd, nt_owf_mach_pwd);
|
||||
|
||||
#ifdef DEBUG_PASSWORD
|
||||
dump_data(6, nt_owf_mach_pwd, 16);
|
||||
#endif
|
||||
|
||||
/* calculate the session key */
|
||||
cred_session_key(&clnt_chal, &srv_chal, nt_owf_mach_pwd, sess_key);
|
||||
cred_session_key(&clnt_chal, &srv_chal, mach_pwd, sess_key);
|
||||
bzero(sess_key+8, 8);
|
||||
|
||||
/******************* Authenticate 2 ********************/
|
||||
@ -118,22 +68,22 @@ FIXME !!
|
||||
cred_create(sess_key, &clnt_chal, zerotime, &(clnt_cred->challenge));
|
||||
|
||||
/* send client auth-2 challenge; receive an auth-2 challenge */
|
||||
if (!do_net_auth2(cli, fnum, dest_srv, mach_acct,
|
||||
SEC_CHAN_WKSTA, myhostname,
|
||||
&(clnt_cred->challenge), 0x000001ff, &auth2_srv_chal))
|
||||
if (!cli_net_auth2(cli, SEC_CHAN_WKSTA, 0x000001ff,
|
||||
&(cli->clnt_cred->challenge), &auth2_srv_chal))
|
||||
{
|
||||
DEBUG(0,("do_nt_session_open: request challenge failed\n"));
|
||||
DEBUG(0,("do_nt_session_open: auth2 challenge failed\n"));
|
||||
return False;
|
||||
}
|
||||
|
||||
return True;
|
||||
}
|
||||
|
||||
#if 0
|
||||
/****************************************************************************
|
||||
server password set
|
||||
****************************************************************************/
|
||||
|
||||
BOOL do_nt_srv_pwset(struct cli_state *cli, int t_idx, uint16 fnum,
|
||||
BOOL do_nt_srv_pwset(struct cli_state *cli,
|
||||
uint8 sess_key[16], DOM_CRED *clnt_cred, DOM_CRED *rtn_cred,
|
||||
char *new_mach_pwd,
|
||||
char *dest_host, char *mach_acct, char *myhostname)
|
||||
@ -208,14 +158,13 @@ void make_nt_login_interactive(NET_ID_INFO_CTR *ctr,
|
||||
smb_userid, 0, username, myhostname,
|
||||
sess_key, lm_owf_user_pwd, nt_owf_user_pwd);
|
||||
}
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
make network sam login info
|
||||
****************************************************************************/
|
||||
|
||||
void make_nt_login_network(NET_ID_INFO_CTR *ctr,
|
||||
char *workgroup, char *myhostname,
|
||||
uint32 smb_userid, char *username,
|
||||
void make_nt_login_network(NET_ID_INFO_CTR *ctr, uint32 smb_userid, char *username,
|
||||
char lm_chal[8], char lm_chal_resp[24],
|
||||
char nt_chal_resp[24])
|
||||
{
|
||||
@ -223,7 +172,7 @@ void make_nt_login_network(NET_ID_INFO_CTR *ctr,
|
||||
ctr->switch_value = 2;
|
||||
|
||||
/* this is used in both the SAM Logon and the SAM Logoff */
|
||||
make_id_info2(&ctr->auth.id2, workgroup, 0, smb_userid, 0,
|
||||
make_id_info2(&ctr->auth.id2, myworkgroup, 0, smb_userid, 0,
|
||||
username, myhostname,
|
||||
lm_chal, lm_chal_resp, nt_chal_resp);
|
||||
}
|
||||
@ -232,10 +181,9 @@ void make_nt_login_network(NET_ID_INFO_CTR *ctr,
|
||||
NT login.
|
||||
****************************************************************************/
|
||||
|
||||
BOOL do_nt_login(struct cli_state *cli, uint16 fnum,
|
||||
uint8 sess_key[16], DOM_CRED *clnt_cred, DOM_CRED *rtn_cred,
|
||||
NET_ID_INFO_CTR *ctr, char *dest_host, char *myhostname,
|
||||
NET_USER_INFO_3 *user_info3)
|
||||
BOOL cli_nt_login(struct cli_state *cli,
|
||||
DOM_CRED *clnt_cred, DOM_CRED *rtn_cred,
|
||||
NET_ID_INFO_CTR *ctr, NET_USER_INFO_3 *user_info3)
|
||||
{
|
||||
DOM_CRED sam_logon_rtn_cred;
|
||||
DOM_CRED cred;
|
||||
@ -246,12 +194,12 @@ BOOL do_nt_login(struct cli_state *cli, uint16 fnum,
|
||||
|
||||
/*********************** SAM Logon **********************/
|
||||
|
||||
clnt_cred->timestamp.time = time(NULL);
|
||||
cli->clnt_cred->timestamp.time = time(NULL);
|
||||
|
||||
memcpy(&cred, clnt_cred, sizeof(cred));
|
||||
memcpy(&cred, cli->clnt_cred, sizeof(cred));
|
||||
|
||||
/* calculate sam logon credentials */
|
||||
cred_create(sess_key, &(clnt_cred->challenge),
|
||||
cred_create(sess_key, &(cli->clnt_cred->challenge),
|
||||
cred.timestamp, &(cred.challenge));
|
||||
|
||||
strcpy(dest_srv, "\\\\");
|
||||
@ -262,8 +210,7 @@ BOOL do_nt_login(struct cli_state *cli, uint16 fnum,
|
||||
strupper(my_host_name);
|
||||
|
||||
/* send client sam-logon challenge */
|
||||
return do_net_sam_logon(cli, fnum, sess_key, clnt_cred,
|
||||
dest_srv, my_host_name,
|
||||
return cli_net_sam_logon(cli, dest_srv, my_host_name,
|
||||
&cred, &sam_logon_rtn_cred,
|
||||
ctr->switch_value, ctr, 3, user_info3,
|
||||
rtn_cred);
|
||||
@ -273,8 +220,7 @@ BOOL do_nt_login(struct cli_state *cli, uint16 fnum,
|
||||
nt sam logoff
|
||||
****************************************************************************/
|
||||
|
||||
BOOL do_nt_logoff(struct cli_state *cli, uint16 fnum,
|
||||
uint8 sess_key[16], DOM_CRED *clnt_cred, DOM_CRED *rtn_cred,
|
||||
BOOL cli_nt_logoff(struct cli_state *cli, DOM_CRED *rtn_cred,
|
||||
NET_ID_INFO_CTR *ctr, char *dest_host, char *myhostname)
|
||||
{
|
||||
DOM_CRED sam_logoff_rtn_cred;
|
||||
@ -288,10 +234,10 @@ BOOL do_nt_logoff(struct cli_state *cli, uint16 fnum,
|
||||
|
||||
clnt_cred->timestamp.time = time(NULL);
|
||||
|
||||
memcpy(&cred, clnt_cred, sizeof(cred));
|
||||
memcpy(&cred, cli->clnt_cred, sizeof(cred));
|
||||
|
||||
/* calculate sam logoff credentials */
|
||||
cred_create(sess_key, &(clnt_cred->challenge),
|
||||
cred_create(sess_key, &(cli->clnt_cred->challenge),
|
||||
cred.timestamp, &(cred.challenge));
|
||||
|
||||
strcpy(dest_srv, "\\\\");
|
||||
@ -302,22 +248,9 @@ BOOL do_nt_logoff(struct cli_state *cli, uint16 fnum,
|
||||
strupper(my_host_name);
|
||||
|
||||
/* send client sam-logoff challenge; receive a sam-logoff challenge */
|
||||
return do_net_sam_logoff(cli, fnum, sess_key, clnt_cred,
|
||||
return cli_net_sam_logoff(cli, fnum, sess_key, clnt_cred,
|
||||
dest_srv, my_host_name,
|
||||
&cred, &sam_logoff_rtn_cred,
|
||||
ctr->switch_value, ctr, 3,
|
||||
rtn_cred);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
Close the NT pipe.
|
||||
****************************************************************************/
|
||||
|
||||
void do_nt_session_close(struct cli_state *cli, uint16 fnum)
|
||||
{
|
||||
/******************** close the \PIPE\NETLOGON file **************/
|
||||
if (fnum != 0xffff)
|
||||
{
|
||||
cli_close(cli, fnum);
|
||||
}
|
||||
}
|
||||
|
@ -65,7 +65,7 @@ BOOL do_net_logon_ctrl2(struct cli_state *cli, uint16 fnum,
|
||||
net_io_q_logon_ctrl2("", &q_l, &buf, 0);
|
||||
|
||||
/* send the data on \PIPE\ */
|
||||
if (rpc_api_pipe_req(cli, fnum, NET_LOGON_CTRL2, &buf, &rbuf))
|
||||
if (rpc_api_pipe_req(cli, NET_LOGON_CTRL2, &buf, &rbuf))
|
||||
{
|
||||
NET_R_LOGON_CTRL2 r_l;
|
||||
BOOL ok;
|
||||
@ -77,6 +77,7 @@ BOOL do_net_logon_ctrl2(struct cli_state *cli, uint16 fnum,
|
||||
{
|
||||
/* report error code */
|
||||
DEBUG(0,("NET_R_LOGON_CTRL: %s\n", get_nt_error_msg(r_l.status)));
|
||||
cli->nt_error = r_l.status;
|
||||
ok = False;
|
||||
}
|
||||
|
||||
@ -96,38 +97,32 @@ BOOL do_net_logon_ctrl2(struct cli_state *cli, uint16 fnum,
|
||||
do a LSA Authenticate 2
|
||||
****************************************************************************/
|
||||
|
||||
BOOL do_net_auth2(struct cli_state *cli, uint16 fnum,
|
||||
char *logon_srv, char *acct_name, uint16 sec_chan,
|
||||
char *comp_name, DOM_CHAL *clnt_chal, uint32 neg_flags,
|
||||
DOM_CHAL *srv_chal)
|
||||
BOOL cli_net_auth2(struct cli_state *cli, uint16 sec_chan,
|
||||
uint32 neg_flags, DOM_CHAL *clnt_chal, DOM_CHAL *srv_chal)
|
||||
{
|
||||
prs_struct rbuf;
|
||||
prs_struct buf;
|
||||
NET_Q_AUTH_2 q_a;
|
||||
BOOL valid_chal = False;
|
||||
|
||||
if (srv_chal == NULL || clnt_chal == NULL)
|
||||
return False;
|
||||
|
||||
prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
|
||||
prs_init(&rbuf, 0, 4, SAFETY_MARGIN, True );
|
||||
|
||||
|
||||
/* create and send a MSRPC command with api NET_AUTH2 */
|
||||
|
||||
DEBUG(4,("LSA Authenticate 2: srv:%s acct:%s sc:%x mc: %s chal %s neg: %lx\n",
|
||||
logon_srv, acct_name, sec_chan, comp_name,
|
||||
cli->srv_name, cli->mach_acct, sec_chan, global_myname,
|
||||
credstr(clnt_chal->data), neg_flags));
|
||||
|
||||
/* store the parameters */
|
||||
make_q_auth_2(&q_a, logon_srv, acct_name, sec_chan, comp_name,
|
||||
make_q_auth_2(&q_a, cli->srv_name, cli->mach_acct, sec_chan, global_myname,
|
||||
clnt_chal, neg_flags);
|
||||
|
||||
/* turn parameters into data stream */
|
||||
net_io_q_auth_2("", &q_a, &buf, 0);
|
||||
|
||||
/* send the data on \PIPE\ */
|
||||
if (rpc_api_pipe_req(cli, fnum, NET_AUTH2, &buf, &rbuf))
|
||||
if (rpc_api_pipe_req(cli, NET_AUTH2, &buf, &rbuf))
|
||||
{
|
||||
NET_R_AUTH_2 r_a;
|
||||
BOOL ok;
|
||||
@ -139,6 +134,7 @@ BOOL do_net_auth2(struct cli_state *cli, uint16 fnum,
|
||||
{
|
||||
/* report error code */
|
||||
DEBUG(0,("NET_AUTH2: %s\n", get_nt_error_msg(r_a.status)));
|
||||
cli->nt_error = r_a.status;
|
||||
ok = False;
|
||||
}
|
||||
|
||||
@ -168,9 +164,7 @@ BOOL do_net_auth2(struct cli_state *cli, uint16 fnum,
|
||||
do a LSA Request Challenge
|
||||
****************************************************************************/
|
||||
|
||||
BOOL do_net_req_chal(struct cli_state *cli, uint16 fnum,
|
||||
char *desthost, char *myhostname,
|
||||
DOM_CHAL *clnt_chal, DOM_CHAL *srv_chal)
|
||||
BOOL cli_net_req_chal(struct cli_state *cli, DOM_CHAL *clnt_chal, DOM_CHAL *srv_chal)
|
||||
{
|
||||
prs_struct rbuf;
|
||||
prs_struct buf;
|
||||
@ -183,20 +177,19 @@ BOOL do_net_req_chal(struct cli_state *cli, uint16 fnum,
|
||||
prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
|
||||
prs_init(&rbuf, 0, 4, SAFETY_MARGIN, True );
|
||||
|
||||
|
||||
/* create and send a MSRPC command with api NET_REQCHAL */
|
||||
|
||||
DEBUG(4,("LSA Request Challenge from %s to %s: %s\n",
|
||||
desthost, myhostname, credstr(clnt_chal->data)));
|
||||
DEBUG(4,("cli_net_req_chal: LSA Request Challenge from %s to %s: %s\n",
|
||||
cli->desthost, global_myname, credstr(clnt_chal->data)));
|
||||
|
||||
/* store the parameters */
|
||||
make_q_req_chal(&q_c, desthost, myhostname, clnt_chal);
|
||||
make_q_req_chal(&q_c, desthost, global_myname, clnt_chal);
|
||||
|
||||
/* turn parameters into data stream */
|
||||
net_io_q_req_chal("", &q_c, &buf, 0);
|
||||
|
||||
/* send the data on \PIPE\ */
|
||||
if (rpc_api_pipe_req(cli, fnum, NET_REQCHAL, &buf, &rbuf))
|
||||
if (rpc_api_pipe_req(cli, NET_REQCHAL, &buf, &rbuf))
|
||||
{
|
||||
NET_R_REQ_CHAL r_c;
|
||||
BOOL ok;
|
||||
@ -208,6 +201,7 @@ BOOL do_net_req_chal(struct cli_state *cli, uint16 fnum,
|
||||
{
|
||||
/* report error code */
|
||||
DEBUG(0,("NET_REQ_CHAL: %s\n", get_nt_error_msg(r_c.status)));
|
||||
cli->nt_error = r_a.status;
|
||||
ok = False;
|
||||
}
|
||||
|
||||
@ -261,7 +255,7 @@ BOOL do_net_srv_pwset(struct cli_state *cli, uint16 fnum,
|
||||
net_io_q_srv_pwset("", &q_s, &buf, 0);
|
||||
|
||||
/* send the data on \PIPE\ */
|
||||
if (rpc_api_pipe_req(cli, fnum, NET_SRVPWSET, &buf, &rbuf))
|
||||
if (rpc_api_pipe_req(cli, NET_SRVPWSET, &buf, &rbuf))
|
||||
{
|
||||
NET_R_SRV_PWSET r_s;
|
||||
BOOL ok;
|
||||
@ -273,6 +267,7 @@ BOOL do_net_srv_pwset(struct cli_state *cli, uint16 fnum,
|
||||
{
|
||||
/* report error code */
|
||||
DEBUG(0,("NET_R_SRV_PWSET: %s\n", get_nt_error_msg(r_s.status)));
|
||||
cli->nt_error = r_s.status;
|
||||
ok = False;
|
||||
}
|
||||
|
||||
@ -302,8 +297,7 @@ BOOL do_net_srv_pwset(struct cli_state *cli, uint16 fnum,
|
||||
do a LSA SAM Logon
|
||||
****************************************************************************/
|
||||
|
||||
BOOL do_net_sam_logon(struct cli_state *cli, uint16 fnum,
|
||||
uchar sess_key[8], DOM_CRED *sto_clnt_cred,
|
||||
BOOL cli_net_sam_logon(struct cli_state *cli, DOM_CRED *sto_clnt_cred,
|
||||
char *logon_srv, char *comp_name,
|
||||
DOM_CRED *clnt_cred, DOM_CRED *rtn_cred,
|
||||
uint16 logon_level, NET_ID_INFO_CTR *ctr,
|
||||
@ -321,24 +315,23 @@ BOOL do_net_sam_logon(struct cli_state *cli, uint16 fnum,
|
||||
prs_init(&buf , 1024, 4, SAFETY_MARGIN, False);
|
||||
prs_init(&rbuf, 0, 4, SAFETY_MARGIN, True );
|
||||
|
||||
|
||||
/* create and send a MSRPC command with api NET_SAMLOGON */
|
||||
|
||||
DEBUG(4,("LSA SAM Logon: srv:%s mc:%s clnt %s %lx rtn: %s %lx ll: %d\n",
|
||||
logon_srv, comp_name,
|
||||
credstr(clnt_cred->challenge.data), clnt_cred->timestamp.time,
|
||||
cli->srv_name, global_myname,
|
||||
credstr(cli->clnt_cred->challenge.data), cli->clnt_cred->timestamp.time,
|
||||
credstr(rtn_cred->challenge.data), rtn_cred ->timestamp.time,
|
||||
logon_level));
|
||||
|
||||
/* store the parameters */
|
||||
make_sam_info(&(q_s.sam_id), logon_srv, comp_name,
|
||||
clnt_cred, rtn_cred, logon_level, ctr, validation_level);
|
||||
make_sam_info(&(q_s.sam_id), cli->srv_name, global_myname,
|
||||
cli->clnt_cred, rtn_cred, logon_level, ctr, validation_level);
|
||||
|
||||
/* turn parameters into data stream */
|
||||
net_io_q_sam_logon("", &q_s, &buf, 0);
|
||||
|
||||
/* send the data on \PIPE\ */
|
||||
if (rpc_api_pipe_req(cli, fnum, NET_SAMLOGON, &buf, &rbuf))
|
||||
if (rpc_api_pipe_req(cli, NET_SAMLOGON, &buf, &rbuf))
|
||||
{
|
||||
NET_R_SAM_LOGON r_s;
|
||||
BOOL ok;
|
||||
@ -352,6 +345,7 @@ BOOL do_net_sam_logon(struct cli_state *cli, uint16 fnum,
|
||||
{
|
||||
/* report error code */
|
||||
DEBUG(0,("NET_SAMLOGON: %s\n", get_nt_error_msg(r_s.status)));
|
||||
cli->nt_error = r_s.status;
|
||||
ok = False;
|
||||
}
|
||||
|
||||
@ -365,7 +359,7 @@ BOOL do_net_sam_logon(struct cli_state *cli, uint16 fnum,
|
||||
|
||||
if (ok)
|
||||
{
|
||||
if (clnt_deal_with_creds(sess_key, sto_clnt_cred, &(r_s.srv_creds)))
|
||||
if (clnt_deal_with_creds(cli->sess_key, sto_clnt_cred, &(r_s.srv_creds)))
|
||||
{
|
||||
DEBUG(5, ("do_net_sam_logon: server credential check OK\n"));
|
||||
/* ok, at last: we're happy. return the challenge */
|
||||
@ -423,7 +417,7 @@ BOOL do_net_sam_logoff(struct cli_state *cli, uint16 fnum,
|
||||
net_io_q_sam_logoff("", &q_s, &buf, 0);
|
||||
|
||||
/* send the data on \PIPE\ */
|
||||
if (rpc_api_pipe_req(cli, fnum, NET_SAMLOGOFF, &buf, &rbuf))
|
||||
if (rpc_api_pipe_req(cli, NET_SAMLOGOFF, &buf, &rbuf))
|
||||
{
|
||||
NET_R_SAM_LOGOFF r_s;
|
||||
BOOL ok;
|
||||
@ -435,6 +429,7 @@ BOOL do_net_sam_logoff(struct cli_state *cli, uint16 fnum,
|
||||
{
|
||||
/* report error code */
|
||||
DEBUG(0,("NET_SAMLOGOFF: %s\n", get_nt_error_msg(r_s.status)));
|
||||
cli->nt_error = r_s.status;
|
||||
ok = False;
|
||||
}
|
||||
|
||||
|
@ -46,7 +46,7 @@ uint32 get_rpc_call_id(void)
|
||||
uses SMBreadX to get rest of rpc data
|
||||
********************************************************************/
|
||||
|
||||
static BOOL rpc_read(struct cli_state *cli, uint16 fnum,
|
||||
static BOOL rpc_read(struct cli_state *cli,
|
||||
prs_struct *rdata, uint32 data_to_read,
|
||||
uint32 rdata_offset)
|
||||
{
|
||||
@ -83,7 +83,7 @@ static BOOL rpc_read(struct cli_state *cli, uint16 fnum,
|
||||
DEBUG(5,("rpc_read: grow buffer to %d\n", rdata->data->data_used));
|
||||
}
|
||||
|
||||
num_read = cli_read(cli, fnum, data, file_offset + 0x100000, size);
|
||||
num_read = cli_read(cli, cli->nt_pipe_fnum, data, file_offset + 0x100000, size);
|
||||
|
||||
DEBUG(5,("rpc_read: read offset: %d read: %d to read: %d\n",
|
||||
file_offset, num_read, data_to_read));
|
||||
@ -153,7 +153,7 @@ static BOOL rpc_check_hdr(prs_struct *rdata, uint8 *pkt_type,
|
||||
|
||||
****************************************************************************/
|
||||
|
||||
BOOL rpc_api_pipe(struct cli_state *cli, uint16 cmd, uint16 fnum,
|
||||
BOOL rpc_api_pipe(struct cli_state *cli, uint16 cmd,
|
||||
prs_struct *param , prs_struct *data,
|
||||
prs_struct *rparam, prs_struct *rdata)
|
||||
{
|
||||
@ -184,7 +184,7 @@ BOOL rpc_api_pipe(struct cli_state *cli, uint16 cmd, uint16 fnum,
|
||||
|
||||
/* create setup parameters. */
|
||||
setup[0] = cmd;
|
||||
setup[1] = fnum; /* pipe file handle. got this from an SMBcreateX. */
|
||||
setup[1] = cli->nt_pipe_fnum; /* pipe file handle. got this from an SMBOpenX. */
|
||||
|
||||
/* send the data: receive a response. */
|
||||
if (!cli_api_pipe(cli, "\\PIPE\\\0\0\0", 8,
|
||||
@ -231,7 +231,7 @@ BOOL rpc_api_pipe(struct cli_state *cli, uint16 cmd, uint16 fnum,
|
||||
/* err status is only informational: the _real_ check is on the length */
|
||||
if (len > 0) /* || err == (0x80000000 | STATUS_BUFFER_OVERFLOW)) */
|
||||
{
|
||||
if (!rpc_read(cli, fnum, rdata, len, rdata->data->data_used))
|
||||
if (!rpc_read(cli, rdata, len, rdata->data->data_used))
|
||||
return False;
|
||||
}
|
||||
|
||||
@ -251,7 +251,7 @@ BOOL rpc_api_pipe(struct cli_state *cli, uint16 cmd, uint16 fnum,
|
||||
|
||||
prs_init(&hps, 0x18, 4, 0, True);
|
||||
|
||||
num_read = cli_read(cli, fnum, hps.data->data, 0, 0x18);
|
||||
num_read = cli_read(cli, cli->nt_pipe_fnum, hps.data->data, 0, 0x18);
|
||||
DEBUG(5,("rpc_api_pipe: read header (size:%d)\n", num_read));
|
||||
|
||||
if (num_read != 0x18)
|
||||
@ -275,7 +275,7 @@ BOOL rpc_api_pipe(struct cli_state *cli, uint16 cmd, uint16 fnum,
|
||||
}
|
||||
|
||||
len = rhdr.frag_len - hps.offset;
|
||||
if (!rpc_read(cli, fnum, rdata, len, rdata->data->data_used))
|
||||
if (!rpc_read(cli, rdata, len, rdata->data->data_used))
|
||||
return False;
|
||||
}
|
||||
|
||||
@ -400,7 +400,7 @@ static BOOL create_rpc_request(prs_struct *rhdr, uint8 op_num, int data_len)
|
||||
/****************************************************************************
|
||||
send a request on an rpc pipe.
|
||||
****************************************************************************/
|
||||
BOOL rpc_api_pipe_req(struct cli_state *cli, uint16 fnum, uint8 op_num,
|
||||
BOOL rpc_api_pipe_req(struct cli_state *cli, uint8 op_num,
|
||||
prs_struct *data, prs_struct *rdata)
|
||||
{
|
||||
/* fudge this, at the moment: create the header; memcpy the data. oops. */
|
||||
@ -421,7 +421,7 @@ BOOL rpc_api_pipe_req(struct cli_state *cli, uint16 fnum, uint8 op_num,
|
||||
hdr.data->offset.end = data_len;
|
||||
mem_buf_copy(mem_data(&(hdr.data), 0x18), data->data, 0, data->offset);
|
||||
|
||||
ret = rpc_api_pipe(cli, 0x0026, fnum, NULL, &hdr, &rparam, rdata);
|
||||
ret = rpc_api_pipe(cli, 0x0026, NULL, &hdr, &rparam, rdata);
|
||||
|
||||
prs_mem_free(&rparam);
|
||||
prs_mem_free(&hdr);
|
||||
@ -434,8 +434,7 @@ BOOL rpc_api_pipe_req(struct cli_state *cli, uint16 fnum, uint8 op_num,
|
||||
do an rpc bind
|
||||
****************************************************************************/
|
||||
|
||||
BOOL rpc_pipe_set_hnd_state(struct cli_state *cli, char *pipe_name,
|
||||
uint16 fnum, uint16 device_state)
|
||||
BOOL rpc_pipe_set_hnd_state(struct cli_state *cli, char *pipe_name, uint16 device_state)
|
||||
{
|
||||
BOOL state_set = False;
|
||||
char param[2];
|
||||
@ -448,14 +447,14 @@ BOOL rpc_pipe_set_hnd_state(struct cli_state *cli, char *pipe_name,
|
||||
return False;
|
||||
|
||||
DEBUG(5,("Set Handle state Pipe[%x]: %s - device state:%x\n",
|
||||
fnum, pipe_name, device_state));
|
||||
cli->nt_pipe_fnum, pipe_name, device_state));
|
||||
|
||||
/* create parameters: device state */
|
||||
SSVAL(param, 0, device_state);
|
||||
|
||||
/* create setup parameters. */
|
||||
setup[0] = 0x0001;
|
||||
setup[1] = fnum; /* pipe file handle. got this from an SMBcreateX. */
|
||||
setup[1] = cli->nt_pipe_fnum; /* pipe file handle. got this from an SMBOpenX. */
|
||||
|
||||
/* send the data on \PIPE\ */
|
||||
if (cli_api_pipe(cli, "\\PIPE\\\0\0\0", 8,
|
||||
@ -575,9 +574,8 @@ static BOOL check_bind_response(RPC_HDR_BA *hdr_ba, char *pipe_name, RPC_IFACE *
|
||||
do an rpc bind
|
||||
****************************************************************************/
|
||||
|
||||
BOOL rpc_pipe_bind(struct cli_state *cli, char *pipe_name, uint16 fnum,
|
||||
RPC_IFACE *abstract, RPC_IFACE *transfer, BOOL ntlmssp_auth,
|
||||
char *my_name, char *domain)
|
||||
BOOL rpc_pipe_bind(struct cli_state *cli, char *pipe_name,
|
||||
RPC_IFACE *abstract, RPC_IFACE *transfer, BOOL ntlmssp_auth)
|
||||
{
|
||||
prs_struct hdr;
|
||||
prs_struct hdr_rb;
|
||||
@ -591,7 +589,7 @@ BOOL rpc_pipe_bind(struct cli_state *cli, char *pipe_name, uint16 fnum,
|
||||
if (pipe_name == NULL || abstract == NULL || transfer == NULL)
|
||||
return False;
|
||||
|
||||
DEBUG(5,("Bind RPC Pipe[%x]: %s\n", fnum, pipe_name));
|
||||
DEBUG(5,("Bind RPC Pipe[%x]: %s\n", cli->nt_pipe_fnum, pipe_name));
|
||||
|
||||
if (!valid_pipe_name(pipe_name, abstract, transfer))
|
||||
return False;
|
||||
@ -604,14 +602,14 @@ BOOL rpc_pipe_bind(struct cli_state *cli, char *pipe_name, uint16 fnum,
|
||||
prs_init(&rparam, 0 , 4, SAFETY_MARGIN, True );
|
||||
|
||||
create_rpc_bind_req(&hdr, &hdr_rb, ntlmssp_auth ? &auth_req : NULL,
|
||||
abstract, transfer, my_name, domain);
|
||||
abstract, transfer, myname, myworkgroup);
|
||||
|
||||
/* this is a hack due to limitations in rpc_api_pipe */
|
||||
prs_init(&data, mem_buf_len(hdr.data), 4, 0x0, False);
|
||||
mem_buf_copy(data.data->data, hdr.data, 0, mem_buf_len(hdr.data));
|
||||
|
||||
/* send data on \PIPE\. receive a response */
|
||||
if (rpc_api_pipe(cli, 0x0026, fnum, NULL, &data, &rparam, &rdata))
|
||||
if (rpc_api_pipe(cli, 0x0026, NULL, &data, &rparam, &rdata))
|
||||
{
|
||||
RPC_HDR_BA hdr_ba;
|
||||
|
||||
@ -637,67 +635,44 @@ BOOL rpc_pipe_bind(struct cli_state *cli, char *pipe_name, uint16 fnum,
|
||||
open a session
|
||||
****************************************************************************/
|
||||
|
||||
BOOL do_session_open(struct cli_state *cli, char *pipe_name, uint16 *fnum)
|
||||
BOOL cli_nt_session_open(struct cli_state *cli, char *pipe_name, BOOL encrypted)
|
||||
{
|
||||
RPC_IFACE abstract;
|
||||
RPC_IFACE transfer;
|
||||
int fnum;
|
||||
|
||||
/******************* open the pipe *****************/
|
||||
if (((*fnum) = cli_open(cli, pipe_name, O_CREAT|O_WRONLY, DENY_NONE)) == 0xffff)
|
||||
if ((fnum = cli_open(cli, pipe_name, O_CREAT|O_RDWR, DENY_NONE)) == -1)
|
||||
{
|
||||
DEBUG(1,("do_session_open: cli_open failed\n"));
|
||||
DEBUG(1,("do_session_open: cli_open failed on pipe %s to machine %s. \
|
||||
Error was %s.\n", pipe_name, cli->desthost, cli_errstr(&cli)));
|
||||
return False;
|
||||
}
|
||||
|
||||
cli->nt_pipe_fnum = (uint16)fnum;
|
||||
|
||||
/**************** Set Named Pipe State ***************/
|
||||
if (!rpc_pipe_set_hnd_state(cli, pipe_name, (*fnum), 0x4300))
|
||||
if (!rpc_pipe_set_hnd_state(cli, pipe_name, 0x4300))
|
||||
{
|
||||
DEBUG(1,("do_session_open: pipe hnd state failed\n"));
|
||||
DEBUG(1,("do_session_open: pipe hnd state failed.\n"));
|
||||
return False;
|
||||
}
|
||||
|
||||
/******************* bind request on pipe *****************/
|
||||
if (!rpc_pipe_bind(cli, pipe_name, (*fnum), &abstract, &transfer,
|
||||
False, NULL, NULL))
|
||||
if (!rpc_pipe_bind(cli, pipe_name, &abstract, &transfer, encrypted))
|
||||
{
|
||||
DEBUG(1,("do_session_open: rpc bind failed\n"));
|
||||
DEBUG(1,("do_session_open: rpc bind failed.\n"));
|
||||
return False;
|
||||
}
|
||||
|
||||
return True;
|
||||
}
|
||||
/*
|
||||
* Setup the remote server name prefixed by \ and the machine account name.
|
||||
*/
|
||||
|
||||
/****************************************************************************
|
||||
open an encrypted session
|
||||
****************************************************************************/
|
||||
sprintf(cli->srv_name, "\\\\%s", cli->desthost);
|
||||
strupper(cli->srv_name);
|
||||
|
||||
BOOL do_ntlm_session_open(struct cli_state *cli, char *pipe_name, uint16 *fnum,
|
||||
char *my_name, char *domain)
|
||||
{
|
||||
RPC_IFACE abstract;
|
||||
RPC_IFACE transfer;
|
||||
|
||||
/******************* open the pipe *****************/
|
||||
if (((*fnum) = cli_open(cli, pipe_name, O_CREAT|O_WRONLY, DENY_NONE)) == 0xffff)
|
||||
{
|
||||
DEBUG(1,("do_ntlm_session_open: cli_open failed\n"));
|
||||
return False;
|
||||
}
|
||||
|
||||
/**************** Set Named Pipe State ***************/
|
||||
if (!rpc_pipe_set_hnd_state(cli, pipe_name, (*fnum), 0x4300))
|
||||
{
|
||||
DEBUG(1,("do_ntlm_session_open: pipe hnd state failed\n"));
|
||||
return False;
|
||||
}
|
||||
|
||||
/******************* bind request on pipe *****************/
|
||||
if (!rpc_pipe_bind(cli, pipe_name, (*fnum), &abstract, &transfer,
|
||||
True, my_name, domain))
|
||||
{
|
||||
DEBUG(1,("do_ntlm_session_open: rpc bind failed\n"));
|
||||
return False;
|
||||
}
|
||||
sprintf(cli->mach_acct, "%s$", myname);
|
||||
|
||||
return True;
|
||||
}
|
||||
@ -706,10 +681,7 @@ BOOL do_ntlm_session_open(struct cli_state *cli, char *pipe_name, uint16 *fnum,
|
||||
close the session
|
||||
****************************************************************************/
|
||||
|
||||
void do_session_close(struct cli_state *cli, uint16 fnum)
|
||||
void nt_session_close(struct cli_state *cli)
|
||||
{
|
||||
if (fnum != 0xffff)
|
||||
{
|
||||
cli_close(cli, fnum);
|
||||
}
|
||||
cli_close(cli, cli->nt_pipe_fnum);
|
||||
}
|
||||
|
@ -30,8 +30,7 @@ extern int DEBUGLEVEL;
|
||||
|
||||
extern BOOL sam_logon_in_ssb;
|
||||
extern pstring samlogon_user;
|
||||
|
||||
|
||||
extern pstring global_myname;
|
||||
|
||||
/*************************************************************************
|
||||
make_net_r_req_chal:
|
||||
@ -683,7 +682,6 @@ static void api_net_sam_logon( int uid,
|
||||
pstring domain_groups;
|
||||
pstring dom_sid;
|
||||
pstring other_sids;
|
||||
extern pstring myname;
|
||||
uint32 r_uid;
|
||||
uint32 r_gid;
|
||||
|
||||
@ -706,7 +704,7 @@ static void api_net_sam_logon( int uid,
|
||||
pstrcpy(home_drive , lp_logon_drive ());
|
||||
pstrcpy(home_dir , lp_logon_home ());
|
||||
|
||||
pstrcpy(my_name , myname );
|
||||
pstrcpy(my_name , global_myname );
|
||||
strupper(my_name);
|
||||
|
||||
get_domain_user_groups(domain_groups, samlogon_user);
|
||||
|
@ -27,7 +27,7 @@
|
||||
#include "nterr.h"
|
||||
|
||||
extern int DEBUGLEVEL;
|
||||
|
||||
extern pstring global_myname;
|
||||
|
||||
/*******************************************************************
|
||||
fill in a share info level 1 structure.
|
||||
@ -858,7 +858,6 @@ static void srv_reply_net_srv_get_info(SRV_Q_NET_SRV_GET_INFO *q_n,
|
||||
uint32 status = 0x0;
|
||||
SRV_INFO_CTR ctr;
|
||||
|
||||
extern pstring myname;
|
||||
|
||||
DEBUG(5,("srv_net_srv_get_info: %d\n", __LINE__));
|
||||
|
||||
@ -867,7 +866,7 @@ static void srv_reply_net_srv_get_info(SRV_Q_NET_SRV_GET_INFO *q_n,
|
||||
case 102:
|
||||
{
|
||||
make_srv_info_102(&ctr.srv.sv102,
|
||||
500, myname, lp_serverstring(),
|
||||
500, global_myname, lp_serverstring(),
|
||||
5, 4, /* major/minor version - NT 5.4 :-) */
|
||||
0x4100b, /* browsing stuff SV_TYPE_XXXX */
|
||||
0xffffffff, /* users */
|
||||
@ -882,7 +881,7 @@ static void srv_reply_net_srv_get_info(SRV_Q_NET_SRV_GET_INFO *q_n,
|
||||
case 101:
|
||||
{
|
||||
make_srv_info_101(&ctr.srv.sv101,
|
||||
500, myname,
|
||||
500, global_myname,
|
||||
5, 4, /* major/minor version - NT 5.4 :-) */
|
||||
0x4100b, /* browsing stuff SV_TYPE_XXXX */
|
||||
lp_serverstring());
|
||||
|
@ -27,6 +27,7 @@
|
||||
#include "nterr.h"
|
||||
|
||||
extern int DEBUGLEVEL;
|
||||
extern pstring global_myname;
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
@ -34,13 +35,12 @@ extern int DEBUGLEVEL;
|
||||
********************************************************************/
|
||||
static void create_wks_info_100(WKS_INFO_100 *inf)
|
||||
{
|
||||
extern pstring myname;
|
||||
pstring my_name;
|
||||
pstring domain;
|
||||
|
||||
DEBUG(5,("create_wks_info_100: %d\n", __LINE__));
|
||||
|
||||
pstrcpy (my_name, myname);
|
||||
pstrcpy (my_name, global_myname);
|
||||
strupper(my_name);
|
||||
|
||||
pstrcpy (domain , lp_workgroup());
|
||||
|
@ -40,7 +40,7 @@ extern files_struct Files[];
|
||||
extern connection_struct Connections[];
|
||||
|
||||
extern fstring local_machine;
|
||||
extern fstring myworkgroup;
|
||||
extern fstring global_myworkgroup;
|
||||
|
||||
#define NERR_Success 0
|
||||
#define NERR_badpass 86
|
||||
@ -1035,7 +1035,7 @@ static int get_server_info(uint32 servertype,
|
||||
if (!next_token(&ptr,s->comment, NULL)) continue;
|
||||
if (!next_token(&ptr,s->domain , NULL)) {
|
||||
/* this allows us to cope with an old nmbd */
|
||||
strcpy(s->domain,myworkgroup);
|
||||
strcpy(s->domain,global_myworkgroup);
|
||||
}
|
||||
|
||||
if (sscanf(stype,"%X",&s->type) != 1) {
|
||||
@ -1231,7 +1231,7 @@ static BOOL api_RNetServerEnum(int cnum, uint16 vuid, char *param, char *data,
|
||||
if (strcmp(str1, "WrLehDz") == 0) {
|
||||
StrnCpy(domain, p, sizeof(fstring)-1);
|
||||
} else {
|
||||
StrnCpy(domain, myworkgroup, sizeof(fstring)-1);
|
||||
StrnCpy(domain, global_myworkgroup, sizeof(fstring)-1);
|
||||
}
|
||||
|
||||
if (lp_browse_list())
|
||||
@ -2039,7 +2039,7 @@ static BOOL api_RNetServerGetInfo(int cnum,uint16 vuid, char *param,char *data,
|
||||
|
||||
pstrcpy(comment,lp_serverstring());
|
||||
|
||||
if ((count=get_server_info(SV_TYPE_ALL,&servers,myworkgroup))>0) {
|
||||
if ((count=get_server_info(SV_TYPE_ALL,&servers,global_myworkgroup))>0) {
|
||||
for (i=0;i<count;i++)
|
||||
if (strequal(servers[i].name,local_machine))
|
||||
{
|
||||
@ -2125,7 +2125,7 @@ static BOOL api_NetWkstaGetInfo(int cnum,uint16 vuid, char *param,char *data,
|
||||
p += 4;
|
||||
|
||||
SIVAL(p,0,PTR_DIFF(p2,*rdata)); /* login domain */
|
||||
strcpy(p2,myworkgroup);
|
||||
strcpy(p2,global_myworkgroup);
|
||||
strupper(p2);
|
||||
p2 = skip_string(p2,1);
|
||||
p += 4;
|
||||
@ -2135,7 +2135,7 @@ static BOOL api_NetWkstaGetInfo(int cnum,uint16 vuid, char *param,char *data,
|
||||
p += 2;
|
||||
|
||||
SIVAL(p,0,PTR_DIFF(p2,*rdata));
|
||||
strcpy(p2,myworkgroup); /* don't know. login domain?? */
|
||||
strcpy(p2,global_myworkgroup); /* don't know. login domain?? */
|
||||
p2 = skip_string(p2,1);
|
||||
p += 4;
|
||||
|
||||
@ -2578,7 +2578,7 @@ static BOOL api_WWkstaUserLogon(int cnum,uint16 vuid, char *param,char *data,
|
||||
strupper(mypath);
|
||||
PACKS(&desc,"z",mypath); /* computer */
|
||||
}
|
||||
PACKS(&desc,"z",myworkgroup);/* domain */
|
||||
PACKS(&desc,"z",global_myworkgroup);/* domain */
|
||||
|
||||
/* JHT - By calling lp_logon_script() and standard_sub() we have */
|
||||
/* made sure all macros are fully substituted and available */
|
||||
|
@ -31,7 +31,7 @@ extern int Protocol;
|
||||
/* users from session setup */
|
||||
static pstring session_users="";
|
||||
|
||||
extern pstring myname;
|
||||
extern pstring global_myname;
|
||||
|
||||
/* these are kept here to keep the string_combinations function simple */
|
||||
static char this_user[100]="";
|
||||
@ -1783,8 +1783,8 @@ BOOL server_validate(char *user, char *domain,
|
||||
* need to detect this as some versions of NT4.x are broken. JRA.
|
||||
*/
|
||||
|
||||
if (cli_session_setup(&pw_cli, user, badpass, sizeof(badpass), badpass, sizeof(badpass),
|
||||
domain)) {
|
||||
if (cli_session_setup(&pw_cli, user, (char *)badpass, sizeof(badpass),
|
||||
(char *)badpass, sizeof(badpass), domain)) {
|
||||
if ((SVAL(pw_cli.inbuf,smb_vwv2) & 1) == 0) {
|
||||
DEBUG(0,("server_validate: password server %s allows users as non-guest \
|
||||
with a bad password.\n", pw_cli.desthost));
|
||||
@ -1886,7 +1886,6 @@ BOOL domain_client_validate( char *user, char *domain,
|
||||
struct in_addr dest_ip;
|
||||
struct cli_state cli;
|
||||
BOOL connected_ok = False;
|
||||
int fnum;
|
||||
|
||||
/*
|
||||
* Check that the requested domain is not our own machine name.
|
||||
@ -1894,7 +1893,7 @@ BOOL domain_client_validate( char *user, char *domain,
|
||||
* password file.
|
||||
*/
|
||||
|
||||
if(strequal( domain, myname)) {
|
||||
if(strequal( domain, global_myname)) {
|
||||
DEBUG(3,("domain_client_validate: Requested domain was for this machine.\n"));
|
||||
return False;
|
||||
}
|
||||
@ -1972,7 +1971,7 @@ machine %s. Error was : %s.\n", remote_machine, cli_errstr(&cli) ));
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!cli_session_request(&cli, remote_machine, 0x20, myname)) {
|
||||
if (!cli_session_request(&cli, remote_machine, 0x20, global_myname)) {
|
||||
DEBUG(0,("domain_client_validate: machine %s rejected the session setup. \
|
||||
Error was : %s.\n", remote_machine, cli_errstr(&cli) ));
|
||||
cli_shutdown(&cli);
|
||||
@ -2033,23 +2032,23 @@ Error was : %s.\n", remote_machine, cli_errstr(&cli) ));
|
||||
return False;
|
||||
}
|
||||
|
||||
#if 0 /* for now... JRA */
|
||||
/*
|
||||
* Ok - we have an anonymous connection to the IPC$ share.
|
||||
* Now start the NT Domain stuff :-).
|
||||
*/
|
||||
|
||||
/*
|
||||
* First, open the pipe to \PIPE\NETLOGON.
|
||||
*/
|
||||
|
||||
if((fnum = cli_open(&cli, PIPE_NETLOGON, O_CREAT, DENY_NONE)) == -1) {
|
||||
DEBUG(0,("domain_client_validate: cli_open on %s on machine %s failed. Error was :%s.\n",
|
||||
PIPE_NETLOGON, remote_machine, cli_errstr(&cli)));
|
||||
if(cli_nt_session_open(&cli, PIPE_NETLOGON, False) == False) {
|
||||
DEBUG(0,("domain_client_validate: unable to open the domain client session to \
|
||||
machine %s. Error was : %s.\n", remote_machine, cli_errstr(&cli)));
|
||||
cli_close(&cli, fnum);
|
||||
cli_ulogoff(&cli);
|
||||
cli_shutdown(&cli);
|
||||
return False;
|
||||
return False;
|
||||
}
|
||||
|
||||
if(cli_nt_setup_creds(&cli,) HERE
|
||||
#endif
|
||||
return False;
|
||||
}
|
||||
#endif /* DOMAIN_CLIENT */
|
||||
|
@ -41,7 +41,6 @@ extern char magic_char;
|
||||
extern BOOL case_sensitive;
|
||||
extern pstring sesssetup_user;
|
||||
extern int Client;
|
||||
extern fstring myworkgroup;
|
||||
|
||||
#define VALID_PNUM(pnum) (((pnum) >= 0) && ((pnum) < MAX_OPEN_PIPES))
|
||||
#define OPEN_PNUM(pnum) (VALID_PNUM(pnum) && Pipes[pnum].open)
|
||||
|
@ -41,7 +41,7 @@ extern BOOL case_sensitive;
|
||||
extern BOOL case_preserve;
|
||||
extern BOOL short_case_preserve;
|
||||
extern pstring sesssetup_user;
|
||||
extern fstring myworkgroup;
|
||||
extern fstring global_myworkgroup;
|
||||
extern int Client;
|
||||
extern int global_oplock_break;
|
||||
|
||||
@ -671,7 +671,7 @@ int reply_sesssetup_and_X(char *inbuf,char *outbuf,int length,int bufsize)
|
||||
p = smb_buf(outbuf);
|
||||
strcpy(p,"Unix"); p = skip_string(p,1);
|
||||
strcpy(p,"Samba "); strcat(p,VERSION); p = skip_string(p,1);
|
||||
strcpy(p,myworkgroup); p = skip_string(p,1);
|
||||
strcpy(p,global_myworkgroup); p = skip_string(p,1);
|
||||
set_message(outbuf,3,PTR_DIFF(p,smb_buf(outbuf)),False);
|
||||
/* perhaps grab OS version here?? */
|
||||
}
|
||||
|
@ -25,7 +25,7 @@
|
||||
pstring servicesf = CONFIGFILE;
|
||||
extern pstring debugf;
|
||||
extern pstring sesssetup_user;
|
||||
extern fstring myworkgroup;
|
||||
extern fstring global_myworkgroup;
|
||||
|
||||
char *InBuffer = NULL;
|
||||
char *OutBuffer = NULL;
|
||||
@ -3961,10 +3961,10 @@ int reply_nt1(char *outbuf)
|
||||
/* decide where (if) to put the encryption challenge, and
|
||||
follow it with the OEM'd domain name
|
||||
*/
|
||||
data_len = crypt_len + strlen(myworkgroup) + 1;
|
||||
data_len = crypt_len + strlen(global_myworkgroup) + 1;
|
||||
|
||||
set_message(outbuf,17,data_len,True);
|
||||
strcpy(smb_buf(outbuf)+crypt_len, myworkgroup);
|
||||
strcpy(smb_buf(outbuf)+crypt_len, global_myworkgroup);
|
||||
|
||||
CVAL(outbuf,smb_vwv1) = secword;
|
||||
SSVALS(outbuf,smb_vwv16+1,crypt_len);
|
||||
@ -5154,7 +5154,7 @@ static void usage(char *pname)
|
||||
|
||||
codepage_initialise(lp_client_code_page());
|
||||
|
||||
strcpy(myworkgroup, lp_workgroup());
|
||||
strcpy(global_myworkgroup, lp_workgroup());
|
||||
|
||||
#ifndef NO_SIGNAL_TEST
|
||||
signal(SIGHUP,SIGNAL_CAST sig_hup);
|
||||
|
@ -19,6 +19,8 @@
|
||||
|
||||
#include "includes.h"
|
||||
|
||||
extern pstring global_myname;
|
||||
|
||||
/*********************************************************
|
||||
Print command usage on stderr and die.
|
||||
**********************************************************/
|
||||
@ -294,9 +296,8 @@ int main(int argc, char **argv)
|
||||
if(remote_machine != NULL) {
|
||||
struct cli_state cli;
|
||||
struct in_addr ip;
|
||||
fstring myname;
|
||||
|
||||
if(get_myname(myname,NULL) == False) {
|
||||
if(get_myname(global_myname,NULL) == False) {
|
||||
fprintf(stderr, "%s: unable to get my hostname.\n", prog_name );
|
||||
exit(1);
|
||||
}
|
||||
@ -315,7 +316,7 @@ int main(int argc, char **argv)
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (!cli_session_request(&cli, remote_machine, 0x20, myname)) {
|
||||
if (!cli_session_request(&cli, remote_machine, 0x20, global_myname)) {
|
||||
fprintf(stderr, "%s: machine %s rejected the session setup. Error was : %s.\n",
|
||||
prog_name, remote_machine, cli_errstr(&cli) );
|
||||
cli_shutdown(&cli);
|
||||
|
Loading…
Reference in New Issue
Block a user