]> git.proxmox.com Git - mirror_iproute2.git/blobdiff - ip/iptuntap.c
tc: B.W limits can now be specified in %.
[mirror_iproute2.git] / ip / iptuntap.c
index 34fb0cf3b8396bbcdad37c63a737df062b133aeb..09f2be2426b05b6bf5a38fad186e05ea8b4df081 100644 (file)
@@ -39,7 +39,7 @@ static void usage(void)
 {
        fprintf(stderr, "Usage: ip tuntap { add | del | show | list | lst | help } [ dev PHYS_DEV ]\n");
        fprintf(stderr, "          [ mode { tun | tap } ] [ user USER ] [ group GROUP ]\n");
-       fprintf(stderr, "          [ one_queue ] [ pi ] [ vnet_hdr ] [ multi_queue ]\n");
+       fprintf(stderr, "          [ one_queue ] [ pi ] [ vnet_hdr ] [ multi_queue ] [ name NAME ]\n");
        fprintf(stderr, "\n");
        fprintf(stderr, "Where: USER  := { STRING | NUMBER }\n");
        fprintf(stderr, "       GROUP := { STRING | NUMBER }\n");
@@ -176,7 +176,8 @@ static int parse_args(int argc, char **argv,
                        ifr->ifr_flags |= IFF_MULTI_QUEUE;
                } else if (matches(*argv, "dev") == 0) {
                        NEXT_ARG();
-                       strncpy(ifr->ifr_name, *argv, IFNAMSIZ-1);
+                       if (get_ifname(ifr->ifr_name, *argv))
+                               invarg("\"dev\" not a valid ifname", *argv);
                } else {
                        if (matches(*argv, "name") == 0) {
                                NEXT_ARG();
@@ -184,7 +185,8 @@ static int parse_args(int argc, char **argv,
                                usage();
                        if (ifr->ifr_name[0])
                                duparg2("name", *argv);
-                       strncpy(ifr->ifr_name, *argv, IFNAMSIZ);
+                       if (get_ifname(ifr->ifr_name, *argv))
+                               invarg("\"name\" not a valid ifname", *argv);
                }
                count++;
                argc--; argv++;
@@ -221,38 +223,6 @@ static int do_del(int argc, char **argv)
        return tap_del_ioctl(&ifr);
 }
 
-static int read_prop(char *dev, char *prop, long *value)
-{
-       char fname[IFNAMSIZ+25], buf[80], *endp;
-       ssize_t len;
-       int fd;
-       long result;
-
-       sprintf(fname, "/sys/class/net/%s/%s", dev, prop);
-       fd = open(fname, O_RDONLY);
-       if (fd < 0) {
-               if (strcmp(prop, "tun_flags"))
-                       fprintf(stderr, "open %s: %s\n", fname,
-                               strerror(errno));
-               return -1;
-       }
-       len = read(fd, buf, sizeof(buf)-1);
-       close(fd);
-       if (len < 0) {
-               fprintf(stderr, "read %s: %s", fname, strerror(errno));
-               return -1;
-       }
-
-       buf[len] = 0;
-       result = strtol(buf, &endp, 0);
-       if (*endp != '\n') {
-               fprintf(stderr, "Failed to parse %s\n", fname);
-               return -1;
-       }
-       *value = result;
-       return 0;
-}
-
 static void print_flags(long flags)
 {
        if (flags & IFF_TUN)