Home | History | Annotate | Download | only in ip

Lines Matching full:argv

405 static int iprule_list_flush_or_save(int argc, char **argv, int action)
435 if (matches(*argv, "preference") == 0 ||
436 matches(*argv, "order") == 0 ||
437 matches(*argv, "priority") == 0) {
441 if (get_u32(&pref, *argv, 0))
442 invarg("preference value is invalid\n", *argv);
445 } else if (strcmp(*argv, "not") == 0) {
447 } else if (strcmp(*argv, "tos") == 0) {
451 if (rtnl_dsfield_a2n(&tos, *argv))
452 invarg("TOS value is invalid\n", *argv);
455 } else if (strcmp(*argv, "fwmark") == 0) {
460 slash = strchr(*argv, '/');
463 if (get_u32(&fwmark, *argv, 0))
464 invarg("fwmark value is invalid\n", *argv);
472 } else if (strcmp(*argv, "dev") == 0 ||
473 strcmp(*argv, "iif") == 0) {
475 if (get_ifname(filter.iif, *argv))
476 invarg("\"iif\"/\"dev\" not a valid ifname", *argv);
478 } else if (strcmp(*argv, "oif") == 0) {
480 if (get_ifname(filter.oif, *argv))
481 invarg("\"oif\" not a valid ifname", *argv);
483 } else if (strcmp(*argv, "l3mdev") == 0) {
485 } else if (strcmp(*argv, "uidrange") == 0) {
488 if (sscanf(*argv, "%u-%u",
491 invarg("invalid UID range\n", *argv);
493 } else if (matches(*argv, "lookup") == 0 ||
494 matches(*argv, "table") == 0) {
498 if (rtnl_rttable_a2n(&tid, *argv))
499 invarg("table id value is invalid\n", *argv);
501 } else if (matches(*argv, "from") == 0 ||
502 matches(*argv, "src") == 0) {
504 get_prefix(&filter.src, *argv, af);
506 if (matches(*argv, "dst") == 0 ||
507 matches(*argv, "to") == 0) {
510 get_prefix(&filter.dst, *argv, af);
512 argc--; argv++;
574 static int iprule_modify(int cmd, int argc, char **argv)
604 if (strcmp(*argv, "not") == 0) {
606 } else if (strcmp(*argv, "from") == 0) {
610 get_prefix(&dst, *argv, req.r.rtm_family);
614 } else if (strcmp(*argv, "to") == 0) {
618 get_prefix(&dst, *argv, req.r.rtm_family);
622 } else if (matches(*argv, "preference") == 0 ||
623 matches(*argv, "order") == 0 ||
624 matches(*argv, "priority") == 0) {
628 if (get_u32(&pref, *argv, 0))
629 invarg("preference value is invalid\n", *argv);
631 } else if (strcmp(*argv, "tos") == 0 ||
632 matches(*argv, "dsfield") == 0) {
636 if (rtnl_dsfield_a2n(&tos, *argv))
637 invarg("TOS value is invalid\n", *argv);
639 } else if (strcmp(*argv, "fwmark") == 0) {
645 slash = strchr(*argv, '/');
648 if (get_u32(&fwmark, *argv, 0))
649 invarg("fwmark value is invalid\n", *argv);
658 } else if (matches(*argv, "realms") == 0) {
662 if (get_rt_realms_or_raw(&realm, *argv))
663 invarg("invalid realms\n", *argv);
665 } else if (matches(*argv, "table") == 0 ||
666 strcmp(*argv, "lookup") == 0) {
668 if (rtnl_rttable_a2n(&tid, *argv))
669 invarg("invalid table ID\n", *argv);
677 } else if (matches(*argv, "suppress_prefixlength") == 0 ||
678 strcmp(*argv, "sup_pl") == 0) {
682 if (get_s32(&pl, *argv, 0) || pl < 0)
684 *argv);
687 } else if (matches(*argv, "suppress_ifgroup") == 0 ||
688 strcmp(*argv, "sup_group") == 0) {
692 argv))
694 *argv);
697 } else if (strcmp(*argv, "dev") == 0 ||
698 strcmp(*argv, "iif") == 0) {
700 if (check_ifname(*argv))
701 invarg("\"iif\"/\"dev\" not a valid ifname", *argv);
703 *argv, strlen(*argv)+1);
704 } else if (strcmp(*argv, "oif") == 0) {
706 if (check_ifname(*argv))
707 invarg("\"oif\" not a valid ifname", *argv);
709 *argv, strlen(*argv)+1);
710 } else if (strcmp(*argv, "l3mdev") == 0) {
714 } else if (strcmp(*argv, "uidrange") == 0) {
718 if (sscanf(*argv, "%u-%u", &r.start, &r.end) != 2)
719 invarg("invalid UID range\n", *argv);
722 } else if (strcmp(*argv, "nat") == 0 ||
723 matches(*argv, "map-to") == 0) {
727 get_addr32(*argv));
732 if (strcmp(*argv, "type") == 0)
735 if (matches(*argv, "help") == 0)
737 else if (matches(*argv, "goto") == 0) {
742 if (get_u32(&target, *argv, 0))
743 invarg("invalid target\n", *argv);
746 } else if (matches(*argv, "nop") == 0)
748 else if (rtnl_rtntype_a2n(&type, *argv))
749 invarg("Failed to parse rule type", *argv);
754 argv++;
775 int do_iprule(int argc, char **argv)
779 } else if (matches(argv[0], "list") == 0 ||
780 matches(argv[0], "lst") == 0 ||
781 matches(argv[0], "show") == 0) {
782 return iprule_list_flush_or_save(argc-1, argv+1, IPRULE_LIST);
783 } else if (matches(argv[0], "save") == 0) {
784 return iprule_list_flush_or_save(argc-1, argv+1, IPRULE_SAVE);
785 } else if (matches(argv[0], "restore") == 0) {
787 } else if (matches(argv[0], "add") == 0) {
788 return iprule_modify(RTM_NEWRULE, argc-1, argv+1);
789 } else if (matches(argv[0], "delete") == 0) {
790 return iprule_modify(RTM_DELRULE, argc-1, argv+1);
791 } else if (matches(argv[0], "flush") == 0) {
792 return iprule_list_flush_or_save(argc-1, argv+1, IPRULE_FLUSH);
793 } else if (matches(argv[0], "help") == 0)
797 "Command \"%s\" is unknown, try \"ip rule help\".\n", *argv);
801 int do_multirule(int argc, char **argv)
821 return do_iprule(argc, argv);