break;
case SENDER_DENY:
case SENDER_ALLOW:
- if (argc != 4 && argc != 5)
+ if (argc != 4 || parse_cidr(argv[3], scd->host,
+ sizeof(scd->host), &scd->netmask) == NULL)
return -E_COMMAND_SYNTAX;
- if (!is_valid_ipv4_address(argv[3]))
- return -E_COMMAND_SYNTAX;
- scd->netmask = 32;
- if (argc == 5) {
- scd->netmask = atoi(argv[4]);
- if (scd->netmask < 0 || scd->netmask > 32)
- return -E_COMMAND_SYNTAX;
- }
- strncpy(scd->host, argv[3], sizeof(scd->host));
break;
case SENDER_ADD:
case SENDER_DELETE:
struct misc_meta_data tmp, *nmmd = &tmp;
char *s;
- ret = para_sigaction(SIGUSR1, dummy);
- if (ret < 0)
- return ret;
+ para_sigaction(SIGUSR1, dummy);
- if (argc > 1)
- num = atoi(argv[1]);
+ if (argc > 2)
+ return -E_COMMAND_SYNTAX;
+ if (argc > 1) {
+ ret = para_atoi32(argv[1], &num);
+ if (ret < 0)
+ goto out;
+ }
for (;;) {
mmd_dup(nmmd);
}
-static int reset_signals(void)
+static void reset_signals(void)
{
- int ret = para_sigaction(SIGCHLD, SIG_IGN);
-
- if (ret < 0)
- return ret;
- ret = para_sigaction(SIGINT, SIG_DFL);
- if (ret < 0)
- return ret;
- ret = para_sigaction(SIGTERM, SIG_DFL);
- if (ret < 0)
- return ret;
- ret = para_sigaction(SIGHUP, SIG_DFL);
- if (ret < 0)
- return ret;
- return 1;
+ para_sigaction(SIGCHLD, SIG_IGN);
+ para_sigaction(SIGINT, SIG_DFL);
+ para_sigaction(SIGTERM, SIG_DFL);
+ para_sigaction(SIGHUP, SIG_DFL);
}
/**
char *p, *command = NULL;
size_t numbytes;
- ret = reset_signals();
- if (ret < 0)
- goto err_out;
+ reset_signals();
/* we need a blocking fd here as recv() might return EAGAIN otherwise. */
ret = mark_fd_blocking(fd);
if (ret < 0)
ret = cmd->handler(fd, argc, argv);
mutex_lock(mmd_mutex);
mmd->num_commands++;
- free(mmd->afd.afhi.info_string);
- free(mmd->afd.afhi.chunk_table);
mutex_unlock(mmd_mutex);
if (ret >= 0)
goto out;