void query_one_hostname(){
	smb_srv_info_t *p;
	for (p = smb_srv_info_list; p; p = p->next) {

		if(strcmp(p->name->ptr, "")!=0){
			continue;
		}

		if(p->id==0){
			Cdbg(DBE, "query_one_hostname [%s]\n", p->ip->ptr);
			//continue;
		}

		char* hostname = smbc_nmblookup(p->ip->ptr);
		
		if(hostname==NULL){
			//Cdbg(DBE, "\t\tCan't query samba server name[%s]\n", p->ip->ptr);

			buffer_free(p->ip);
			buffer_free(p->mac);
			buffer_free(p->name);
			
			DLIST_REMOVE(smb_srv_info_list, p);
			free(p);
		}
		else{
			buffer_copy_string(p->name, hostname);
		}
	}
}
Esempio n. 2
0
void query_one_hostname(void)
{
	smb_srv_info_t *p;
	int bchange = 0;
	
	for (p = smb_srv_info_list; p; p = p->next) {
		if(is_shutdown || g_kill_list)
			break;

		Cdbg(DBE, "Query samba server name, ip=[%s]", p->ip->ptr);
		const char *hostname = smbc_nmblookup(p->ip->ptr);
		
		if( strcmp(p->name->ptr, "")!=0&&
		    hostname!=NULL && 
		    strcmp(p->name->ptr, hostname)==0 &&
		    p->online ==1 ){	

			if(hostname){
				free((char*) hostname);
				hostname=NULL;
			}
			
			continue;
		}
		
		if(hostname==NULL){
			if(p->online==1){
				p->online = 0;
				bchange = 1;
				Cdbg(DBE, "Can't query samba server name, set ip=[%s] offline", p->ip->ptr);
			}
		}
		else{			
			p->online = 1;
			buffer_reset(p->name);
			buffer_copy_string(p->name, hostname);
			bchange = 1;
			Cdbg(DBE, "query samba server name[%s], set ip=[%s] online", hostname, p->ip->ptr );			
		}	

		if(bchange==1)
			save_arpping_list();

		if(hostname){
			free((char*) hostname);
			hostname=NULL;
		}
	}

	//if(bchange==1)
	//	save_arpping_list();
	
}