void main() { int ret; E_init(); system("clear"); sp_time test_timeout; test_timeout.sec = 5; test_timeout.usec = 0; strncpy(Spread_name, "10080", 5); ret = SP_connect_timeout( Spread_name, User, 0, 1, &Mbox, Private_group, test_timeout ); if( ret != ACCEPT_SESSION ) { SP_error( ret ); Bye(); } printf("Connected to %s with private group %s\n", Spread_name, Private_group ); E_attach_fd( 0, READ_FD, User_command, 0, NULL, LOW_PRIORITY ); E_attach_fd( Mbox, READ_FD, Read_message, 0, NULL, HIGH_PRIORITY ); show_menu(); for(;;) { E_handle_events(); User_command(); } exit (0); }
int main( int argc, char *argv[] ) { int ret; int mver, miver, pver; sp_time test_timeout; test_timeout.sec = 5; test_timeout.usec = 0; server_num = 0; set_max_msgs(25); if (!SP_version( &mver, &miver, &pver)) { printf("main: Illegal variables passed to SP_version()\n"); Bye(); } printf("Spread library version is %d.%d.%d\n", mver, miver, pver); ret = SP_connect_timeout( SPREAD_NAME, NULL, 0, 1, &Mbox, Private_group, test_timeout ); if( ret != ACCEPT_SESSION ) { SP_error( ret ); Bye(); } printf("Client: connected to %s with private group %s\n", SPREAD_NAME, Private_group ); E_init(); E_attach_fd( 0, READ_FD, User_command, 0, NULL, LOW_PRIORITY ); E_attach_fd( Mbox, READ_FD, Read_message, 0, NULL, HIGH_PRIORITY ); Print_menu(); printf("\n > "); fflush(stdout); E_handle_events(); return( 0 ); }
int main(int argc, char *argv[]) { #ifdef ARCH_PC_WIN95 int ret; #endif #ifndef ARCH_PC_WIN95 struct group *grp; struct passwd *pwd; #endif Alarm_set_types( CONF_SYS ); Alarm_set_priority( SPLOG_INFO ); Alarmp( SPLOG_PRINT, SYSTEM, "/===========================================================================\\\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| The Spread Toolkit. |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Copyright (c) 1993-2013 Spread Concepts LLC |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| All rights reserved. |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| The Spread toolkit is licensed under the Spread Open-Source License. |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| You may only use this software in compliance with the License. |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| A copy of the license can be found at http://www.spread.org/license |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| This product uses software developed by Spread Concepts LLC for use |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| in the Spread toolkit. For more information about Spread, |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| see http://www.spread.org |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| This software is distributed on an \"AS IS\" basis, WITHOUT WARRANTY OF |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| ANY KIND, either express or implied. |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Creators: |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Yair Amir [email protected] |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Michal Miskin-Amir [email protected] |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Jonathan Stanton [email protected] |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| John Schultz [email protected] |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Major Contributors: |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Ryan Caudy [email protected] - contribution to process groups.|\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Claudiu Danilov [email protected] - scalable, wide-area support. |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Cristina Nita-Rotaru [email protected] - GC security. |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Theo Schlossnagle [email protected] - Perl, autoconf, old skiplist. |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Dan Schoenblum [email protected] - Java interface. |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Special thanks to the following for discussions and ideas: |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Ken Birman, Danny Dolev, Jacob Green, Mike Goodrich, Ben Laurie, |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| David Shaw, Gene Tsudik, Robbert VanRenesse. |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Partial funding provided by the Defense Advanced Research Project Agency |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| (DARPA) and the National Security Agency (NSA) 2000-2004. The Spread |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| toolkit is not necessarily endorsed by DARPA or the NSA. |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| For a full list of contributors, see Readme.txt in the distribution. |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| WWW: www.spread.org www.spreadconcepts.com |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Contact: [email protected] |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Version %d.%02d.%02d Built %-17s |\n", (int)SP_MAJOR_VERSION, (int)SP_MINOR_VERSION, (int)SP_PATCH_VERSION, Spread_build_date ); Alarmp( SPLOG_PRINT, SYSTEM, "\\===========================================================================/\n"); Usage( argc, argv ); #ifdef ARCH_PC_WIN95 ret = WSAStartup( MAKEWORD(1,1), &WSAData ); if( ret != 0 ) Alarmp( SPLOG_FATAL, NETWORK, "Spread: winsock initialization error %d\n", ret ); #endif /* ARCH_PC_WIN95 */ /* initialize each valid authentication protocol */ null_init(); ip_init(); #ifdef ENABLE_PASSWORD pword_init(); #endif permit_init(); /* Initialize Access Control & Authentication */ Acm_init(); Conf_init( Config_file, My_name ); E_init(); #ifndef ARCH_PC_WIN95 /* Verify that unix socket dir is safe if runing as root user */ if (geteuid() == (uid_t) 0) { struct stat usock_stat; Alarmp( SPLOG_INFO, SECURITY, "Spread is running as root so check file locations\n"); if (stat( SP_UNIX_SOCKET, &usock_stat)) { Alarmp( SPLOG_FATAL, SECURITY, "Spread unable to stat the unix domain socket dir (%s). Please verify the selected directory and restart the daemon\n", SP_UNIX_SOCKET ); exit( 0 ); } if ( (usock_stat.st_mode & S_IWOTH) || !(usock_stat.st_uid == (uid_t) 0) ) Alarmp( SPLOG_WARNING, PRINT, "Spread: SECURITY RISK! running as root, but unix domain socket is not in a root-only writable directory. May risk denial of service or malicious deletion of unexpected file in directory: %s\n", SP_UNIX_SOCKET ); } #endif Sess_init(); Stat_init(); if( Log ) Log_init(); #ifndef ARCH_PC_WIN95 /* Yupp, we're paranoid */ if (geteuid() != (uid_t) 0) { Alarmp( SPLOG_WARNING, SECURITY, "Spread: not running as root, won't chroot\n" ); } else if ( (grp = getgrnam(Conf_get_group())) == NULL || (pwd = getpwnam(Conf_get_user())) == NULL ) { Invalid_privilege_decrease(Conf_get_user(), Conf_get_group()); } else if (chdir(Conf_get_runtime_dir()) < 0 || chroot(Conf_get_runtime_dir()) < 0 ) { Alarmp( SPLOG_FATAL, SECURITY, "Spread: FAILED chroot to '%s'\n", Conf_get_runtime_dir() ); } else if ( setgroups(1, &grp->gr_gid) < 0 || setgid(grp->gr_gid) < 0 || setuid(pwd->pw_uid) < 0) { Invalid_privilege_decrease(Conf_get_user(), Conf_get_group()); } else { Alarmp( SPLOG_INFO, SECURITY, "Spread: setugid and chroot successeful\n" ); } #endif /* ARCH_PC_WIN95 */ E_handle_events(); return 0; }
void setup(struct initializers *i) { /* Sets up all ports */ /* and waits for the start_mcast message to start the actual process */ int mcast_addr; int start = 0; int bytes; int num, c, num_groups, r, ret; int service_type = 0; int responded=0; int16 mess_type; int endian_mismatch=0; int response[10]; struct timeval timeout; unsigned char ttl_val; char target_groups[MAX_MEMBERS][MAX_GROUP_NAME]; char logfilename[10]; char sender[MAX_GROUP_NAME]; char groups[10][MAX_GROUP_NAME]; char mess_buf[MAX_MESS_LEN]; sp_time test_timeout; struct packet_structure *p=malloc(sizeof(struct packet_structure)); snprintf(logfilename, 10, "%d.out", machine_index); logfile = fopen(logfilename, "w"); ret = SP_connect_timeout( Spread_name, User, 0, 1, &Mbox, Private_group, test_timeout ); if( ret != ACCEPT_SESSION ) { SP_error( ret ); Bye(); } printf("User: connected to %s with private group %s\n", Spread_name, Private_group ); E_init(); ret = SP_join(Mbox, group); printf("Join group %s:%d\n", group, ret); if (machine_index == 1) { for (c=1; c <= total_machines; c++) { response[c] = 0; completed[c] = 0; } /* Collect up the users, and send start message when everyone is in the group */ response[1]=1; while (responded < 1) { ret = SP_receive( Mbox, &service_type, sender, 100, &num_groups, target_groups, &mess_type, &endian_mismatch, sizeof(mess_buf), mess_buf ); p = (struct packet_structure *)mess_buf; if (p->type == 4) { printf("ret = %d Got machine id %d\n", ret, p->machine_index); /* Add this machine to the array and check to see if we are done */ response[p->machine_index] = 1; printf("Got response from %d\n", p->machine_index); r = 1; for (c=1; c <= total_machines; c++) { if (response[c] == 0) r =0; } if (r==1) responded = 1; } else if (p->type == 3 && machine_index == 1) { completed[p->machine_index] = 1; } } /* Send start sending message to everyone */ if (r=1) /*All ready */ { p->type= 2; printf("Ready to go..\n"); ret= SP_multicast( Mbox, AGREED_MESS, group, 1, sizeof(struct packet_structure), (char *)p ); } } else { /*We are not machine index 1*/ /*Send ready to begin message */ p->type = 4; p->machine_index = machine_index; ret= SP_multicast( Mbox, AGREED_MESS, group, 1, sizeof(struct packet_structure), (char *)p ); printf("Join=%d, group %s\n", ret, group); if( ret < 0 ) { SP_error( ret ); Bye(); } else { printf("Sent: %d\n", ret); } } };
int main( int argc, char *argv[] ) { int ret; #ifdef SPREAD_VERSION int mver, miver, pver; #endif sp_time test_timeout; test_timeout.sec = 5; test_timeout.usec = 0; Usage( argc, argv ); #ifdef SPREAD_VERSION if (!SP_version( &mver, &miver, &pver)) { printf("main: Illegal variables passed to SP_version()\n"); Bye(); } printf("Spread library version is %d.%d.%d\n", mver, miver, pver); #else printf("Spread library version is %1.2f\n", SP_version() ); #endif #ifdef ENABLE_PASSWORD if (Use_Pword) { strncpy(Pword_user.username, Pword_username, 32); Pword_user.username[32] = '\0'; strncpy(Pword_user.password, Pword_password, 8); Pword_user.password[8] = '\0'; SP_set_auth_method("PWORD", pword_authenticate, &Pword_user); } #endif ret = SP_connect_timeout( Spread_name, User, 0, 1, &Mbox, Private_group, test_timeout ); if( ret != ACCEPT_SESSION ) { SP_error( ret ); Bye(); } printf("User: connected to %s with private group %s\n", Spread_name, Private_group ); #ifndef _REENTRANT E_init(); E_attach_fd( 0, READ_FD, User_command, 0, NULL, LOW_PRIORITY ); E_attach_fd( Mbox, READ_FD, Read_message, 0, NULL, HIGH_PRIORITY ); #endif /* _REENTRANT */ Print_menu(); printf("\nUser> "); fflush(stdout); Num_sent = 0; #ifdef _REENTRANT #ifndef ARCH_PC_WIN95 ret = pthread_create( &Read_pthread, NULL, Read_thread_routine, 0 ); #else /* ARCH_PC_WIN95 */ Read_pthread = CreateThread( NULL, 0, Read_thread_routine, NULL, 0, &ret ); #endif /* ARCH_PC_WIN95 */ for(;;) { User_command(); #ifdef __bsdi__ /* bug in BSDI */ sched_yield(); #endif } #else /* _REENTRANT */ #ifndef ARCH_PC_WIN95 E_handle_events(); #else /* ARCH_PC_WIN95 */ for(;;) User_command(); #endif /* ARCH_PC_WIN95 */ #endif /* _REENTRANT */ return( 0 ); }
int main( int argc, char *argv[] ) { int i; #ifdef _REENTRANT int ret; #endif fclose(stderr); Alarm_set_types( NONE ); Alarmp( SPLOG_PRINT, SYSTEM, "/===========================================================================\\\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| The Spread Toolkit. |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Copyright (c) 1993-2014 Spread Concepts LLC |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| All rights reserved. |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| The Spread package is licensed under the Spread Open-Source License. |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| You may only use this software in compliance with the License. |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| A copy of the license can be found at http://www.spread.org/license |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| This product uses software developed by Spread Concepts LLC for use |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| in the Spread toolkit. For more information about Spread, |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| see http://www.spread.org |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| This software is distributed on an \"AS IS\" basis, WITHOUT WARRANTY OF |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| ANY KIND, either express or implied. |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Creators: |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Yair Amir [email protected] |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Michal Miskin-Amir [email protected] |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Jonathan Stanton [email protected] |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| John Schultz [email protected] |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Contributors: |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Amy Babay [email protected] - accelerated ring protocol. |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Ryan Caudy [email protected] - contribution to process groups.|\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Claudiu Danilov [email protected] - scalable, wide-area support. |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Cristina Nita-Rotaru [email protected] - GC security. |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Theo Schlossnagle [email protected] - Perl, autoconf, old skiplist |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Dan Schoenblum [email protected] - Java Interface Developer. |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Special thanks to the following for discussions and ideas: |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Ken Birman, Danny Dolev, Jacob Green, Mike Goodrich, Ben Laurie, |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| David Shaw, Gene Tsudik, Robbert VanRenesse. |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Partial funding provided by the Defense Advanced Research Project Agency |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| (DARPA) and the National Security Agency (NSA) 2000-2004. The Spread |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| toolkit is not necessarily endorsed by DARPA or the NSA. |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| For a full list of contributors, see Readme.txt in the distribution. |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| WWW: www.spread.org www.spreadconcepts.com |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Contact: [email protected] |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| |\n"); Alarmp( SPLOG_PRINT, SYSTEM, "| Version %d.%02d.%02d Built %-17s |\n", (int)SP_MAJOR_VERSION, (int)SP_MINOR_VERSION, (int)SP_PATCH_VERSION, Spread_build_date ); Alarmp( SPLOG_PRINT, SYSTEM, "\\===========================================================================/\n"); #ifdef ARCH_PC_WIN95 ret = WSAStartup( MAKEWORD(2,0), &WSAData ); if( ret != 0 ) Alarm( EXIT, "sptmonitor: main: winsock initialization error %d\n", ret ); #endif /* ARCH_PC_WIN95 */ Usage( argc, argv ); Alarm_set_interactive(); read_configuration(); initialize_locks(); for( i=0; i < Conf_num_procs( &Cn ); i++ ) Partition[i] = 0; for( i=0; i < Conf_num_procs( &Cn ); i++ ) Status_vector[i] = 0; Pack_scat.elements[0].len = sizeof( packet_header ); Pack_scat.elements[0].buf = (char *)&Pack; Pack.proc_id = My.id; Pack.seq = My_port; Pack.memb_id.proc_id = 15051963; Report_scat.num_elements = 2; Report_scat.elements[0].buf = (char *)&Report_pack; Report_scat.elements[0].len = sizeof(packet_header); Report_scat.elements[1].buf = (char *)&GlobalStatus; Report_scat.elements[1].len = sizeof(status); SendChan = DL_init_channel( SEND_CHANNEL , My_port, 0, 0 ); Report_socket = DL_init_channel( RECV_CHANNEL, My_port, 0, 0 ); E_init(); /* both reentrent and non-reentrant code uses events */ #ifndef _REENTRANT E_attach_fd( 0, READ_FD, User_command, 0, NULL, LOW_PRIORITY ); E_attach_fd( Report_socket, READ_FD, Report_message, 0, NULL, HIGH_PRIORITY ); #endif /* _REENTRANT */ Print_menu(); #ifdef _REENTRANT #ifndef ARCH_PC_WIN95 ret = pthread_create( &Read_thread, NULL, Read_thread_routine, 0 ); ret = pthread_create( &Status_thread, NULL, Status_send_thread_routine, 0 ); ret = pthread_create( &Partition_thread, NULL, Partition_send_thread_routine, 0 ); #else /* ARCH_PC_WIN95 */ Read_thread = CreateThread( NULL, 0, Read_thread_routine, NULL, 0, &ret ); Status_thread = CreateThread( NULL, 0, Status_send_thread_routine, NULL, 0, &ret ); Partition_thread = CreateThread( NULL, 0, Partition_send_thread_routine, NULL, 0, &ret ); #endif /* ARCH_PC_WIN95 */ for(;;) { User_command(); } #else /*! _REENTRANT */ E_handle_events(); #endif /* _REENTRANT */ return 0; }
int main( int argc, char *argv[] ) { int fd; #if HAVE_SIGNAL_H struct sigaction signalaction; #endif #ifdef WIN32 WSADATA wsadata; WSAStartup(WINSOCK_VERSION, &wsadata); #endif E_init(); wack_alarm_set( PRINT | EXIT ); Usage( argc, argv ); Wackamole_init(); if(Debug) { wack_alarm_enable_timestamp(NULL); wack_alarm_set( PRINT | ARPING | WACK_DEBUG | EXIT ); } else { char pidstring[10]; wack_alarm_set(PRINT | EXIT); wack_alarm_enable_syslog("wackamole"); #ifndef WIN32 if(fork()) exit(0); setsid(); if(fork()) exit(0); #endif if( chdir("/") != 0 ){ wack_alarm(PRINT,"chdir to root failed"); } umask(0027); pid = getpid(); fd = open(_PATH_WACKAMOLE_PIDDIR "/wackamole.pid", O_WRONLY|O_CREAT|O_TRUNC, 0644); if(fd < 0) { wack_alarm(EXIT, "Cannot write PID file " _PATH_WACKAMOLE_PIDDIR "/wackamole.pid"); } snprintf(pidstring, 10, "%d\n", pid); #ifdef BROKEN_SNPRINTF if(pidstring[9] != '\0') { pidstring[8] = '\n'; pidstring[9] = '\0'; } #endif write(fd, pidstring, strlen(pidstring)); close(fd); #ifndef WIN32 fd = open("/dev/null", O_RDWR); if(fd <= 2) { wack_alarm(EXIT, "Cannot open /dev/null\n"); } close(STDIN_FILENO); close(STDOUT_FILENO); close(STDERR_FILENO); dup2(fd,STDIN_FILENO); dup2(fd,STDOUT_FILENO); dup2(fd,STDERR_FILENO); close(fd); #endif } #if HAVE_SIGNAL_H signalaction.sa_handler = Sig_handler; sigemptyset(&signalaction.sa_mask); signalaction.sa_flags = 0; if(sigaction(SIGINT, &signalaction, NULL)) { wack_alarm(EXIT, "An error occured while registering a SIGINT handler"); } if(sigaction(SIGTERM, &signalaction, NULL)) { wack_alarm(EXIT, "An error occured while registering a SIGTERM handler"); } if(sigaction(SIGBUS, &signalaction, NULL)) { wack_alarm(EXIT, "An error occured while registering a SIGBUS handler"); } if(sigaction(SIGQUIT, &signalaction, NULL)) { wack_alarm(EXIT, "An error occured while registering a SIGQUIT handler"); } if(sigaction(SIGSEGV, &signalaction, NULL)) { wack_alarm(EXIT, "An error occured while registering a SIGSEGV handler"); } #elif defined(WIN32) SetConsoleCtrlHandler(ConsoleEventHandlerRoutine, TRUE); #endif if_initialize(); /* connecting to the relevant Spread daemon, asking for group info */ Spread_reconnect(-8); Send_local_arp_cache_repeat(); E_handle_events(); return -1; }
/*! Init overlay */ int ovr_init(void *arg){ E_init(); return 0; }