mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-09-09 09:14:57 +00:00
libvirt: Introduce virDomainGetLaunchSecurityInfo public API
The API can be used outside the libvirt to get the launch security information. When SEV is enabled, the API can be used to get the measurement of the launch process. Signed-off-by: Brijesh Singh <brijesh.singh@amd.com> Reviewed-by: Erik Skultety <eskultet@redhat.com>
This commit is contained in:
parent
11ab77fe88
commit
077c9a2504
@ -4767,4 +4767,21 @@ int virDomainSetLifecycleAction(virDomainPtr domain,
|
|||||||
unsigned int action,
|
unsigned int action,
|
||||||
unsigned int flags);
|
unsigned int flags);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Launch Security API
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* VIR_DOMAIN_LAUNCH_SECURITY_SEV_MEASUREMENT:
|
||||||
|
*
|
||||||
|
* Macro represents the launch measurement of the SEV guest,
|
||||||
|
* as VIR_TYPED_PARAM_STRING.
|
||||||
|
*/
|
||||||
|
# define VIR_DOMAIN_LAUNCH_SECURITY_SEV_MEASUREMENT "sev-measurement"
|
||||||
|
|
||||||
|
int virDomainGetLaunchSecurityInfo(virDomainPtr domain,
|
||||||
|
virTypedParameterPtr *params,
|
||||||
|
int *nparams,
|
||||||
|
unsigned int flags);
|
||||||
|
|
||||||
#endif /* __VIR_LIBVIRT_DOMAIN_H__ */
|
#endif /* __VIR_LIBVIRT_DOMAIN_H__ */
|
||||||
|
@ -1315,6 +1315,13 @@ typedef int
|
|||||||
int *nparams,
|
int *nparams,
|
||||||
unsigned int flags);
|
unsigned int flags);
|
||||||
|
|
||||||
|
typedef int
|
||||||
|
(*virDrvDomainGetLaunchSecurityInfo)(virDomainPtr domain,
|
||||||
|
virTypedParameterPtr *params,
|
||||||
|
int *nparams,
|
||||||
|
unsigned int flags);
|
||||||
|
|
||||||
|
|
||||||
typedef struct _virHypervisorDriver virHypervisorDriver;
|
typedef struct _virHypervisorDriver virHypervisorDriver;
|
||||||
typedef virHypervisorDriver *virHypervisorDriverPtr;
|
typedef virHypervisorDriver *virHypervisorDriverPtr;
|
||||||
|
|
||||||
@ -1564,6 +1571,7 @@ struct _virHypervisorDriver {
|
|||||||
virDrvConnectCompareHypervisorCPU connectCompareHypervisorCPU;
|
virDrvConnectCompareHypervisorCPU connectCompareHypervisorCPU;
|
||||||
virDrvConnectBaselineHypervisorCPU connectBaselineHypervisorCPU;
|
virDrvConnectBaselineHypervisorCPU connectBaselineHypervisorCPU;
|
||||||
virDrvNodeGetSEVInfo nodeGetSEVInfo;
|
virDrvNodeGetSEVInfo nodeGetSEVInfo;
|
||||||
|
virDrvDomainGetLaunchSecurityInfo domainGetLaunchSecurityInfo;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -12154,3 +12154,51 @@ int virDomainSetLifecycleAction(virDomainPtr domain,
|
|||||||
virDispatchError(domain->conn);
|
virDispatchError(domain->conn);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* virDomainGetLaunchSecurityInfo:
|
||||||
|
* @domain: a domain object
|
||||||
|
* @params: where to store security info
|
||||||
|
* @nparams: number of items in @params
|
||||||
|
* @flags: currently used, set to 0.
|
||||||
|
*
|
||||||
|
* Get the launch security info. In case of the SEV guest, this will
|
||||||
|
* return the launch measurement.
|
||||||
|
*
|
||||||
|
* Returns -1 in case of failure, 0 in case of success.
|
||||||
|
*/
|
||||||
|
int virDomainGetLaunchSecurityInfo(virDomainPtr domain,
|
||||||
|
virTypedParameterPtr *params,
|
||||||
|
int *nparams,
|
||||||
|
unsigned int flags)
|
||||||
|
{
|
||||||
|
virConnectPtr conn = domain->conn;
|
||||||
|
|
||||||
|
VIR_DOMAIN_DEBUG(domain, "params=%p, nparams=%p flags=0x%x",
|
||||||
|
params, nparams, flags);
|
||||||
|
|
||||||
|
virResetLastError();
|
||||||
|
|
||||||
|
virCheckDomainReturn(domain, -1);
|
||||||
|
virCheckNonNullArgGoto(params, error);
|
||||||
|
virCheckNonNullArgGoto(nparams, error);
|
||||||
|
virCheckReadOnlyGoto(conn->flags, error);
|
||||||
|
|
||||||
|
if (VIR_DRV_SUPPORTS_FEATURE(domain->conn->driver, domain->conn,
|
||||||
|
VIR_DRV_FEATURE_TYPED_PARAM_STRING))
|
||||||
|
flags |= VIR_TYPED_PARAM_STRING_OKAY;
|
||||||
|
|
||||||
|
if (conn->driver->domainGetLaunchSecurityInfo) {
|
||||||
|
int ret;
|
||||||
|
ret = conn->driver->domainGetLaunchSecurityInfo(domain, params,
|
||||||
|
nparams, flags);
|
||||||
|
if (ret < 0)
|
||||||
|
goto error;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
virReportUnsupportedError();
|
||||||
|
|
||||||
|
error:
|
||||||
|
virDispatchError(domain->conn);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
@ -797,6 +797,7 @@ LIBVIRT_4.5.0 {
|
|||||||
virGetLastErrorCode;
|
virGetLastErrorCode;
|
||||||
virGetLastErrorDomain;
|
virGetLastErrorDomain;
|
||||||
virNodeGetSEVInfo;
|
virNodeGetSEVInfo;
|
||||||
|
virDomainGetLaunchSecurityInfo;
|
||||||
} LIBVIRT_4.4.0;
|
} LIBVIRT_4.4.0;
|
||||||
|
|
||||||
# .... define new API here using predicted next version number ....
|
# .... define new API here using predicted next version number ....
|
||||||
|
Loading…
Reference in New Issue
Block a user