]> rtime.felk.cvut.cz Git - lisovros/iproute2_canprio.git/blobdiff - ip/iptunnel.c
iproute2: man page and /bin/ip disagree on del vs delete
[lisovros/iproute2_canprio.git] / ip / iptunnel.c
index fe5e3f968855648700cd1d5ac8ce15b27ba9d282..38ccd87c7191bb53ab64770258904683af80c293 100644 (file)
@@ -407,8 +407,13 @@ static int do_tunnels_list(struct ip_tunnel_parm *p)
                return -1;
        }
 
-       fgets(buf, sizeof(buf), fp);
-       fgets(buf, sizeof(buf), fp);
+       /* skip header lines */
+       if (!fgets(buf, sizeof(buf), fp) ||
+           !fgets(buf, sizeof(buf), fp)) {
+               fprintf(stderr, "/proc/net/dev read error\n");
+               fclose(fp);
+               return -1;
+       }
 
        while (fgets(buf, sizeof(buf), fp) != NULL) {
                int index, type;
@@ -417,6 +422,7 @@ static int do_tunnels_list(struct ip_tunnel_parm *p)
                if ((ptr = strchr(buf, ':')) == NULL ||
                    (*ptr++ = 0, sscanf(buf, "%s", name) != 1)) {
                        fprintf(stderr, "Wrong format of /proc/net/dev. Sorry.\n");
+                       fclose(fp);
                        return -1;
                }
                if (sscanf(ptr, "%ld%ld%ld%ld%ld%ld%ld%*d%ld%ld%ld%ld%ld%ld%ld",
@@ -458,6 +464,7 @@ static int do_tunnels_list(struct ip_tunnel_parm *p)
                }
                printf("\n");
        }
+       fclose(fp);
        return 0;
 }
 
@@ -613,7 +620,7 @@ int do_iptunnel(int argc, char **argv)
                        return do_add(SIOCADDTUNNEL, argc-1, argv+1);
                if (matches(*argv, "change") == 0)
                        return do_add(SIOCCHGTUNNEL, argc-1, argv+1);
-               if (matches(*argv, "del") == 0)
+               if (matches(*argv, "delete") == 0)
                        return do_del(argc-1, argv+1);
                if (matches(*argv, "show") == 0 ||
                    matches(*argv, "lst") == 0 ||