73 lines
1.7 KiB
C
73 lines
1.7 KiB
C
#ifndef AMDUAT_FED_VIEW_H
|
|
#define AMDUAT_FED_VIEW_H
|
|
|
|
#include "amduat/asl/store.h"
|
|
#include "amduat/fed/replay.h"
|
|
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef enum {
|
|
AMDUAT_FED_RESOLVE_OK = 0,
|
|
AMDUAT_FED_RESOLVE_NOT_FOUND = 1,
|
|
AMDUAT_FED_RESOLVE_FOUND_REMOTE_NO_BYTES = 2,
|
|
AMDUAT_FED_RESOLVE_INTEGRITY_ERROR = 3,
|
|
AMDUAT_FED_RESOLVE_POLICY_DENIED = 4,
|
|
AMDUAT_FED_RESOLVE_STORE_ERROR = 5
|
|
} amduat_fed_resolve_error_t;
|
|
|
|
typedef struct {
|
|
uint32_t domain_id;
|
|
uint64_t snapshot_id;
|
|
uint64_t log_prefix;
|
|
} amduat_fed_view_bounds_t;
|
|
|
|
typedef struct {
|
|
amduat_fed_record_id_t id;
|
|
uint32_t reason_code;
|
|
} amduat_fed_policy_deny_t;
|
|
|
|
typedef struct {
|
|
uint32_t local_domain_id;
|
|
amduat_fed_record_t *records;
|
|
size_t len;
|
|
amduat_fed_policy_deny_t *denies;
|
|
size_t denies_len;
|
|
} amduat_fed_view_t;
|
|
|
|
typedef enum {
|
|
AMDUAT_FED_VIEW_OK = 0,
|
|
AMDUAT_FED_VIEW_ERR_INVALID = 1,
|
|
AMDUAT_FED_VIEW_ERR_CONFLICT = 2,
|
|
AMDUAT_FED_VIEW_ERR_OOM = 3
|
|
} amduat_fed_view_error_t;
|
|
|
|
/* Caller frees records/denies with amduat_fed_view_free. */
|
|
amduat_fed_view_error_t amduat_fed_view_build(
|
|
const amduat_fed_record_t *records,
|
|
size_t count,
|
|
uint32_t local_domain_id,
|
|
const amduat_fed_view_bounds_t *bounds,
|
|
size_t bounds_len,
|
|
const amduat_fed_policy_deny_t *denies,
|
|
size_t denies_len,
|
|
amduat_fed_view_t *out_view);
|
|
|
|
void amduat_fed_view_free(amduat_fed_view_t *view);
|
|
|
|
amduat_fed_resolve_error_t amduat_fed_resolve(
|
|
const amduat_fed_view_t *view,
|
|
amduat_asl_store_t *local_store,
|
|
amduat_reference_t ref,
|
|
amduat_artifact_t *out_artifact);
|
|
|
|
#ifdef __cplusplus
|
|
} /* extern "C" */
|
|
#endif
|
|
|
|
#endif /* AMDUAT_FED_VIEW_H */
|