Lines Matching full:argv
249 static int iprule_list_or_save(int argc, char **argv, int save)
327 static int iprule_modify(int cmd, int argc, char **argv)
354 if (strcmp(*argv, "not") == 0) {
356 } else if (strcmp(*argv, "from") == 0) {
359 get_prefix(&dst, *argv, req.r.rtm_family);
362 } else if (strcmp(*argv, "to") == 0) {
365 get_prefix(&dst, *argv, req.r.rtm_family);
368 } else if (matches(*argv, "preference") == 0 ||
369 matches(*argv, "order") == 0 ||
370 matches(*argv, "priority") == 0) {
373 if (get_u32(&pref, *argv, 0))
374 invarg("preference value is invalid\n", *argv);
376 } else if (strcmp(*argv, "tos") == 0 ||
377 matches(*argv, "dsfield") == 0) {
380 if (rtnl_dsfield_a2n(&tos, *argv))
381 invarg("TOS value is invalid\n", *argv);
383 } else if (strcmp(*argv, "fwmark") == 0) {
387 if ((slash = strchr(*argv, '/')) != NULL)
389 if (get_u32(&fwmark, *argv, 0))
390 invarg("fwmark value is invalid\n", *argv);
397 } else if (matches(*argv, "realms") == 0) {
400 if (get_rt_realms_or_raw(&realm, *argv))
401 invarg("invalid realms\n", *argv);
403 } else if (matches(*argv, "table") == 0 ||
404 strcmp(*argv, "lookup") == 0) {
407 if (rtnl_rttable_a2n(&tid, *argv))
408 invarg("invalid table ID\n", *argv);
416 } else if (matches(*argv, "suppress_prefixlength") == 0 ||
417 strcmp(*argv, "sup_pl") == 0) {
420 if (get_s32(&pl, *argv, 0) || pl < 0)
421 invarg("suppress_prefixlength value is invalid\n", *argv);
423 } else if (matches(*argv, "suppress_ifgroup") == 0 ||
424 strcmp(*argv, "sup_group") == 0) {
427 if (rtnl_group_a2n(&group, *argv))
428 invarg("Invalid \"suppress_ifgroup\" value\n", *argv);
430 } else if (strcmp(*argv, "dev") == 0 ||
431 strcmp(*argv, "iif") == 0) {
433 addattr_l(&req.n, sizeof(req), FRA_IFNAME, *argv, strlen(*argv)+1);
434 } else if (strcmp(*argv, "oif") == 0) {
436 addattr_l(&req.n, sizeof(req), FRA_OIFNAME, *argv, strlen(*argv)+1);
437 } else if (strcmp(*argv, "uidrange") == 0) {
441 if (sscanf(*argv, "%u-%u", &r.start, &r.end) != 2)
442 invarg("invalid UID range\n", *argv);
445 } else if (strcmp(*argv, "nat") == 0 ||
446 matches(*argv, "map-to") == 0) {
449 addattr32(&req.n, sizeof(req), RTA_GATEWAY, get_addr32(*argv));
454 if (strcmp(*argv, "type") == 0) {
457 if (matches(*argv, "help") == 0)
459 else if (matches(*argv, "goto") == 0) {
463 if (get_u32(&target, *argv, 0))
464 invarg("invalid target\n", *argv);
466 } else if (matches(*argv, "nop") == 0)
468 else if (rtnl_rtntype_a2n(&type, *argv))
469 invarg("Failed to parse rule type", *argv);
474 argv++;
519 static int iprule_flush(int argc, char **argv)
544 int do_iprule(int argc, char **argv)
548 } else if (matches(argv[0], "list") == 0 ||
549 matches(argv[0], "lst") == 0 ||
550 matches(argv[0], "show") == 0) {
551 return iprule_list_or_save(argc-1, argv+1, 0);
552 } else if (matches(argv[0], "save") == 0) {
553 return iprule_list_or_save(argc-1, argv+1, 1);
554 } else if (matches(argv[0], "restore") == 0) {
556 } else if (matches(argv[0], "add") == 0) {
557 return iprule_modify(RTM_NEWRULE, argc-1, argv+1);
558 } else if (matches(argv[0], "delete") == 0) {
559 return iprule_modify(RTM_DELRULE, argc-1, argv+1);
560 } else if (matches(argv[0], "flush") == 0) {
561 return iprule_flush(argc-1, argv+1);
562 } else if (matches(argv[0], "help") == 0)
565 fprintf(stderr, "Command \"%s\" is unknown, try \"ip rule help\".\n", *argv);
569 int do_multirule(int argc, char **argv)
588 return do_iprule(argc, argv);