From: Fatih Acar Date: Thu, 2 Feb 2017 12:20:49 +0000 (+0100) Subject: xl: Make the devid attribute manually settable for nics X-Git-Tag: archive/raspbian/4.11.1-1+rpi1~1^2~66^2~2838 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=93a3fbaf16f4b66c7866f42c2699c7af636f2933;p=xen.git xl: Make the devid attribute manually settable for nics 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 Signed-off-by: Nikita Kozlov Signed-off-by: Vincent Legout Signed-off-by: Baptiste Daroussin Acked-by: Wei Liu --- diff --git a/docs/man/xl-network-configuration.markdown.5 b/docs/man/xl-network-configuration.markdown.5 index 3c439d4162..84c2645ad8 100644 --- a/docs/man/xl-network-configuration.markdown.5 +++ b/docs/man/xl-network-configuration.markdown.5 @@ -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 diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index 358757fd09..37ebdcee1d 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -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) {