X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fjournal%2Fjournal-def.h;h=86aef8f372a8fd538cfd74e40a845b55fe6cf62f;hb=8144056fa63291e5b25d91a48cd77b91e845eabf;hp=d1174456cbdeebb9ca3630305283233e05419291;hpb=5430f7f2bc7330f3088b894166bf3524a067e3d8;p=elogind.git diff --git a/src/journal/journal-def.h b/src/journal/journal-def.h index d1174456c..86aef8f37 100644 --- a/src/journal/journal-def.h +++ b/src/journal/journal-def.h @@ -29,13 +29,17 @@ #include "macro.h" typedef struct Header Header; + typedef struct ObjectHeader ObjectHeader; typedef union Object Object; + typedef struct DataObject DataObject; typedef struct FieldObject FieldObject; typedef struct EntryObject EntryObject; typedef struct HashTableObject HashTableObject; typedef struct EntryArrayObject EntryArrayObject; +typedef struct SignatureObject SignatureObject; + typedef struct EntryItem EntryItem; typedef struct HashItem HashItem; @@ -48,6 +52,7 @@ enum { OBJECT_DATA_HASH_TABLE, OBJECT_FIELD_HASH_TABLE, OBJECT_ENTRY_ARRAY, + OBJECT_SIGNATURE, _OBJECT_TYPE_MAX }; @@ -115,6 +120,14 @@ _packed_ struct EntryArrayObject { le64_t items[]; }; +#define SIGNATURE_LENGTH 160 + +_packed_ struct SignatureObject { + ObjectHeader object; + le64_t from; + uint8_t signature[SIGNATURE_LENGTH]; +}; + union Object { ObjectHeader object; DataObject data; @@ -122,6 +135,7 @@ union Object { EntryObject entry; HashTableObject hash_table; EntryArrayObject entry_array; + SignatureObject signature; }; enum { @@ -135,6 +149,10 @@ enum { HEADER_INCOMPATIBLE_COMPRESSED = 1 }; +enum { + HEADER_COMPATIBLE_SIGNED = 1 +}; + _packed_ struct Header { uint8_t signature[8]; /* "LPKSHHRH" */ uint32_t compatible_flags; @@ -145,7 +163,7 @@ _packed_ struct Header { sd_id128_t machine_id; sd_id128_t boot_id; sd_id128_t seqnum_id; - le64_t arena_offset; + le64_t header_size; le64_t arena_size; le64_t data_hash_table_offset; /* for looking up data objects */ le64_t data_hash_table_size;