nmbd/nmbd_logonnames.c

ソースコードを見る。

関数

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.c34 行で定義されています。

参照先 find_server_in_workgroup()find_workgroup_on_subnet()global_mynamework_record::log_stateLOGON_NONEnmb_name::namenmb_namestr()pull_ascii_nstring()server_record::servsubnet_record::subnet_nameserver_info_struct::typework_record::work_group.

参照元 become_logon_server().

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.c73 行で定義されています。

参照先 find_server_in_workgroup()find_workgroup_on_subnet()global_mynameinsert_permanent_name_into_unicast()work_record::log_stateLOGON_NONELOGON_SRVlp_workgroup()make_nmb_name()nmb_name::namepull_ascii_nstring()server_record::servsubnet_record::subnet_nameserver_info_struct::typesubnet_record::work_changedwork_record::work_group.

参照元 become_logon_server().

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.c132 行で定義されています。

参照先 become_logon_server_fail()become_logon_server_success()work_record::log_stateLOGON_WAITregister_name()samba_nb_typesubnet_record::subnet_namework_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.c151 行で定義されています。

参照先 become_logon_server()dbgtext()find_name_on_subnet()find_workgroup_on_subnet()LOGON_NONElp_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

interface.c26 行で定義されています。

参照元 add_interface()become_domain_master_query_success()interpret_interface()load_interfaces().

uint16 samba_nb_type

nmbd_namelistdb.c26 行で定義されています。


Sambaに対してSat Aug 29 21:23:53 2009に生成されました。  doxygen 1.4.7