Lines Matching full:argv
65 typedef int (*cmdobj)(char **argv);
509 static void vlan_parse_opt(char **argv, struct nlmsghdr *n, unsigned int size)
519 for (; *argv; argv++) {
522 if ((idx = substring_to_idx(*argv++, vlan_optlist)) == -1) iphelp();
525 if (!*argv) iphelp();
526 param = atolx(*argv);
530 if (!*argv) error_exit("Invalid vlan id.");
531 if ((idx = substring_to_idx(*argv, vlan_protolist)) == -1) iphelp();
539 if ((param = substring_to_idx(*argv, on_off)) == -1) iphelp();
551 static int linkupdate(char **argv)
560 int len = 0, add = (*argv[-1] == 'a') ? 1 : 0;
563 for (; *argv; argv++) {
566 uint8_t idx = substring_to_idx(*argv, objectlist);
569 type = *++argv;
572 else if (idx == 1) dev = name = *++argv;
573 else if (idx == 2) link = *++argv;
574 else if (idx == 3) addr = *++argv;
575 else if (!dev) name = dev = *argv;
604 vlan_parse_opt(++argv, &request.mhdr, sizeof(request));
638 static int link_set(char **argv)
648 if (!*argv) error_exit("\"dev\" missing");
649 xstrncpy(req.ifr_name, *argv, IF_NAMESIZE);
652 for (++argv; *argv;) {
653 if ((idx = substring_to_idx(*argv++, cmd_objectlist)) == -1) iphelp();
662 if (!*argv) iphelp();
663 else if (!strcmp(*argv, "on")) {
668 } else if (!strcmp(*argv,"off")) {
674 ++argv;
677 xstrncpy(req.ifr_ifru.ifru_newname, *argv, IF_NAMESIZE);
679 xstrncpy(req.ifr_name, *argv++, IF_NAMESIZE);
683 req.ifr_ifru.ifru_ivalue = atolx(*argv++);
687 req.ifr_ifru.ifru_mtu = atolx(*argv++);
692 fill_hwaddr(*argv++, IF_NAMESIZE,
698 fill_hwaddr(*argv++, IF_NAMESIZE,
808 static int get_link_info(struct nlmsghdr* h,struct linkdata* link,char **argv)
846 if (*argv && !strcasecmp("up",*argv) && !(link->flags & IFF_UP)) return 1;
899 static int display_link_info(struct nlmsghdr *mhdr, char **argv)
903 if (!get_link_info(mhdr, &link, argv)) {
915 static int link_show(char **argv)
923 if (*argv && strcasecmp("up",*argv)) index = get_ifaceindex(*argv, 1);
933 return (filter_nlmesg(display_link_info, argv));
936 static int iplink(char **argv)
943 if (!*argv) idx = 2;
944 else if ((idx = substring_to_idx(*argv++, cmd_objectlist)) == -1) iphelp();
946 return ipcmd(argv);
1055 static int ipaddrupdate(char **argv)
1057 int length, cmd = !memcmp("add", argv[-1], strlen(argv[-1]))
1085 while (*argv) {
1086 idx = substring_to_idx(*argv, cmd_objectlist);
1088 if (!*++argv)
1092 dev = *argv;
1099 parse_prefix(addr, &netmask, &len, *argv,
1111 if (*argv[0] == '+') {
1113 } else if (*argv[0] == '-') {
1119 if (get_prefix(addr, &af, *argv, req.ifadd.ifa_family))
1130 label = *argv;
1139 if (get_prefix(addr, &af, *argv, req.ifadd.ifa_family))
1150 int scope = idxfromRPDB(*argv, RPDB_rtscopes);
1151 if (scope < 0) error_exit("wrong scope '%s'", *argv);
1162 parse_prefix(addr, &netmask, &len, *argv,
1176 argv++;
1228 static int ipaddr_listflush(char **argv)
1236 TT.flush = *argv[-1] == 'f' ? 1 : 0;
1240 if (!*argv)
1246 while (*argv) {
1247 switch (idx = substring_to_idx(*argv, cmd_objectlist)) {
1250 if (!*++argv) error_exit("Incomplete Command line");
1251 else if (!strcmp(*argv, "0")) return 0;
1256 parse_prefix(addr, &netmask, &len, *argv, TT.addressfamily);
1259 addrinfo.addr = strtok(*argv, "/");
1265 if (!*++argv) error_exit("Incomplete Command line");
1266 name = *argv;
1269 if (isdigit(**argv)) {
1270 int idx = atolx(*argv);
1281 if (isdigit(**argv))
1290 if (!*++argv) error_exit("Incomplete Command line");
1291 addrinfo.label = *argv;
1294 if (!*++argv) error_exit("Incomplete Command line");
1299 *argv);
1300 TT.filter_dev = *argv;
1303 argv++;
1425 static int ipaddr(char **argv)
1433 if (!*argv) idx = 1;
1434 else if ((idx = substring_to_idx(*argv++, cmd_objectlist)) == -1) iphelp();
1437 return ipcmd(argv);
1467 static int display_route_info(struct nlmsghdr *mhdr, char **argv)
1670 static int route_get(char **argv)
1688 for (; *argv; argv++) {
1689 switch(idx = substring_to_idx(*argv, cmd_objectlist)) {
1691 case 6: argv++; //fallthrough
1697 if (!*argv) error_exit("'%s': Missing Prefix", argv[-1]);
1698 parse_prefix(addr, &netmask, &len, *argv, request.msg.rtm_family);
1710 if (!*++argv) show_iproute_help();
1711 if (idx == 1) idev = *argv, flag = RTA_IIF;
1712 else odev = *argv, flag = RTA_OIF;
1713 idx = get_ifaceindex(*argv, 1);
1763 static int route_show_flush(char **argv)
1775 if (*argv[-1] == 'f') TT.flush = 1;
1776 if (TT.flush && !*argv) show_iproute_help();
1779 for (; *argv; argv++) {
1780 switch (idx = substring_to_idx(*argv, cmd_objectlist)) {
1782 if (!*++argv) show_iproute_help();
1783 if ((idx = idxfromRPDB(*argv,RPDB_rtprotos)) < 0)
1791 if (!*++argv) show_iproute_help();
1792 int dev = get_ifaceindex(*argv, 1);
1799 if (!*++argv) show_iproute_help();
1801 &gfilter.rvia.len, *argv, gfilter.rvia.family);
1807 if (!*++argv) show_iproute_help();
1808 idx = substring_to_idx(*argv, cmd_objectlist);
1812 if ((gfilter.tb = idxfromRPDB(*argv, RPDB_rttables)) < 0)
1813 error_exit("table %s is invalid.", *argv);
1820 if (!*++argv) show_iproute_help();
1821 idx = substring_to_idx(*argv, cmd_objectlist);
1822 if (idx < 0) if (!*++argv) show_iproute_help();
1824 if (!*++argv) show_iproute_help();
1826 &gfilter.rsrc.len, *argv, gfilter.rsrc.family);
1831 if ((idx == 12 ||idx == 11) && !*++argv) show_iproute_help();
1833 &gfilter.msrc.len, *argv, gfilter.msrc.family);
1841 idx = substring_to_idx(*argv, cmd_objectlist);
1842 if (idx != -1 && !*++argv) show_iproute_help();
1845 if (!*++argv) show_iproute_help();
1847 &gfilter.rdst.len, *argv, gfilter.rdst.family);
1853 if ((idx == 12 ||idx == 11) && !*++argv) show_iproute_help();
1855 &gfilter.mdst.len, *argv, gfilter.mdst.family);
1889 static int route_update(char **argv, unsigned int route_flags)
1931 for (; *argv; argv++) {
1932 idx = substring_to_idx(*argv, cmd_objectlist);
1934 if (!*++argv) show_iproute_help();
1935 parse_prefix(addr, &netmask, &len, *argv, req.msg.rtm_family);
1940 if (!*++argv) show_iproute_help();
1941 parse_prefix(addr, &netmask, &len, *argv, req.msg.rtm_family);
1945 if (!*++argv) show_iproute_help();
1946 if (substring_to_idx(*argv, cmd_objectlist ) == 3) {
1948 if (!*++argv) show_iproute_help();
1950 idx = atolx(*argv);
1954 if (!*++argv) show_iproute_help();
1955 if ((idx = idxfromRPDB(*argv,RPDB_rtprotos)) < 0)
1956 error_exit("Invalid argument protocol %s.",*argv);
1960 if (!*++argv) show_iproute_help();
1961 req.msg.rtm_table = idxfromRPDB(*argv, RPDB_rttables);
1963 if (!*++argv) show_iproute_help();
1964 d = *argv;
1969 if (!*++argv) show_iproute_help();
1970 metric = strtoul(*argv, &ptr, 0);
1972 error_exit("Invalid argument metric %s.",*argv);
1979 if (!*++argv) show_iproute_help();
1980 idx = substring_to_idx(*argv,rtmtypes);
1982 if (!*++argv) show_iproute_help();
1987 parse_prefix(addr, &netmask, &len, *argv, req.msg.rtm_family);
2025 static int iproute(char **argv)
2033 switch (idx = substring_to_idx(*argv , cmd_objectlist1)) {
2035 return route_update(++argv , NLM_F_CREATE|NLM_F_EXCL);
2037 return route_update(++argv , NLM_F_CREATE|NLM_F_APPEND);
2040 return route_update(++argv , NLM_F_REPLACE);
2043 return route_update(++argv , RTM_DELROUTE);
2045 return route_get(++argv);
2048 return route_show_flush(++argv);
2050 return route_update(++argv , NLM_F_CREATE);
2052 return route_update(++argv , NLM_F_CREATE|NLM_F_REPLACE);
2054 return route_update(++argv , NLM_F_EXCL);
2056 return route_show_flush(++argv);
2058 if (!*argv) return route_show_flush(argv);
2078 static int ruleupdate(char **argv)
2080 int8_t idx, tflag = 0, opt = (*argv[-1] == 'a') ? RTM_NEWRULE : RTM_DELRULE;
2102 for (; *argv; argv++) {
2103 switch ((idx = substring_to_idx(*argv, options))) {
2110 if (!*++argv) error_exit("'%s': Missing Prefix", argv[-1]);
2111 parse_prefix(addr, &netmask, &len, *argv, request.msg.rtm_family);
2127 if (!*++argv)
2129 pref = strtoul(*argv, &ptr, 0);
2130 if (!ptr || (ptr == *argv) || *ptr || pref > 0xFFFFFFFFUL)
2140 if (!*++argv) error_exit("Missing TOS key");
2141 if ((tos = idxfromRPDB(*argv, RPDB_rtdsfield)) < 0)
2152 if (!*++argv) error_exit("Missing REALMSID");
2153 if ((ptr = strchr(*argv, '/'))) {
2155 if ((ret = idxfromRPDB(*argv, RPDB_rtrealms)) < 0)
2160 } else ptr = *argv;
2171 if (!*++argv) error_exit("Missing TableID");
2172 if ((tid = idxfromRPDB(*argv, RPDB_rttables)) < 0)
2180 if (!*++argv) error_exit("Missing dev/iif NAME");
2182 RTA_IIF, *argv, strlen(*argv)+1);
2190 if (!*++argv) error_exit("Missing nat/map-to ADDRESS");
2191 if (get_prefix(addr, &af /* Un-used variable */, *argv, AF_INET))
2201 if (!*++argv) error_exit("TYPE Missing");
2202 request.msg.rtm_type = rtmtype_str2idx(*argv);
2209 error_exit("Invalid argument '%s'", *argv);
2222 char **argv __attribute__ ((__unused__)))
2290 static int rulelist(char **argv)
2292 if (*argv) {
2298 return filter_nlmesg(show_rules, argv);
2301 static int iprule(char **argv)
2308 if (!*argv) idx = 1;
2309 else if ((idx = substring_to_idx(*argv++, options)) == -1)
2312 return ipcmd(argv);
2433 static void parse_iptunnel_args(struct ip_tunnel_parm *ptnl, char **argv,
2450 if (*argv && ipt_opt_idx <= 2 && string_to_idx(*argv, opts) == -1) {
2451 xstrncpy(ptnl->name, *argv, IF_NAMESIZE);
2459 argv++;
2461 for (; *argv; argv++, addr = 0) {
2462 switch (idx = string_to_idx(*argv, opts)) {
2464 if (!*++argv) error_exit("mode is missing");
2465 if ((!strcmp("ipip", *argv) || !strcmp("ip/ip", *argv)))
2467 else if ((!strcmp("gre", *argv) || !strcmp("gre/ip", *argv)))
2469 else if ((!strcmp("sit", *argv) || !strcmp("ipv6/ip", *argv)))
2480 if (!*++argv) error_exit("key value is missing");
2483 ret = getaddrinfo(*argv, NULL, &hint, &info);
2487 if (strchr(*argv, '.')) {
2488 if (get_prefix(&addr, &af, *argv, AF_INET))
2489 error_exit("invalid key '%s'", *argv);
2493 sscanf(*argv, "%u", &key_val);
2537 if (!*++argv) error_exit("remote/local address is missing");
2538 if (get_prefix(&addr, &af, *argv, AF_INET))
2539 error_exit("invalid remote/local address '%s'", *argv);
2543 if (!*++argv) error_exit("device name is missing");
2548 xstrncpy(req.ifr_name, *argv, IFNAMSIZ);
2556 if (!*++argv) error_exit("ttl value is missing");
2557 if (strcmp(*argv, "inherit"))
2558 ptnl->iph.ttl = atolx_range(*argv, 0, 255);
2562 if (!*++argv) error_exit("tos value is missing");
2563 if (strcmp(*argv, "inherit")) {
2565 unsigned long tval = strtoul(*argv, &ptr, 16);
2567 if (tval > 255) error_exit("invalid tos value '%s'", *argv);
2571 if ((ret = idxfromRPDB(*argv, RPDB_rtdsfield)) < 0)
2580 if (!*++argv) error_exit("name is missing");
2581 xstrncpy(ptnl->name, *argv, IF_NAMESIZE);
2586 xstrncpy(ptnl->name, *argv, IF_NAMESIZE);
2611 static int tunnellist(char **argv)
2617 parse_iptunnel_args(&iptnl, argv, 3);
2634 static int tunnelupdate(char **argv)
2639 if (*argv[-1] == 'a') {
2642 } else if (*argv[-1] == 'c') {
2648 parse_iptunnel_args(&iptnl, argv, idx);
2663 static int iptunnel(char **argv)
2671 if (!*argv) idx = 1;
2672 else if ((idx = substring_to_idx(*argv++, opts)) == -1)
2675 return ipcmd(argv);
2683 static int filter_nlmesg(int (*fun)(struct nlmsghdr *mhdr, char **argv),
2684 char **argv)
2721 if (fun && (err = fun(mhdr, argv))) return err;
2731 char **optargv = toys.argv;