@@ -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
@@ -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)
{