void server_generate_clients( int count ) { int i; unsigned char s[4] = { 192, 168, 1, 1 }; char pname[MAX_NAME_LEN]; tm_entity_movable_t* new_pl; log_info( "Generating clients... \n" ); for( i = 0; i < count; i++ ) { sprintf( pname, "Player_%u.%u.%u.%u", s[0], s[1], s[2], s[3] ); if( s[3] == 255 ) { s[2]++; s[3] = 1; } else s[3]++; new_pl = tm_server_add_cl( pname ); if( !new_pl ) break; log_info1( "[I] %s generated.\n", pname ); server_register_player( new_pl ); } log_info1( "[I] %d players generated.\n", i ); }
static int agent_log(int major, int minor, void *serv_arg, void *cl_arg) { struct snmp_log_message *m = serv_arg; switch (m->priority) { case LOG_EMERG: log_emerg("net-snmp: %s", m->msg); break; case LOG_ALERT: case LOG_CRIT: case LOG_ERR: log_error("net-snmp: %s", m->msg); break; case LOG_WARNING: log_warn("net-snmp: %s", m->msg); break; case LOG_NOTICE: log_info1("net-snmp: %s", m->msg); break; case LOG_INFO: log_info2("net-snmp: %s", m->msg); break; case LOG_DEBUG: log_debug("net-snmp: %s", m->msg); break; default: log_msg("net-snmp: %s", m->msg); } return 0; }
int main(int _argc, char **_argv) { sigset_t set; int i, sig, goto_daemon = 0, len; pid_t pid = 0; struct sigaction sa; int pagesize = sysconf(_SC_PAGE_SIZE); int internal = 0; argc = _argc; argv = _argv; if (argc < 2) goto usage; for(i = 1; i < argc; i++) { if (!strcmp(argv[i], "-d")) goto_daemon = 1; else if (!strcmp(argv[i], "-p")) { if (i == argc - 1) goto usage; pid_file = argv[++i]; } else if (!strcmp(argv[i], "-c")) { if (i == argc - 1) goto usage; conf_file = argv[++i]; } else if (!strcmp(argv[i], "--dump")) { if (i == argc - 1) goto usage; len = (strlen(argv[i + 1]) / pagesize + 1) * pagesize; conf_dump = memalign(pagesize, len); strcpy(conf_dump, argv[++i]); mprotect(conf_dump, len, PROT_READ); } else if (!strcmp(argv[i], "--internal")) internal = 1; } if (!conf_file) goto usage; if (internal) { while (getppid() != 1) sleep(1); } if (triton_init(conf_file)) _exit(EXIT_FAILURE); if (goto_daemon && pid != getpid()) { /*pid_t pid = fork(); if (pid > 0) _exit(EXIT_SUCCESS); if (pid < 0) { perror("fork"); return EXIT_FAILURE; } if (setsid() < 0) _exit(EXIT_FAILURE); pid = fork(); if (pid) _exit(0); umask(0); chdir("/"); close(STDIN_FILENO); close(STDOUT_FILENO); close(STDERR_FILENO);*/ daemon(0, 0); } if (pid_file) { FILE *f = fopen(pid_file, "w"); if (f) { fprintf(f, "%i", getpid()); fclose(f); } } change_limits(); #ifdef CRYPTO_OPENSSL openssl_init(); #endif if (triton_load_modules("modules")) return EXIT_FAILURE; log_msg("accel-ppp version %s\n", ACCEL_PPP_VERSION); triton_run(); sigfillset(&set); memset(&sa, 0, sizeof(sa)); sa.sa_handler = config_reload; sa.sa_mask = set; sigaction(SIGUSR1, &sa, NULL); sa.sa_handler = sigsegv; sa.sa_mask = set; sigaction(SIGSEGV, &sa, NULL); sigdelset(&set, SIGKILL); sigdelset(&set, SIGSTOP); sigdelset(&set, SIGSEGV); sigdelset(&set, SIGFPE); sigdelset(&set, SIGILL); sigdelset(&set, SIGBUS); sigdelset(&set, SIGHUP); sigdelset(&set, SIGIO); sigdelset(&set, SIGINT); sigdelset(&set, SIGUSR1); sigdelset(&set, 35); sigdelset(&set, 36); pthread_sigmask(SIG_SETMASK, &set, &orig_set); sigemptyset(&set); //sigaddset(&set, SIGINT); sigaddset(&set, SIGTERM); sigaddset(&set, SIGSEGV); sigaddset(&set, SIGILL); sigaddset(&set, SIGFPE); sigaddset(&set, SIGBUS); #ifdef USE_BACKUP backup_restore(internal); #endif sigwait(&set, &sig); log_info1("terminate, sig = %i\n", sig); ap_shutdown_soft(shutdown_cb, 1); pthread_mutex_lock(&lock); while (!term) pthread_cond_wait(&cond, &lock); pthread_mutex_unlock(&lock); triton_terminate(); if (restart != -1) __core_restart(restart); if (pid_file) unlink(pid_file); return EXIT_SUCCESS; usage: printf("usage: accel-pppd [-d] [-p <file>] -c <file>\n\ where:\n\ -d - daemon mode\n\ -p - write pid to <file>\n\ -c - config file\n"); _exit(EXIT_FAILURE); }