Exemple #1
0
/* Return value becomes exitcode. It's okay to not return at all */
int do_ipaddr(int argc, char **argv)
{
	static const char *const commands[] = {
		"add", "delete", "list", "show", "lst", "flush", 0
	};

	int command_num = 2;

	if (*argv) {
		command_num = index_in_substr_array(commands, *argv);
	}
	switch (command_num) {
		case 0: /* add */
			return ipaddr_modify(RTM_NEWADDR, argc-1, argv+1);
		case 1: /* delete */
			return ipaddr_modify(RTM_DELADDR, argc-1, argv+1);
		case 2: /* list */
		case 3: /* show */
		case 4: /* lst */
			return ipaddr_list_or_flush(argc-1, argv+1, 0);
		case 5: /* flush */
			return ipaddr_list_or_flush(argc-1, argv+1, 1);
	}
	bb_error_msg_and_die("unknown command %s", *argv);
}
int do_ipaddr(int argc, char **argv)
{
	if (argc < 1)
		return ipaddr_list_or_flush(0, NULL, 0);
	if (matches(*argv, "add") == 0)
		return ipaddr_modify(RTM_NEWADDR, argc-1, argv+1);
	if (matches(*argv, "delete") == 0)
		return ipaddr_modify(RTM_DELADDR, argc-1, argv+1);
	if (matches(*argv, "list") == 0 || matches(*argv, "show") == 0
	    || matches(*argv, "lst") == 0)
		return ipaddr_list_or_flush(argc-1, argv+1, 0);
	if (matches(*argv, "flush") == 0)
		return ipaddr_list_or_flush(argc-1, argv+1, 1);
	if (matches(*argv, "help") == 0)
		usage();
	fprintf(stderr, "Command \"%s\" is unknown, try \"ip address help\".\n", *argv);
	exit(-1);
}
Exemple #3
0
/* Return value becomes exitcode. It's okay to not return at all */
int do_ipaddr(int argc, char **argv)
{
	static const char commands[] ALIGN1 =
		"add\0""delete\0""list\0""show\0""lst\0""flush\0";

	int command_num = 2; /* default command is list */

	if (*argv) {
		command_num = index_in_substrings(commands, *argv);
	}
	if (command_num < 0 || command_num > 5)
		bb_error_msg_and_die("unknown command %s", *argv);
	--argc;
	++argv;
	if (command_num == 0) /* add */
		return ipaddr_modify(RTM_NEWADDR, argc, argv);
	else if (command_num == 1) /* delete */
		return ipaddr_modify(RTM_DELADDR, argc, argv);
	else if (command_num == 5) /* flush */
		return ipaddr_list_or_flush(argc, argv, 1);
	else /* 2 == list, 3 == show, 4 == lst */
		return ipaddr_list_or_flush(argc, argv, 0);
}
Exemple #4
0
int do_ipaddr(int argc, char **argv)
{
    if (argc < 1)
        return ipaddr_list_or_flush(0, NULL, 0);
    if (matches(*argv, "add") == 0)
        return ipaddr_modify(RTM_NEWADDR, NLM_F_CREATE|NLM_F_EXCL, argc-1, argv+1);
    if (matches(*argv, "change") == 0 ||
            strcmp(*argv, "chg") == 0)
        return ipaddr_modify(RTM_NEWADDR, NLM_F_REPLACE, argc-1, argv+1);
    if (matches(*argv, "replace") == 0)
        return ipaddr_modify(RTM_NEWADDR, NLM_F_CREATE|NLM_F_REPLACE, argc-1, argv+1);
    if (matches(*argv, "delete") == 0)
        return ipaddr_modify(RTM_DELADDR, 0, argc-1, argv+1);
    if (matches(*argv, "list") == 0 || matches(*argv, "show") == 0
            || matches(*argv, "lst") == 0)
        return ipaddr_list_or_flush(argc-1, argv+1, 0);
    if (matches(*argv, "flush") == 0)
        return ipaddr_list_or_flush(argc-1, argv+1, 1);
    if (matches(*argv, "help") == 0)
        usage();
    fprintf(stderr, "Command \"%s\" is unknown, try \"ip addr help\".\n", *argv);
    exit(-1);
}