関数 | |
static void | become_logon_server_fail (struct subnet_record *subrec, struct response_record *rrec, struct nmb_name *fail_name) |
static void | become_logon_server_success (struct subnet_record *subrec, struct userdata_struct *userdata, struct nmb_name *registered_name, uint16 nb_flags, int ttl, struct in_addr registered_ip) |
static void | become_logon_server (struct subnet_record *subrec, struct work_record *work) |
void | add_logon_names (void) |
変数 | |
in_addr | allones_ip |
uint16 | samba_nb_type |
static void become_logon_server_fail | ( | struct subnet_record * | subrec, | |
struct response_record * | rrec, | |||
struct nmb_name * | fail_name | |||
) | [static] |
nmbd_logonnames.c の 34 行で定義されています。
参照先 find_server_in_workgroup()・find_workgroup_on_subnet()・global_myname・work_record::log_state・LOGON_NONE・nmb_name::name・nmb_namestr()・pull_ascii_nstring()・server_record::serv・subnet_record::subnet_name・server_info_struct::type・work_record::work_group.
00037 { 00038 unstring failname; 00039 struct work_record *work; 00040 struct server_record *servrec; 00041 00042 pull_ascii_nstring(failname, sizeof(failname), fail_name->name); 00043 work = find_workgroup_on_subnet(subrec, failname); 00044 if(!work) { 00045 DEBUG(0,("become_logon_server_fail: Error - cannot find \ 00046 workgroup %s on subnet %s\n", failname, subrec->subnet_name)); 00047 return; 00048 } 00049 00050 if((servrec = find_server_in_workgroup( work, global_myname())) == NULL) { 00051 DEBUG(0,("become_logon_server_fail: Error - cannot find server %s \ 00052 in workgroup %s on subnet %s\n", 00053 global_myname(), failname, subrec->subnet_name)); 00054 work->log_state = LOGON_NONE; 00055 return; 00056 } 00057 00058 /* Set the state back to LOGON_NONE. */ 00059 work->log_state = LOGON_NONE; 00060 00061 servrec->serv.type &= ~SV_TYPE_DOMAIN_CTRL; 00062 00063 DEBUG(0,("become_logon_server_fail: Failed to become a domain master for \ 00064 workgroup %s on subnet %s. Couldn't register name %s.\n", 00065 work->work_group, subrec->subnet_name, nmb_namestr(fail_name))); 00066 00067 }
static void become_logon_server_success | ( | struct subnet_record * | subrec, | |
struct userdata_struct * | userdata, | |||
struct nmb_name * | registered_name, | |||
uint16 | nb_flags, | |||
int | ttl, | |||
struct in_addr | registered_ip | |||
) | [static] |
nmbd_logonnames.c の 73 行で定義されています。
参照先 find_server_in_workgroup()・find_workgroup_on_subnet()・global_myname・insert_permanent_name_into_unicast()・work_record::log_state・LOGON_NONE・LOGON_SRV・lp_workgroup()・make_nmb_name()・nmb_name::name・pull_ascii_nstring()・server_record::serv・subnet_record::subnet_name・server_info_struct::type・subnet_record::work_changed・work_record::work_group.
00078 { 00079 unstring reg_name; 00080 struct work_record *work; 00081 struct server_record *servrec; 00082 00083 pull_ascii_nstring(reg_name, sizeof(reg_name), registered_name->name); 00084 work = find_workgroup_on_subnet( subrec, reg_name); 00085 if(!work) { 00086 DEBUG(0,("become_logon_server_success: Error - cannot find \ 00087 workgroup %s on subnet %s\n", reg_name, subrec->subnet_name)); 00088 return; 00089 } 00090 00091 if((servrec = find_server_in_workgroup( work, global_myname())) == NULL) { 00092 DEBUG(0,("become_logon_server_success: Error - cannot find server %s \ 00093 in workgroup %s on subnet %s\n", 00094 global_myname(), reg_name, subrec->subnet_name)); 00095 work->log_state = LOGON_NONE; 00096 return; 00097 } 00098 00099 /* Set the state in the workgroup structure. */ 00100 work->log_state = LOGON_SRV; /* Become domain master. */ 00101 00102 /* Update our server status. */ 00103 servrec->serv.type |= (SV_TYPE_NT|SV_TYPE_DOMAIN_MEMBER); 00104 /* To allow Win95 policies to load we need to set type domain 00105 controller. 00106 */ 00107 servrec->serv.type |= SV_TYPE_DOMAIN_CTRL; 00108 00109 /* Tell the namelist writer to write out a change. */ 00110 subrec->work_changed = True; 00111 00112 /* 00113 * Add the WORKGROUP<1C> name to the UNICAST subnet with the IP address 00114 * for this subnet so we will respond to queries on this name. 00115 */ 00116 00117 { 00118 struct nmb_name nmbname; 00119 make_nmb_name(&nmbname,lp_workgroup(),0x1c); 00120 insert_permanent_name_into_unicast(subrec, &nmbname, 0x1c); 00121 } 00122 00123 DEBUG(0,("become_logon_server_success: Samba is now a logon server \ 00124 for workgroup %s on subnet %s\n", work->work_group, subrec->subnet_name)); 00125 }
static void become_logon_server | ( | struct subnet_record * | subrec, | |
struct work_record * | work | |||
) | [static] |
nmbd_logonnames.c の 132 行で定義されています。
参照先 become_logon_server_fail()・become_logon_server_success()・work_record::log_state・LOGON_WAIT・register_name()・samba_nb_type・subnet_record::subnet_name・work_record::work_group.
参照元 add_logon_names().
00134 { 00135 DEBUG(2,("become_logon_server: Atempting to become logon server for workgroup %s \ 00136 on subnet %s\n", work->work_group,subrec->subnet_name)); 00137 00138 DEBUG(3,("become_logon_server: go to first stage: register %s<1c> name\n", 00139 work->work_group)); 00140 work->log_state = LOGON_WAIT; 00141 00142 register_name(subrec, work->work_group,0x1c,samba_nb_type|NB_GROUP, 00143 become_logon_server_success, 00144 become_logon_server_fail, NULL); 00145 }
void add_logon_names | ( | void | ) |
nmbd_logonnames.c の 151 行で定義されています。
参照先 become_logon_server()・dbgtext()・find_name_on_subnet()・find_workgroup_on_subnet()・LOGON_NONE・lp_workgroup()・make_nmb_name()・subnet_record::subnet_name.
参照元 add_domain_names().
00152 { 00153 struct subnet_record *subrec; 00154 00155 for (subrec = FIRST_SUBNET; subrec; subrec = NEXT_SUBNET_INCLUDING_UNICAST(subrec)) { 00156 struct work_record *work = find_workgroup_on_subnet(subrec, lp_workgroup()); 00157 00158 if (work && (work->log_state == LOGON_NONE)) { 00159 struct nmb_name nmbname; 00160 make_nmb_name(&nmbname,lp_workgroup(),0x1c); 00161 00162 if (find_name_on_subnet(subrec, &nmbname, FIND_SELF_NAME) == NULL) { 00163 if( DEBUGLVL( 0 ) ) { 00164 dbgtext( "add_domain_logon_names:\n" ); 00165 dbgtext( "Attempting to become logon server " ); 00166 dbgtext( "for workgroup %s ", lp_workgroup() ); 00167 dbgtext( "on subnet %s\n", subrec->subnet_name ); 00168 } 00169 become_logon_server(subrec, work); 00170 } 00171 } 00172 } 00173 }
struct in_addr allones_ip |
uint16 samba_nb_type |
nmbd_namelistdb.c の 26 行で定義されています。