#pragma once #include "../util.h" NAMED_ENUM(interface_type, eiface, steal); struct { char *Name; interface_type Type; union { struct { } eiface; struct { char *Interface; } steal; }; } typedef interface_configuration; struct { size_t Count; interface_configuration *_; } typedef interfaces_configuration; struct { char *Source; char *Target; } typedef mapping; struct { size_t LayerCount; char **Layer; char *Temporary; size_t VolumeCount; mapping *Volume; s64 DevfsRuleset; } typedef filesystem_configuration; struct { interfaces_configuration Interfaces; filesystem_configuration Filesystem; string_array Init; string_array Shutdown; } typedef configuration; struct { u32 ID; interface_type Type; } typedef interface; struct { size_t Count; interface *_; } typedef interfaces; struct { interfaces Interfaces; jid_t JID; } typedef data; void Free_interface_configuration(interface_configuration *); void Free_interfaces_configuration(interfaces_configuration *); void Free_mapping(mapping *); void Free_filesystem_configuration(filesystem_configuration *); void Free_configuration(configuration *); void Free_interface(interface *); void Free_interfaces(interfaces *); void Free_data(data *); char *Parse_interface_type(interface_type *, ucl_object_t const *, char const *Position); char *Parse_interface_configuration(interface_configuration *, ucl_object_t const *, char const *Position); char *Parse_interfaces_configuration(interfaces_configuration *, ucl_object_t const *, char const *Position); char *Parse_mapping(mapping *, ucl_object_t const *, char const *Position); char *Parse_filesystem_configuration(filesystem_configuration *, ucl_object_t const *, char const *Position); char *Parse_configuration(configuration *, ucl_object_t const *, char const *Position); char *Parse_interface(interface *, ucl_object_t const *, char const *Position); char *Parse_interfaces(interfaces *, ucl_object_t const *, char const *Position); char *Parse_data(data *, ucl_object_t const *, char const *Position); void Save_interface_type(jprint_state *, interface_type const *); void Save_interface(jprint_state *, interface const *); void Save_interfaces(jprint_state *, interfaces const *); void Save_data(jprint_state *, data const *);