]> xenbits.xensource.com Git - xen.git/commitdiff
xl: Make the devid attribute manually settable for nics
authorFatih Acar <fatih.acar@gandi.net>
Thu, 2 Feb 2017 12:20:49 +0000 (13:20 +0100)
committerWei Liu <wei.liu2@citrix.com>
Wed, 8 Feb 2017 09:27:24 +0000 (09:27 +0000)
This permits to have control over the devid attribute when attaching new nics.
It may become useful if one has its own nic indexing somewhere else than xl/xenstore.

Signed-off-by: Fatih Acar <fatih.acar@gandi.net>
Signed-off-by: Nikita Kozlov <nikita.kozlov@gandi.net>
Signed-off-by: Vincent Legout <vincent.legout@gandi.net>
Signed-off-by: Baptiste Daroussin <baptiste.daroussin@gandi.net>
Acked-by: Wei Liu <wei.liu2@citrix.com>
docs/man/xl-network-configuration.markdown.5
tools/libxl/xl_cmdimpl.c

index 3c439d41621e061f3d7eb33a665801699ed61c77..84c2645ad8cf988e2a178540e423f9400bb3deb9 100644 (file)
@@ -162,6 +162,11 @@ For example:
 NOTE: The actual underlying limits of rate limiting are dependent
 on the underlying netback implementation.
 
+### devid
+
+Specifies the devid manually instead of letting xl choose the lowest index available.
+
+NOTE: This should not be set unless you have a reason to.
 
 [oui]: http://en.wikipedia.org/wiki/Organizationally_Unique_Identifier
 [net]: http://wiki.xen.org/wiki/HostConfiguration/Networking
index 358757fd0942b9514a5fc6f732befa837d05ef75..37ebdcee1dacccee8d40c7b5965219f107d9bb4d 100644 (file)
@@ -993,6 +993,19 @@ static void parse_vcpu_affinity(libxl_domain_build_info *b_info,
     }
 }
 
+static unsigned long parse_ulong(const char *str)
+{
+    char *endptr;
+    unsigned long val;
+
+    val = strtoul(str, &endptr, 10);
+    if (endptr == str || val == ULONG_MAX) {
+        fprintf(stderr, "xl: failed to convert \"%s\" to number\n", str);
+        exit(EXIT_FAILURE);
+    }
+    return val;
+}
+
 static void replace_string(char **str, const char *val)
 {
     free(*str);
@@ -1061,6 +1074,8 @@ static int parse_nic_config(libxl_device_nic *nic, XLU_Config **config, char *to
         replace_string(&nic->coloft_forwarddev, oparg);
     } else if (MATCH_OPTION("accel", token, oparg)) {
         fprintf(stderr, "the accel parameter for vifs is currently not supported\n");
+    } else if (MATCH_OPTION("devid", token, oparg)) {
+        nic->devid = parse_ulong(oparg);
     } else {
         fprintf(stderr, "unrecognized argument `%s'\n", token);
         return 1;
@@ -1068,19 +1083,6 @@ static int parse_nic_config(libxl_device_nic *nic, XLU_Config **config, char *to
     return 0;
 }
 
-static unsigned long parse_ulong(const char *str)
-{
-    char *endptr;
-    unsigned long val;
-
-    val = strtoul(str, &endptr, 10);
-    if (endptr == str || val == ULONG_MAX) {
-        fprintf(stderr, "xl: failed to convert \"%s\" to number\n", str);
-        exit(EXIT_FAILURE);
-    }
-    return val;
-}
-
 static void parse_vnuma_config(const XLU_Config *config,
                                libxl_domain_build_info *b_info)
 {