From: Fabian Freyer <fabian.freyer@xxxxxxxxxxxxxxxxxxx> Introduces the BHYVE_CAP_VNC_PASSWORD capability, which is probed by parsing the error message from the bhyve command. When it is not supported, bhyve -s 0,fbuf,password= will return an error message. Signed-off-by: Fabian Freyer <fabian.freyer@xxxxxxxxxxxxxxxxxxx> Signed-off-by: Roman Bogorodskiy <bogorodskiy@xxxxxxxxx> --- src/bhyve/bhyve_capabilities.c | 16 +++++++++++++++- src/bhyve/bhyve_capabilities.h | 1 + 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/bhyve/bhyve_capabilities.c b/src/bhyve/bhyve_capabilities.c index 36f3985335..523a31e287 100644 --- a/src/bhyve/bhyve_capabilities.c +++ b/src/bhyve/bhyve_capabilities.c @@ -3,7 +3,7 @@ * * Copyright (C) 2014 Roman Bogorodskiy * Copyright (C) 2014 Semihalf - * Copyright (C) 2016 Fabian Freyer + * Copyright (C) 2020 Fabian Freyer * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -334,6 +334,17 @@ bhyveProbeCapsSoundHda(unsigned int *caps, char *binary) } +static int +bhyveProbeCapsVNCPassword(unsigned int *caps, char *binary) +{ + return bhyveProbeCapsDeviceHelper(caps, binary, + "-s", + "0,fbuf,password=", + "Invalid fbuf emulation \"password\"", + BHYVE_CAP_VNC_PASSWORD); +} + + int virBhyveProbeCaps(unsigned int *caps) { @@ -365,6 +376,9 @@ virBhyveProbeCaps(unsigned int *caps) if ((ret = bhyveProbeCapsSoundHda(caps, binary))) goto out; + if ((ret = bhyveProbeCapsVNCPassword(caps, binary))) + goto out; + out: VIR_FREE(binary); return ret; diff --git a/src/bhyve/bhyve_capabilities.h b/src/bhyve/bhyve_capabilities.h index 1ac9ff4283..b2a16b0189 100644 --- a/src/bhyve/bhyve_capabilities.h +++ b/src/bhyve/bhyve_capabilities.h @@ -50,6 +50,7 @@ typedef enum { BHYVE_CAP_XHCI = 1 << 5, BHYVE_CAP_CPUTOPOLOGY = 1 << 6, BHYVE_CAP_SOUND_HDA = 1 << 7, + BHYVE_CAP_VNC_PASSWORD = 1 << 8, } virBhyveCapsFlags; int virBhyveProbeGrubCaps(virBhyveGrubCapsFlags *caps); -- 2.27.0