int main(int argc, char **argv) { char **stripped=NULL; if (argc < 2) { /* not reached */ usage(argv[0]); } stripped = opt_strip_first(argc, argv); if (strcmp(argv[1], "--agent") == 0) { agent_main(argc-1, stripped); } else if (strcmp(argv[1], "--storagegroup") == 0) { storagegroup_main(argc-1, stripped); } else { usage(argv[0]); /* not reached */ } exit(0); }
int main(int argc, char** argv) { return agent_main(argc,argv); }
int main(int argc, char *argv[]) { char *file = NULL; char c; int daemon = 0; int rc = OK; if (getuid() != 0) { fprintf(stderr, "Run me as root please\n"); return 1; } while ((c = getopt(argc, argv, "c:dvh")) != EOF) { switch (c) { case 'c': file = strdup(optarg); if (file == NULL) { fprintf(stderr, "Failed to alloc memory\n"); exit(1); } break; case 'd': daemon++; break; case 'v': show_version(); exit(0); break; case 'h': usage(argv[0]); exit(0); break; default: usage(argv[0]); exit(1); } } init_filter(); set_conf_file(file); parse_conf(); rc = init_log(); if (rc != OK) { fprintf(stderr, "Failed to open log file \n"); return 1; } ip_socket_fd = ip_socket(); if (ip_socket_fd < 0) { fprintf(stderr, "Failed to create raw socket \n"); return 1; } rc = create_pipe(&ip_pipe_in_fd, &ip_pipe_out_fd); if (rc != OK) { fprintf(stderr, "Failed to create net pipe \n"); return 1; } rc = create_pipe(&cmd_pipe_in_fd, &cmd_pipe_out_fd); if (rc != OK) { fprintf(stderr, "Failed to create cmd pipe \n"); return 1; } log_msg(LOG_WARN, "Icmp Knock daemon %s started", version); /* Go daemon mode */ if (daemon) { switch (fork()) { case -1: fprintf(stderr, "fork(): call failed \n"); return 3; case 0: close(STDIN_FILENO); close(STDOUT_FILENO); close(STDERR_FILENO); if (setsid() == -1) { exit(1); } break; default : return 0; } } parent_pid = getpid(); child_pid = fork(); switch (child_pid) { case -1: fprintf(stderr, "fork(): call failed \n"); return 1; break; case 0: agent_main(); break; default : principal_main(); break; } return OK; }