tpm: Convert to new qapi union layout
We have two issues with our qapi union layout: 1) Even though the QMP wire format spells the tag 'type', the C code spells it 'kind', requiring some hacks in the generator. 2) The C struct uses an anonymous union, which places all tag values in the same namespace as all non-variant members. This leads to spurious collisions if a tag value matches a non-variant member's name. Make the conversion to the new layout for TPM-related code. Signed-off-by: Eric Blake <eblake@redhat.com> Message-Id: <1445898903-12082-22-git-send-email-eblake@redhat.com> [Commit message tweaked slightly] Signed-off-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
parent
1fd5d4fea4
commit
ce21131a0b
6
hmp.c
6
hmp.c
@ -841,11 +841,11 @@ void hmp_info_tpm(Monitor *mon, const QDict *qdict)
|
|||||||
c, TpmModel_lookup[ti->model]);
|
c, TpmModel_lookup[ti->model]);
|
||||||
|
|
||||||
monitor_printf(mon, " \\ %s: type=%s",
|
monitor_printf(mon, " \\ %s: type=%s",
|
||||||
ti->id, TpmTypeOptionsKind_lookup[ti->options->kind]);
|
ti->id, TpmTypeOptionsKind_lookup[ti->options->type]);
|
||||||
|
|
||||||
switch (ti->options->kind) {
|
switch (ti->options->type) {
|
||||||
case TPM_TYPE_OPTIONS_KIND_PASSTHROUGH:
|
case TPM_TYPE_OPTIONS_KIND_PASSTHROUGH:
|
||||||
tpo = ti->options->passthrough;
|
tpo = ti->options->u.passthrough;
|
||||||
monitor_printf(mon, "%s%s%s%s",
|
monitor_printf(mon, "%s%s%s%s",
|
||||||
tpo->has_path ? ",path=" : "",
|
tpo->has_path ? ",path=" : "",
|
||||||
tpo->has_path ? tpo->path : "",
|
tpo->has_path ? tpo->path : "",
|
||||||
|
4
tpm.c
4
tpm.c
@ -260,9 +260,9 @@ static TPMInfo *qmp_query_tpm_inst(TPMBackend *drv)
|
|||||||
|
|
||||||
switch (drv->ops->type) {
|
switch (drv->ops->type) {
|
||||||
case TPM_TYPE_PASSTHROUGH:
|
case TPM_TYPE_PASSTHROUGH:
|
||||||
res->options->kind = TPM_TYPE_OPTIONS_KIND_PASSTHROUGH;
|
res->options->type = TPM_TYPE_OPTIONS_KIND_PASSTHROUGH;
|
||||||
tpo = g_new0(TPMPassthroughOptions, 1);
|
tpo = g_new0(TPMPassthroughOptions, 1);
|
||||||
res->options->passthrough = tpo;
|
res->options->u.passthrough = tpo;
|
||||||
if (drv->path) {
|
if (drv->path) {
|
||||||
tpo->path = g_strdup(drv->path);
|
tpo->path = g_strdup(drv->path);
|
||||||
tpo->has_path = true;
|
tpo->has_path = true;
|
||||||
|
Loading…
Reference in New Issue
Block a user