// Generated from features-linux.json. Do not edit!
#ifndef RUNTIME_SPEC_SCHEMA_FEATURES_LINUX_SCHEMA_H
#define RUNTIME_SPEC_SCHEMA_FEATURES_LINUX_SCHEMA_H

#include <sys/types.h>
#include <stdint.h>
#include "ocispec/json_common.h"
#include "ocispec/runtime_spec_schema_defs_linux.h"

#ifdef __cplusplus
extern "C" {
#endif

typedef struct
{
  bool v1;

  bool v2;

  bool systemd;

  bool systemd_user;

  bool rdma;

  json_object *_residual;

  unsigned int v1_present : 1;
  unsigned int v2_present : 1;
  unsigned int systemd_present : 1;
  unsigned int systemd_user_present : 1;
  unsigned int rdma_present : 1;
} runtime_spec_schema_features_linux_cgroup;

void free_runtime_spec_schema_features_linux_cgroup (runtime_spec_schema_features_linux_cgroup *ptr);

runtime_spec_schema_features_linux_cgroup *clone_runtime_spec_schema_features_linux_cgroup (runtime_spec_schema_features_linux_cgroup *src);
runtime_spec_schema_features_linux_cgroup *make_runtime_spec_schema_features_linux_cgroup (json_object *tree, const struct parser_context *ctx, parser_error *err);

json_gen_status gen_runtime_spec_schema_features_linux_cgroup (json_gen_ctx *g, const runtime_spec_schema_features_linux_cgroup *ptr, const struct parser_context *ctx, parser_error *err);

typedef struct
{
  bool enabled;

  char **actions;
  size_t actions_len;

  char **operators;
  size_t operators_len;

  char **archs;
  size_t archs_len;

  char **known_flags;
  size_t known_flags_len;

  char **supported_flags;
  size_t supported_flags_len;

  json_object *_residual;

  unsigned int enabled_present : 1;
} runtime_spec_schema_features_linux_seccomp;

void free_runtime_spec_schema_features_linux_seccomp (runtime_spec_schema_features_linux_seccomp *ptr);

runtime_spec_schema_features_linux_seccomp *clone_runtime_spec_schema_features_linux_seccomp (runtime_spec_schema_features_linux_seccomp *src);
runtime_spec_schema_features_linux_seccomp *make_runtime_spec_schema_features_linux_seccomp (json_object *tree, const struct parser_context *ctx, parser_error *err);

json_gen_status gen_runtime_spec_schema_features_linux_seccomp (json_gen_ctx *g, const runtime_spec_schema_features_linux_seccomp *ptr, const struct parser_context *ctx, parser_error *err);

typedef struct
{
  bool enabled;

  json_object *_residual;

  unsigned int enabled_present : 1;
} runtime_spec_schema_features_linux_apparmor;

void free_runtime_spec_schema_features_linux_apparmor (runtime_spec_schema_features_linux_apparmor *ptr);

runtime_spec_schema_features_linux_apparmor *clone_runtime_spec_schema_features_linux_apparmor (runtime_spec_schema_features_linux_apparmor *src);
runtime_spec_schema_features_linux_apparmor *make_runtime_spec_schema_features_linux_apparmor (json_object *tree, const struct parser_context *ctx, parser_error *err);

json_gen_status gen_runtime_spec_schema_features_linux_apparmor (json_gen_ctx *g, const runtime_spec_schema_features_linux_apparmor *ptr, const struct parser_context *ctx, parser_error *err);

typedef struct
{
  bool enabled;

  json_object *_residual;

  unsigned int enabled_present : 1;
} runtime_spec_schema_features_linux_selinux;

void free_runtime_spec_schema_features_linux_selinux (runtime_spec_schema_features_linux_selinux *ptr);

runtime_spec_schema_features_linux_selinux *clone_runtime_spec_schema_features_linux_selinux (runtime_spec_schema_features_linux_selinux *src);
runtime_spec_schema_features_linux_selinux *make_runtime_spec_schema_features_linux_selinux (json_object *tree, const struct parser_context *ctx, parser_error *err);

json_gen_status gen_runtime_spec_schema_features_linux_selinux (json_gen_ctx *g, const runtime_spec_schema_features_linux_selinux *ptr, const struct parser_context *ctx, parser_error *err);

typedef struct
{
  bool enabled;

  json_object *_residual;

  unsigned int enabled_present : 1;
} runtime_spec_schema_features_linux_intel_rdt;

void free_runtime_spec_schema_features_linux_intel_rdt (runtime_spec_schema_features_linux_intel_rdt *ptr);

runtime_spec_schema_features_linux_intel_rdt *clone_runtime_spec_schema_features_linux_intel_rdt (runtime_spec_schema_features_linux_intel_rdt *src);
runtime_spec_schema_features_linux_intel_rdt *make_runtime_spec_schema_features_linux_intel_rdt (json_object *tree, const struct parser_context *ctx, parser_error *err);

json_gen_status gen_runtime_spec_schema_features_linux_intel_rdt (json_gen_ctx *g, const runtime_spec_schema_features_linux_intel_rdt *ptr, const struct parser_context *ctx, parser_error *err);

typedef struct
{
  bool enabled;

  json_object *_residual;

  unsigned int enabled_present : 1;
} runtime_spec_schema_features_linux_mount_extensions_idmap;

void free_runtime_spec_schema_features_linux_mount_extensions_idmap (runtime_spec_schema_features_linux_mount_extensions_idmap *ptr);

runtime_spec_schema_features_linux_mount_extensions_idmap *clone_runtime_spec_schema_features_linux_mount_extensions_idmap (runtime_spec_schema_features_linux_mount_extensions_idmap *src);
runtime_spec_schema_features_linux_mount_extensions_idmap *make_runtime_spec_schema_features_linux_mount_extensions_idmap (json_object *tree, const struct parser_context *ctx, parser_error *err);

json_gen_status gen_runtime_spec_schema_features_linux_mount_extensions_idmap (json_gen_ctx *g, const runtime_spec_schema_features_linux_mount_extensions_idmap *ptr, const struct parser_context *ctx, parser_error *err);

typedef struct
{
  runtime_spec_schema_features_linux_mount_extensions_idmap *idmap;

  json_object *_residual;
} runtime_spec_schema_features_linux_mount_extensions;

void free_runtime_spec_schema_features_linux_mount_extensions (runtime_spec_schema_features_linux_mount_extensions *ptr);

runtime_spec_schema_features_linux_mount_extensions *clone_runtime_spec_schema_features_linux_mount_extensions (runtime_spec_schema_features_linux_mount_extensions *src);
runtime_spec_schema_features_linux_mount_extensions *make_runtime_spec_schema_features_linux_mount_extensions (json_object *tree, const struct parser_context *ctx, parser_error *err);

json_gen_status gen_runtime_spec_schema_features_linux_mount_extensions (json_gen_ctx *g, const runtime_spec_schema_features_linux_mount_extensions *ptr, const struct parser_context *ctx, parser_error *err);

typedef struct
{
  bool enabled;

  json_object *_residual;

  unsigned int enabled_present : 1;
} runtime_spec_schema_features_linux_net_devices;

void free_runtime_spec_schema_features_linux_net_devices (runtime_spec_schema_features_linux_net_devices *ptr);

runtime_spec_schema_features_linux_net_devices *clone_runtime_spec_schema_features_linux_net_devices (runtime_spec_schema_features_linux_net_devices *src);
runtime_spec_schema_features_linux_net_devices *make_runtime_spec_schema_features_linux_net_devices (json_object *tree, const struct parser_context *ctx, parser_error *err);

json_gen_status gen_runtime_spec_schema_features_linux_net_devices (json_gen_ctx *g, const runtime_spec_schema_features_linux_net_devices *ptr, const struct parser_context *ctx, parser_error *err);

typedef struct
{
  char **namespaces;
  size_t namespaces_len;

  char **capabilities;
  size_t capabilities_len;

  runtime_spec_schema_features_linux_cgroup *cgroup;

  runtime_spec_schema_features_linux_seccomp *seccomp;

  runtime_spec_schema_features_linux_apparmor *apparmor;

  runtime_spec_schema_features_linux_selinux *selinux;

  runtime_spec_schema_features_linux_intel_rdt *intel_rdt;

  runtime_spec_schema_features_linux_mount_extensions *mount_extensions;

  runtime_spec_schema_features_linux_net_devices *net_devices;

  json_object *_residual;
} runtime_spec_schema_features_linux;

void free_runtime_spec_schema_features_linux (runtime_spec_schema_features_linux *ptr);

runtime_spec_schema_features_linux *clone_runtime_spec_schema_features_linux (runtime_spec_schema_features_linux *src);
runtime_spec_schema_features_linux *make_runtime_spec_schema_features_linux (json_object *tree, const struct parser_context *ctx, parser_error *err);

json_gen_status gen_runtime_spec_schema_features_linux (json_gen_ctx *g, const runtime_spec_schema_features_linux *ptr, const struct parser_context *ctx, parser_error *err);

#ifdef __cplusplus
}
#endif

#endif

