Lines Matching defs:argv

69 typedef int (*cmdobj)(char **argv);
554 static void vlan_parse_opt(char **argv, struct nlmsghdr *n, unsigned int size)
564 for (; *argv; argv++) {
567 if ((idx = substring_to_idx(*argv++, vlan_optlist)) == -1) help_exit(0);
570 if (!*argv) help_exit(0);
571 param = atolx(*argv);
575 if (!*argv) error_exit("Invalid vlan id.");
576 if ((idx = substring_to_idx(*argv, vlan_protolist)) == -1) help_exit(0);
584 if ((param = substring_to_idx(*argv, on_off)) == -1) help_exit(0);
596 static int linkupdate(char **argv)
605 int len = 0, add = (*argv[-1] == 'a') ? 1 : 0;
608 for (; *argv; argv++) {
611 uint8_t idx = substring_to_idx(*argv, objectlist);
614 type = *++argv;
617 else if (idx == 1) dev = name = *++argv;
618 else if (idx == 2) link = *++argv;
619 else if (idx == 3) addr = *++argv;
620 else if (!dev) name = dev = *argv;
649 vlan_parse_opt(++argv, &request.mhdr, sizeof(request));
683 static int link_set(char **argv)
693 if (!*argv) error_exit("\"dev\" missing");
694 xstrncpy(req.ifr_name, *argv, IF_NAMESIZE);
697 for (++argv; *argv;) {
698 if ((idx = substring_to_idx(*argv++, cmd_objectlist)) == -1) help_exit(0);
707 if (!*argv) help_exit(0);
708 else if (!strcmp(*argv, "on")) {
713 } else if (!strcmp(*argv,"off")) {
719 ++argv;
722 xstrncpy(req.ifr_ifru.ifru_newname, *argv, IF_NAMESIZE);
724 xstrncpy(req.ifr_name, *argv++, IF_NAMESIZE);
728 req.ifr_ifru.ifru_ivalue = atolx(*argv++);
732 req.ifr_ifru.ifru_mtu = atolx(*argv++);
737 fill_hwaddr(*argv++, IF_NAMESIZE,
743 fill_hwaddr(*argv++, IF_NAMESIZE,
853 static int get_link_info(struct nlmsghdr* h,struct linkdata* link,char **argv)
891 if (*argv && !strcasecmp("up",*argv) && !(link->flags & IFF_UP)) return 1;
944 static int display_link_info(struct nlmsghdr *mhdr, char **argv)
948 if (!get_link_info(mhdr, &link, argv)) {
960 static int link_show(char **argv)
968 if (*argv && strcasecmp("up",*argv)) index = get_ifaceindex(*argv, 1);
978 return (filter_nlmesg(display_link_info, argv));
981 static int iplink(char **argv)
988 if (!*argv) idx = 2;
989 else if ((idx = substring_to_idx(*argv++, cmd_objectlist)) == -1)
992 return ipcmd(argv);
1101 static int ipaddrupdate(char **argv)
1103 int length, cmd = !memcmp("add", argv[-1], strlen(argv[-1]))
1131 while (*argv) {
1132 idx = substring_to_idx(*argv, cmd_objectlist);
1134 if (!*++argv)
1138 dev = *argv;
1145 parse_prefix(addr, &netmask, &len, *argv,
1157 if (*argv[0] == '+') {
1159 } else if (*argv[0] == '-') {
1165 if (get_prefix(addr, &af, *argv, req.ifadd.ifa_family))
1176 label = *argv;
1185 if (get_prefix(addr, &af, *argv, req.ifadd.ifa_family))
1196 int scope = idxfromRPDB(*argv, RPDB_rtscopes);
1197 if (scope < 0) error_exit("wrong scope '%s'", *argv);
1208 parse_prefix(addr, &netmask, &len, *argv,
1222 argv++;
1274 static int ipaddr_listflush(char **argv)
1282 TT.flush = *argv[-1] == 'f' ? 1 : 0;
1286 if (!*argv)
1292 while (*argv) {
1293 switch (idx = substring_to_idx(*argv, cmd_objectlist)) {
1296 if (!*++argv) error_exit("Incomplete Command line");
1297 else if (!strcmp(*argv, "0")) return 0;
1302 parse_prefix(addr, &netmask, &len, *argv, TT.addressfamily);
1305 addrinfo.addr = strtok(*argv, "/");
1311 if (!*++argv) error_exit("Incomplete Command line");
1312 name = *argv;
1315 if (isdigit(**argv)) {
1316 int idx = atolx(*argv);
1327 if (isdigit(**argv))
1336 if (!*++argv) error_exit("Incomplete Command line");
1337 addrinfo.label = *argv;
1340 if (!*++argv) error_exit("Incomplete Command line");
1345 *argv);
1346 TT.filter_dev = *argv;
1349 argv++;
1471 static int ipaddr(char **argv)
1479 if (!*argv) idx = 1;
1480 else if ((idx = substring_to_idx(*argv++, cmd_objectlist)) == -1)
1484 return ipcmd(argv);
1571 static int display_route_info(struct nlmsghdr *mhdr, char **argv)
1778 static int route_get(char **argv)
1796 for (; *argv; argv++) {
1797 switch(idx = substring_to_idx(*argv, cmd_objectlist)) {
1799 case 6: argv++; //fallthrough
1805 if (!*argv) error_exit("'%s': Missing Prefix", argv[-1]);
1806 parse_prefix(addr, &netmask, &len, *argv, request.msg.rtm_family);
1818 if (!*++argv) show_iproute_help();
1819 if (idx == 1) idev = *argv, flag = RTA_IIF;
1820 else odev = *argv, flag = RTA_OIF;
1821 idx = get_ifaceindex(*argv, 1);
1871 static int route_show_flush(char **argv)
1883 if (*argv[-1] == 'f') TT.flush = 1;
1884 if (TT.flush && !*argv) show_iproute_help();
1887 for (; *argv; argv++) {
1888 switch (idx = substring_to_idx(*argv, cmd_objectlist)) {
1890 if (!*++argv) show_iproute_help();
1891 if ((idx = idxfromRPDB(*argv,RPDB_rtprotos)) < 0)
1899 if (!*++argv) show_iproute_help();
1900 int dev = get_ifaceindex(*argv, 1);
1907 if (!*++argv) show_iproute_help();
1909 &gfilter.rvia.len, *argv, gfilter.rvia.family);
1915 if (!*++argv) show_iproute_help();
1916 idx = substring_to_idx(*argv, cmd_objectlist);
1920 if ((gfilter.tb = idxfromRPDB(*argv, RPDB_rttables)) < 0)
1921 error_exit("table %s is invalid.", *argv);
1928 if (!*++argv) show_iproute_help();
1929 idx = substring_to_idx(*argv, cmd_objectlist);
1930 if (idx < 0) if (!*++argv) show_iproute_help();
1932 if (!*++argv) show_iproute_help();
1934 &gfilter.rsrc.len, *argv, gfilter.rsrc.family);
1939 if ((idx == 12 ||idx == 11) && !*++argv) show_iproute_help();
1941 &gfilter.msrc.len, *argv, gfilter.msrc.family);
1949 idx = substring_to_idx(*argv, cmd_objectlist);
1950 if (idx != -1 && !*++argv) show_iproute_help();
1953 if (!*++argv) show_iproute_help();
1955 &gfilter.rdst.len, *argv, gfilter.rdst.family);
1961 if ((idx == 12 ||idx == 11) && !*++argv) show_iproute_help();
1963 &gfilter.mdst.len, *argv, gfilter.mdst.family);
1997 static int route_update(char **argv, unsigned int route_flags)
2039 for (; *argv; argv++) {
2040 idx = substring_to_idx(*argv, cmd_objectlist);
2042 if (!*++argv) show_iproute_help();
2043 parse_prefix(addr, &netmask, &len, *argv, req.msg.rtm_family);
2048 if (!*++argv) show_iproute_help();
2049 parse_prefix(addr, &netmask, &len, *argv, req.msg.rtm_family);
2053 if (!*++argv) show_iproute_help();
2054 if (substring_to_idx(*argv, cmd_objectlist ) == 3) {
2056 if (!*++argv) show_iproute_help();
2058 idx = atolx(*argv);
2061 if (!*++argv) show_iproute_help();
2062 if ((idx = idxfromRPDB(*argv,RPDB_rtprotos)) < 0)
2063 error_exit("Invalid argument protocol %s.",*argv);
2067 if (!*++argv) show_iproute_help();
2068 req.msg.rtm_table = idxfromRPDB(*argv, RPDB_rttables);
2070 if (!*++argv) show_iproute_help();
2071 d = *argv;
2076 if (!*++argv) show_iproute_help();
2077 metric = strtoul(*argv, &ptr, 0);
2079 error_exit("Invalid argument metric %s.",*argv);
2086 if (!*++argv) show_iproute_help();
2087 idx = substring_to_idx(*argv,rtmtypes);
2089 if (!*++argv) show_iproute_help();
2094 parse_prefix(addr, &netmask, &len, *argv, req.msg.rtm_family);
2131 static int iproute(char **argv)
2139 switch (idx = substring_to_idx(*argv , cmd_objectlist1)) {
2141 return route_update(++argv , NLM_F_CREATE|NLM_F_EXCL);
2143 return route_update(++argv , NLM_F_CREATE|NLM_F_APPEND);
2146 return route_update(++argv , NLM_F_REPLACE);
2149 return route_update(++argv , RTM_DELROUTE);
2151 return route_get(++argv);
2154 return route_show_flush(++argv);
2156 return route_update(++argv , NLM_F_CREATE);
2158 return route_update(++argv , NLM_F_CREATE|NLM_F_REPLACE);
2160 return route_update(++argv , NLM_F_EXCL);
2162 return route_show_flush(++argv);
2164 if (!*argv) return route_show_flush(argv);
2182 static int ruleupdate(char **argv)
2184 int8_t idx, tflag = 0, opt = (*argv[-1] == 'a') ? RTM_NEWRULE : RTM_DELRULE;
2206 for (; *argv; argv++) {
2207 switch ((idx = substring_to_idx(*argv, options))) {
2214 if (!*++argv) error_exit("'%s': Missing Prefix", argv[-1]);
2215 parse_prefix(addr, &netmask, &len, *argv, request.msg.rtm_family);
2231 if (!*++argv)
2233 pref = strtoul(*argv, &ptr, 0);
2234 if (!ptr || (ptr == *argv) || *ptr || pref > 0xFFFFFFFFUL)
2244 if (!*++argv) error_exit("Missing TOS key");
2245 if ((tos = idxfromRPDB(*argv, RPDB_rtdsfield)) < 0)
2256 if (!*++argv) error_exit("Missing REALMSID");
2257 if ((ptr = strchr(*argv, '/'))) {
2259 if ((ret = idxfromRPDB(*argv, RPDB_rtrealms)) < 0)
2264 } else ptr = *argv;
2275 if (!*++argv) error_exit("Missing TableID");
2276 if ((tid = idxfromRPDB(*argv, RPDB_rttables)) < 0)
2284 if (!*++argv) error_exit("Missing dev/iif NAME");
2286 RTA_IIF, *argv, strlen(*argv)+1);
2294 if (!*++argv) error_exit("Missing nat/map-to ADDRESS");
2295 if (get_prefix(addr, &af /* Un-used variable */, *argv, AF_INET))
2305 if (!*++argv) error_exit("TYPE Missing");
2306 request.msg.rtm_type = rtmtype_str2idx(*argv);
2313 error_exit("Invalid argument '%s'", *argv);
2326 char **argv __attribute__ ((__unused__)))
2394 static int rulelist(char **argv)
2396 if (*argv) {
2402 return filter_nlmesg(show_rules, argv);
2405 static int iprule(char **argv)
2412 if (!*argv) idx = 1;
2413 else if ((idx = substring_to_idx(*argv++, options)) == -1)
2416 return ipcmd(argv);
2535 static void parse_iptunnel_args(struct ip_tunnel_parm *ptnl, char **argv,
2552 if (*argv && ipt_opt_idx <= 2 && string_to_idx(*argv, opts) == -1) {
2553 xstrncpy(ptnl->name, *argv, IF_NAMESIZE);
2561 argv++;
2563 for (; *argv; argv++, addr = 0) {
2564 switch (idx = string_to_idx(*argv, opts)) {
2566 if (!*++argv) error_exit("mode is missing");
2567 if ((!strcmp("ipip", *argv) || !strcmp("ip/ip", *argv)))
2569 else if ((!strcmp("gre", *argv) || !strcmp("gre/ip", *argv)))
2571 else if ((!strcmp("sit", *argv) || !strcmp("ipv6/ip", *argv)))
2582 if (!*++argv) error_exit("key value is missing");
2585 ret = getaddrinfo(*argv, NULL, &hint, &info);
2589 if (strchr(*argv, '.')) {
2590 if (get_prefix(&addr, &af, *argv, AF_INET))
2591 error_exit("invalid key '%s'", *argv);
2595 sscanf(*argv, "%u", &key_val);
2639 if (!*++argv) error_exit("remote/local address is missing");
2640 if (get_prefix(&addr, &af, *argv, AF_INET))
2641 error_exit("invalid remote/local address '%s'", *argv);
2645 if (!*++argv) error_exit("device name is missing");
2650 xstrncpy(req.ifr_name, *argv, IFNAMSIZ);
2658 if (!*++argv) error_exit("ttl value is missing");
2659 if (strcmp(*argv, "inherit"))
2660 ptnl->iph.ttl = atolx_range(*argv, 0, 255);
2664 if (!*++argv) error_exit("tos value is missing");
2665 if (strcmp(*argv, "inherit")) {
2667 unsigned long tval = strtoul(*argv, &ptr, 16);
2669 if (tval > 255) error_exit("invalid tos value '%s'", *argv);
2673 if ((ret = idxfromRPDB(*argv, RPDB_rtdsfield)) < 0)
2682 if (!*++argv) error_exit("name is missing");
2683 xstrncpy(ptnl->name, *argv, IF_NAMESIZE);
2688 xstrncpy(ptnl->name, *argv, IF_NAMESIZE);
2713 static int tunnellist(char **argv)
2719 parse_iptunnel_args(&iptnl, argv, 3);
2736 static int tunnelupdate(char **argv)
2741 if (*argv[-1] == 'a') {
2744 } else if (*argv[-1] == 'c') {
2750 parse_iptunnel_args(&iptnl, argv, idx);
2765 static int iptunnel(char **argv)
2773 if (!*argv) idx = 1;
2774 else if ((idx = substring_to_idx(*argv++, opts)) == -1)
2777 return ipcmd(argv);
2785 static int filter_nlmesg(int (*fun)(struct nlmsghdr *mhdr, char **argv),
2786 char **argv)
2823 if (fun && (err = fun(mhdr, argv))) return err;
2833 char **optargv = toys.argv;