diff options
| author | Michael Vogt <mvo@ubuntu.com> | 2021-09-22 13:40:20 +0200 |
|---|---|---|
| committer | Michael Vogt <mvo@ubuntu.com> | 2021-09-22 13:40:20 +0200 |
| commit | 982e8fbf8e0ec5bc938749750b8aef75abf10ba7 (patch) | |
| tree | 136a5039f3fd9eb6c5305827a13eb955c6a1b0f9 /kernel | |
| parent | 673cd60a39058f7e31cd9e01470a866923a07ee4 (diff) | |
fde,devicestate: add new fde.CheckFeatures() and use in DeviceManager
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/fde/fde.go | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/kernel/fde/fde.go b/kernel/fde/fde.go index 65e96679f4..cfe0fc507d 100644 --- a/kernel/fde/fde.go +++ b/kernel/fde/fde.go @@ -116,3 +116,28 @@ func InitialSetup(runSetupHook RunSetupHookFunc, params *InitialSetupParams) (*I } return res, nil } + +// CheckFeatures returns the features of fde-setup hook. +func CheckFeatures(runSetupHook RunSetupHookFunc) ([]string, error) { + req := &SetupRequest{ + Op: "features", + } + output, err := runSetupHook(req) + if err != nil { + return nil, err + } + var res struct { + Features []string `json:"features"` + Error string `json:"error"` + } + if err := json.Unmarshal(output, &res); err != nil { + return nil, fmt.Errorf("cannot parse hook output %q: %v", output, err) + } + if res.Features == nil && res.Error == "" { + return nil, fmt.Errorf(`cannot use hook: neither "features" nor "error" returned`) + } + if res.Error != "" { + return nil, fmt.Errorf("cannot use hook: it returned error: %v", res.Error) + } + return res.Features, nil +} |
