From 93a3fbaf16f4b66c7866f42c2699c7af636f2933 Mon Sep 17 00:00:00 2001 From: Fatih Acar Date: Thu, 2 Feb 2017 13:20:49 +0100 Subject: [PATCH] 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 --- docs/man/xl-network-configuration.markdown.5 | 5 ++++ tools/libxl/xl_cmdimpl.c | 28 +++++++++++--------- 2 files changed, 20 insertions(+), 13 deletions(-) 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) { -- 2.30.2