void start_scan_sambaserver(int use_sys_timer) { //- Remove all smb_srv_info_t *c; for (c = smb_srv_info_list; c; c = c->next) { Cdbg(DBE, "remove , ip=[%s]\n", c->ip->ptr); DLIST_REMOVE(smb_srv_info_list,c); free(c); c = smb_srv_info_list; } free(smb_srv_info_list); init_a_srvInfo(); g_useSystemTimer = use_sys_timer; g_bInitialize = 1; #ifdef _USEMYTIMER if(g_useSystemTimer==0){ Cdbg(DBE, "create timer\n"); timer_t arp_timer = create_timer(TT_SIGUSR2); install_sighandler(TT_SIGUSR2, on_arpping_timer_handler); set_timer(arp_timer, ARP_TIME_INTERVAL); } #endif }
void on_arpping_timer_handler2(time_t cur_time) { if(g_bInitialize==0) return; thread_arpping(g_scan_interface); query_one_hostname(); //- Rescan samba server if( g_current_time > RE_SCAN_TIME_INTERVAL && g_threadIndex == MAX_THREADS ){ g_rescancount++; g_threadIndex = THREAD_BEGIN_INDEX;; char strTime[9] = {0}; strftime(strTime, sizeof(strTime), "%T", localtime(&cur_time)); Cdbg(DBE, "start to rescan samba server count=[%d], time_offset=[%d], time=[%s]\n", g_rescancount, g_current_time, strTime); g_current_time = 0; g_begin_time = 0; init_a_srvInfo(); } if(g_useSystemTimer==1){ if(g_begin_time==0) g_begin_time = cur_time; else g_current_time = cur_time - g_begin_time; } else{ g_current_time += ARP_TIME_INTERVAL; } }
void start_scan_sambaserver(int use_sys_timer) { Cdbg(DBE, "start start_scan_sambaserver..."); //- Remove all smb_srv_info_t *c; for (c = smb_srv_info_list; c; c = c->next) { Cdbg(DBE, "remove , ip=[%s]\n", c->ip->ptr); DLIST_REMOVE(smb_srv_info_list,c); free(c); c = smb_srv_info_list; } free(smb_srv_info_list); read_arpping_list(); if( init_a_srvInfo() == 0 ) return; g_useSystemTimer = use_sys_timer; g_bInitialize = 1; #ifdef _USEMYTIMER if(g_useSystemTimer==0){ g_arp_timer = create_timer(TT_SIGUSR2); install_sighandler(TT_SIGUSR2, on_arpping_timer_handler2); set_timer(g_arp_timer, ARP_TIME_INTERVAL); } #endif #ifdef _USEMYTIMER2 struct itimerval tout_val; tout_val.it_interval.tv_sec = ARP_TIME_INTERVAL; tout_val.it_interval.tv_usec = 0; tout_val.it_value.tv_sec = ARP_TIME_INTERVAL; /* set timer for "INTERVAL (10) seconds */ tout_val.it_value.tv_usec = 0; setitimer(ITIMER_REAL, &tout_val,0); signal(SIGALRM,on_arpping_timer_handler2); /* set the Alarm signal capture */ #endif }