Exemplo n.º 1
0
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);
}
Exemplo n.º 2
0
int main(int argc, char** argv)
{
    return agent_main(argc,argv);
}
Exemplo n.º 3
0
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;
}