]> git.proxmox.com Git - mirror_iproute2.git/blobdiff - ip/link_vti.c
ip/tunnel: Use tnl_parse_key() to parse tunnel key
[mirror_iproute2.git] / ip / link_vti.c
index 05aefa32bdcbfc25f80e971cbac35a36759a8cde..6c5469ff8d608685234d9ea16f52e0108a812a47 100644 (file)
@@ -64,8 +64,8 @@ static int vti_parse_opt(struct link_util *lu, int argc, char **argv,
        struct rtattr *tb[IFLA_MAX + 1];
        struct rtattr *linkinfo[IFLA_INFO_MAX+1];
        struct rtattr *vtiinfo[IFLA_VTI_MAX + 1];
-       unsigned int ikey = 0;
-       unsigned int okey = 0;
+       __be32 ikey = 0;
+       __be32 okey = 0;
        unsigned int saddr = 0;
        unsigned int daddr = 0;
        unsigned int link = 0;
@@ -122,49 +122,14 @@ get_failed:
 
        while (argc > 0) {
                if (!matches(*argv, "key")) {
-                       unsigned int uval;
-
                        NEXT_ARG();
-                       if (strchr(*argv, '.'))
-                               uval = get_addr32(*argv);
-                       else {
-                               if (get_unsigned(&uval, *argv, 0) < 0) {
-                                       fprintf(stderr,
-                                               "Invalid value for \"key\": \"%s\"; it should be an unsigned integer\n", *argv);
-                                       exit(-1);
-                               }
-                               uval = htonl(uval);
-                       }
-
-                       ikey = okey = uval;
+                       ikey = okey = tnl_parse_key("key", *argv);
                } else if (!matches(*argv, "ikey")) {
-                       unsigned int uval;
-
                        NEXT_ARG();
-                       if (strchr(*argv, '.'))
-                               uval = get_addr32(*argv);
-                       else {
-                               if (get_unsigned(&uval, *argv, 0) < 0) {
-                                       fprintf(stderr, "invalid value for \"ikey\": \"%s\"; it should be an unsigned integer\n", *argv);
-                                       exit(-1);
-                               }
-                               uval = htonl(uval);
-                       }
-                       ikey = uval;
+                       ikey = tnl_parse_key("ikey", *argv);
                } else if (!matches(*argv, "okey")) {
-                       unsigned int uval;
-
                        NEXT_ARG();
-                       if (strchr(*argv, '.'))
-                               uval = get_addr32(*argv);
-                       else {
-                               if (get_unsigned(&uval, *argv, 0) < 0) {
-                                       fprintf(stderr, "invalid value for \"okey\": \"%s\"; it should be an unsigned integer\n", *argv);
-                                       exit(-1);
-                               }
-                               uval = htonl(uval);
-                       }
-                       okey = uval;
+                       okey = tnl_parse_key("okey", *argv);
                } else if (!matches(*argv, "remote")) {
                        NEXT_ARG();
                        daddr = get_addr32(*argv);