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); } } }
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(); }